Incremental Engine  1.0.6
A 2D Game Engine to create Idle Games
IncrementalEngine::Transformable Class Reference

#include <Transformable.h>

Inheritance diagram for IncrementalEngine::Transformable:
IncrementalEngine::Actor IncrementalEngine::MultiPanel IncrementalEngine::Sprite IncrementalEngine::Text IncrementalEngine::Button IncrementalEngine::Panel

Public Member Functions

 Transformable ()
 
virtual void SetPosition (float x, float y)
 
virtual void SetPosition (const D3DXVECTOR2 &position)
 
virtual void SetScale (float factorX, float factorY)
 
virtual void SetScale (const D3DXVECTOR2 &factors)
 
virtual void SetOrigin (float x, float y)
 
virtual void SetOrigin (const D3DXVECTOR2 &origin)
 
virtual void SetRotation (float angle)
 
virtual const D3DXVECTOR2 & GetPosition () const
 
virtual float GetRotation () const
 
virtual const D3DXVECTOR2 & GetScale () const
 
virtual const D3DXVECTOR2 & GetOrigin () const
 
void Move (float offsetX, float offsetY)
 
void Move (const D3DXVECTOR2 &offset)
 
void Rotate (float angle)
 
void Scale (float factorX, float factorY)
 
void Scale (const D3DXVECTOR2 &factor)
 
const TransformGetTransform () const
 
const TransformGetInverseTransform () const
 

Protected Attributes

bool _transformNeedUpdate
 

Private Attributes

D3DXVECTOR2 _origin
 
D3DXVECTOR2 _position
 
D3DXVECTOR2 _scale
 
float _rotation
 
Transform _transform
 
Transform _inverseTransform
 
bool _inverseTransformNeedUpdate
 

Detailed Description

Definition at line 37 of file Transformable.h.

Constructor & Destructor Documentation

◆ Transformable()

IncrementalEngine::Transformable::Transformable ( )

Definition at line 34 of file Transformable.cpp.

34  :
35  _origin(0, 0),
36  _position(0, 0),
37  _rotation(0),
38  _scale(1, 1),
39  _transform(),
43  {
44  }

Member Function Documentation

◆ GetInverseTransform()

const Transform & IncrementalEngine::Transformable::GetInverseTransform ( ) const

Definition at line 166 of file Transformable.cpp.

167  {
169  {
172  }
173 
174  return _inverseTransform;
175  }

◆ GetOrigin()

const D3DXVECTOR2 & IncrementalEngine::Transformable::GetOrigin ( ) const
virtual

Definition at line 110 of file Transformable.cpp.

111  {
112  return _origin;
113  }

◆ GetPosition()

const D3DXVECTOR2 & IncrementalEngine::Transformable::GetPosition ( ) const
virtual

Reimplemented in IncrementalEngine::Actor.

Definition at line 95 of file Transformable.cpp.

96  {
97  return _position;
98  }

◆ GetRotation()

float IncrementalEngine::Transformable::GetRotation ( ) const
virtual

Definition at line 100 of file Transformable.cpp.

101  {
102  return _rotation;
103  }

◆ GetScale()

const D3DXVECTOR2 & IncrementalEngine::Transformable::GetScale ( ) const
virtual

Definition at line 105 of file Transformable.cpp.

106  {
107  return _scale;
108  }

◆ GetTransform()

const Transform & IncrementalEngine::Transformable::GetTransform ( ) const

Definition at line 140 of file Transformable.cpp.

141  {
143  {
144  float angle = -_rotation * 3.141592654f / 180.f;
145  float cosine = static_cast<float>(std::cos(angle));
146  float sine = static_cast<float>(std::sin(angle));
147  float sxc = _scale.x * cosine;
148  float syc = _scale.y * cosine;
149  float sxs = _scale.x * sine;
150  float sys = _scale.y * sine;
151  float tx = -_origin.x * sxc - _origin.y * sys + _position.x;
152  float ty = _origin.x * sxs - _origin.y * syc + _position.y;
153 
154  _transform = Transform(
155  sxc, sys, tx,
156  -sxs, syc, ty,
157  0.f, 0.f, 1.f
158  );
159 
160  _transformNeedUpdate = false;
161  }
162 
163  return _transform;
164  }

◆ Move() [1/2]

void IncrementalEngine::Transformable::Move ( const D3DXVECTOR2 &  offset)

Definition at line 120 of file Transformable.cpp.

121  {
122  SetPosition(_position.x + offset.x, _position.y + offset.y);
123  }

◆ Move() [2/2]

void IncrementalEngine::Transformable::Move ( float  offsetX,
float  offsetY 
)

Definition at line 115 of file Transformable.cpp.

116  {
117  SetPosition(_position.x + offsetX, _position.y + offsetY);
118  }

◆ Rotate()

void IncrementalEngine::Transformable::Rotate ( float  angle)

Definition at line 125 of file Transformable.cpp.

126  {
127  SetRotation(_rotation + angle);
128  }

◆ Scale() [1/2]

void IncrementalEngine::Transformable::Scale ( const D3DXVECTOR2 &  factor)

Definition at line 135 of file Transformable.cpp.

136  {
137  SetScale(_scale.x * factor.x, _scale.y * factor.y);
138  }

◆ Scale() [2/2]

void IncrementalEngine::Transformable::Scale ( float  factorX,
float  factorY 
)

Definition at line 130 of file Transformable.cpp.

131  {
132  SetScale(_scale.x * factorX, _scale.y * factorY);
133  }

◆ SetOrigin() [1/2]

void IncrementalEngine::Transformable::SetOrigin ( const D3DXVECTOR2 &  origin)
virtual

Definition at line 90 of file Transformable.cpp.

91  {
92  SetOrigin(origin.x, origin.y);
93  }

◆ SetOrigin() [2/2]

void IncrementalEngine::Transformable::SetOrigin ( float  x,
float  y 
)
virtual

Definition at line 82 of file Transformable.cpp.

83  {
84  _origin.x = x;
85  _origin.y = y;
86  _transformNeedUpdate = true;
88  }

◆ SetPosition() [1/2]

void IncrementalEngine::Transformable::SetPosition ( const D3DXVECTOR2 &  position)
virtual

Reimplemented in IncrementalEngine::Actor.

Definition at line 54 of file Transformable.cpp.

55  {
56  SetPosition(position.x, position.y);
57  }

◆ SetPosition() [2/2]

void IncrementalEngine::Transformable::SetPosition ( float  x,
float  y 
)
virtual

Reimplemented in IncrementalEngine::Actor.

Definition at line 46 of file Transformable.cpp.

47  {
48  _position.x = x;
49  _position.y = y;
50  _transformNeedUpdate = true;
52  }

◆ SetRotation()

void IncrementalEngine::Transformable::SetRotation ( float  angle)
virtual

Definition at line 59 of file Transformable.cpp.

60  {
61  _rotation = static_cast<float>(fmod(angle, 360));
62  if (_rotation < 0)
63  _rotation += 360.f;
64 
65  _transformNeedUpdate = true;
67  }

◆ SetScale() [1/2]

void IncrementalEngine::Transformable::SetScale ( const D3DXVECTOR2 &  factors)
virtual

Definition at line 77 of file Transformable.cpp.

78  {
79  SetScale(factors.x, factors.y);
80  }

◆ SetScale() [2/2]

void IncrementalEngine::Transformable::SetScale ( float  factorX,
float  factorY 
)
virtual

Definition at line 69 of file Transformable.cpp.

70  {
71  _scale.x = factorX;
72  _scale.y = factorY;
73  _transformNeedUpdate = true;
75  }

Member Data Documentation

◆ _inverseTransform

Transform IncrementalEngine::Transformable::_inverseTransform
mutableprivate

Definition at line 76 of file Transformable.h.

◆ _inverseTransformNeedUpdate

bool IncrementalEngine::Transformable::_inverseTransformNeedUpdate
mutableprivate

Definition at line 77 of file Transformable.h.

◆ _origin

D3DXVECTOR2 IncrementalEngine::Transformable::_origin
private

Definition at line 70 of file Transformable.h.

◆ _position

D3DXVECTOR2 IncrementalEngine::Transformable::_position
private

Definition at line 71 of file Transformable.h.

◆ _rotation

float IncrementalEngine::Transformable::_rotation
private

Definition at line 73 of file Transformable.h.

◆ _scale

D3DXVECTOR2 IncrementalEngine::Transformable::_scale
private

Definition at line 72 of file Transformable.h.

◆ _transform

Transform IncrementalEngine::Transformable::_transform
mutableprivate

Definition at line 75 of file Transformable.h.

◆ _transformNeedUpdate

bool IncrementalEngine::Transformable::_transformNeedUpdate
mutableprotected

Definition at line 67 of file Transformable.h.

IncrementalEngine::Transformable::SetOrigin
virtual void SetOrigin(float x, float y)
Definition: Transformable.cpp:82
IncrementalEngine::Transformable::_scale
D3DXVECTOR2 _scale
Definition: Transformable.h:72
IncrementalEngine::Transformable::GetTransform
const Transform & GetTransform() const
Definition: Transformable.cpp:140
IncrementalEngine::Transform::GetInverse
Transform GetInverse() const
Definition: Transform.cpp:61
IncrementalEngine::Transformable::_transform
Transform _transform
Definition: Transformable.h:75
IncrementalEngine::Transformable::_origin
D3DXVECTOR2 _origin
Definition: Transformable.h:70
IncrementalEngine::Transformable::SetPosition
virtual void SetPosition(float x, float y)
Definition: Transformable.cpp:46
IncrementalEngine::Transformable::_transformNeedUpdate
bool _transformNeedUpdate
Definition: Transformable.h:67
IncrementalEngine::Transformable::_rotation
float _rotation
Definition: Transformable.h:73
IncrementalEngine::Transformable::_position
D3DXVECTOR2 _position
Definition: Transformable.h:71
IncrementalEngine::Transformable::SetRotation
virtual void SetRotation(float angle)
Definition: Transformable.cpp:59
IncrementalEngine::Transformable::SetScale
virtual void SetScale(float factorX, float factorY)
Definition: Transformable.cpp:69
IncrementalEngine::Transformable::_inverseTransform
Transform _inverseTransform
Definition: Transformable.h:76
IncrementalEngine::Transformable::_inverseTransformNeedUpdate
bool _inverseTransformNeedUpdate
Definition: Transformable.h:77