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

#include <Actor.h>

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

Public Member Functions

virtual ~Actor ()
 
virtual void Init ()
 
virtual void Update (float dt)
 
virtual HRESULT Draw (ID3D11DeviceContext *deviceContext) override
 
void UpdateRecursive (float dt)
 
HRESULT DrawRecursive (ID3D11DeviceContext *deviceContext)
 
virtual FloatRect GetLocalBounds ()
 
FloatRect GetGlobalBounds ()
 
void Center ()
 
const Transform GetWorldTransform ()
 
const D3DXVECTOR2 GetWorldPosition ()
 
const D3DXVECTOR2 GetWorldScale ()
 
const float GetWorldRotation ()
 
void SetWorldPosition (D3DXVECTOR2 value)
 
virtual void SetPosition (float x, float y) override
 
virtual void SetPosition (const D3DXVECTOR2 &position) override
 
virtual const D3DXVECTOR2 & GetPosition () const override
 
ActorGetParent () const
 
virtual void SetParent (Actor *value, const bool fixWorldPosition=true)
 
void SetActive (bool active)
 
bool IsActive ()
 
- Public Member Functions inherited from IncrementalEngine::Transformable
 Transformable ()
 
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 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
 

Private Attributes

Actor_parent
 
vector< Actor * > _children
 
bool _active
 

Additional Inherited Members

- Protected Member Functions inherited from IncrementalEngine::Drawable
void CopyParameters (Drawable *drawable)
 
- Protected Attributes inherited from IncrementalEngine::Transformable
bool _transformNeedUpdate
 
- Protected Attributes inherited from IncrementalEngine::Drawable
RenderWindow_renderWindow
 
ShaderManager_shaderManager
 
ID3D11Device * _device
 

Detailed Description

Definition at line 12 of file Actor.h.

Constructor & Destructor Documentation

◆ ~Actor()

IncrementalEngine::Actor::~Actor ( )
virtual

Definition at line 6 of file Actor.cpp.

7  {
8  vector<Actor*> children = _children;
9  for (int i = 0; i < children.size(); i++)
10  {
11  children[i]->SetParent(nullptr);
12  }
13  _children.clear();
14  }

Member Function Documentation

◆ Center()

void IncrementalEngine::Actor::Center ( )

Definition at line 77 of file Actor.cpp.

78  {
79  auto origin = D3DXVECTOR2(GetLocalBounds().width() * .5f, GetLocalBounds().height() * .5f);
80  SetOrigin(origin);
81  }

◆ Draw()

HRESULT IncrementalEngine::Actor::Draw ( ID3D11DeviceContext *  deviceContext)
overridevirtual

Implements IncrementalEngine::Drawable.

Reimplemented in IncrementalEngine::Text, and IncrementalEngine::Sprite.

Definition at line 72 of file Actor.cpp.

73  {
74  return S_OK;
75  }

◆ DrawRecursive()

HRESULT IncrementalEngine::Actor::DrawRecursive ( ID3D11DeviceContext *  deviceContext)

Definition at line 46 of file Actor.cpp.

47  {
48  HRESULT result;
49 
50  if (!_active) return S_OK;
51 
52  result = Draw(deviceContext);
53 
54  if (FAILED(result))
55  {
56  return CO_E_ERRORINAPP;
57  }
58 
59  for (int i = 0; i < _children.size(); i++)
60  {
61  result = _children[i]->DrawRecursive(deviceContext);
62 
63  if (FAILED(result))
64  {
65  return CO_E_ERRORINAPP;
66  }
67  }
68 
69  return S_OK;
70  }

◆ GetGlobalBounds()

FloatRect IncrementalEngine::Actor::GetGlobalBounds ( )

Definition at line 88 of file Actor.cpp.

89  {
91  }

◆ GetLocalBounds()

FloatRect IncrementalEngine::Actor::GetLocalBounds ( )
virtual

Reimplemented in IncrementalEngine::Text, and IncrementalEngine::Sprite.

Definition at line 83 of file Actor.cpp.

84  {
85  return FloatRect();
86  }

◆ GetParent()

Actor * IncrementalEngine::Actor::GetParent ( ) const

Definition at line 196 of file Actor.cpp.

197  {
198  return _parent;
199  }

◆ GetPosition()

const D3DXVECTOR2 & IncrementalEngine::Actor::GetPosition ( ) const
overridevirtual

Reimplemented from IncrementalEngine::Transformable.

Definition at line 182 of file Actor.cpp.

183  {
184  D3DXVECTOR2 position = Transformable::GetPosition();
185 
186  if (_parent != nullptr)
187  {
188  D3DXVECTOR2 origin = _parent->GetOrigin();
189  position.x -= origin.x;
190  position.y -= origin.y;
191  }
192 
193  return position;
194  }

◆ GetWorldPosition()

const D3DXVECTOR2 IncrementalEngine::Actor::GetWorldPosition ( )

Definition at line 103 of file Actor.cpp.

104  {
105  if (_parent != nullptr)
106  {
107  auto position = GetPosition();
108  return _parent->GetWorldPosition() + position;
109  }
110 
111  return GetPosition();
112  }

◆ GetWorldRotation()

const float IncrementalEngine::Actor::GetWorldRotation ( )

Definition at line 131 of file Actor.cpp.

132  {
133  if (_parent != nullptr)
134  {
135  float worldRotation = _parent->GetWorldRotation() + GetRotation();
136  worldRotation = static_cast<float>(fmod(worldRotation, 360));
137 
138  if (worldRotation < 0)
139  {
140  worldRotation += 360.f;
141  }
142 
143  return worldRotation;
144  }
145 
146  return GetRotation();
147  }

◆ GetWorldScale()

const D3DXVECTOR2 IncrementalEngine::Actor::GetWorldScale ( )

Definition at line 114 of file Actor.cpp.

115  {
116  if (_parent != nullptr)
117  {
118  D3DXVECTOR2 scale = GetScale();
119  D3DXVECTOR2 parentWorldScale = _parent->GetWorldScale();
120  D3DXVECTOR2 worldScale = {
121  parentWorldScale.x * scale.x,
122  parentWorldScale.y * scale.y
123  };
124 
125  return worldScale;
126  }
127 
128  return GetScale();
129  }

◆ GetWorldTransform()

const Transform IncrementalEngine::Actor::GetWorldTransform ( )

Definition at line 93 of file Actor.cpp.

94  {
95  if (_parent != nullptr)
96  {
98  }
99 
100  return GetTransform();
101  }

◆ Init()

void IncrementalEngine::Actor::Init ( )
virtual

Reimplemented in IncrementalEngine::Text.

Definition at line 16 of file Actor.cpp.

17  {
18  }

◆ IsActive()

bool IncrementalEngine::Actor::IsActive ( )

Definition at line 29 of file Actor.cpp.

30  {
31  return _active;
32  }

◆ SetActive()

void IncrementalEngine::Actor::SetActive ( bool  active)

Definition at line 24 of file Actor.cpp.

25  {
26  _active = active;
27  }

◆ SetParent()

void IncrementalEngine::Actor::SetParent ( Actor value,
const bool  fixWorldPosition = true 
)
virtual

Definition at line 201 of file Actor.cpp.

202  {
203  if (value != _parent)
204  {
205  auto prevWorldPosition = GetWorldTransform() * GetOrigin();
206 
207  if (_parent != nullptr)
208  {
209  (*_parent)._children.erase(
210  remove(
211  (*_parent)._children.begin(),
212  (*_parent)._children.end(),
213  value
214  ),
215  (*_parent)._children.end()
216  );
217  }
218 
219  if (value != nullptr)
220  {
221  (*value)._children.push_back(this);
222  }
223 
224  _parent = value;
225 
226  if (fixWorldPosition)
227  {
228  SetWorldPosition(prevWorldPosition);
229  }
230  }
231  }

◆ SetPosition() [1/2]

void IncrementalEngine::Actor::SetPosition ( const D3DXVECTOR2 &  position)
overridevirtual

Reimplemented from IncrementalEngine::Transformable.

Definition at line 177 of file Actor.cpp.

178  {
179  Transformable::SetPosition(position);
180  }

◆ SetPosition() [2/2]

void IncrementalEngine::Actor::SetPosition ( float  x,
float  y 
)
overridevirtual

Reimplemented from IncrementalEngine::Transformable.

Definition at line 165 of file Actor.cpp.

166  {
167  if (_parent != nullptr)
168  {
169  D3DXVECTOR2 origin = _parent->GetOrigin();
170  x += origin.x;
171  y += origin.y;
172  }
173 
175  }

◆ SetWorldPosition()

void IncrementalEngine::Actor::SetWorldPosition ( D3DXVECTOR2  value)

Definition at line 149 of file Actor.cpp.

150  {
151  D3DXVECTOR2 newPosition;
152 
153  if (_parent != nullptr)
154  {
155  newPosition = _parent->GetWorldTransform().GetInverse().TransformPoint(value);
156  }
157  else
158  {
159  newPosition = value;
160  }
161 
162  Transformable::SetPosition(newPosition);
163  }

◆ Update()

void IncrementalEngine::Actor::Update ( float  dt)
virtual

◆ UpdateRecursive()

void IncrementalEngine::Actor::UpdateRecursive ( float  dt)

Definition at line 34 of file Actor.cpp.

35  {
36  if (!_active) return;
37 
38  Update(dt);
39 
40  for (int i = 0; i < _children.size(); i++)
41  {
42  _children[i]->UpdateRecursive(dt);
43  }
44  }

Member Data Documentation

◆ _active

bool IncrementalEngine::Actor::_active
private

Definition at line 49 of file Actor.h.

◆ _children

vector<Actor*> IncrementalEngine::Actor::_children
private

Definition at line 48 of file Actor.h.

◆ _parent

Actor* IncrementalEngine::Actor::_parent
private

Definition at line 47 of file Actor.h.

IncrementalEngine::Actor::GetWorldPosition
const D3DXVECTOR2 GetWorldPosition()
Definition: Actor.cpp:103
IncrementalEngine::Actor::Update
virtual void Update(float dt)
Definition: Actor.cpp:20
IncrementalEngine::Actor::_parent
Actor * _parent
Definition: Actor.h:47
IncrementalEngine::Actor::_children
vector< Actor * > _children
Definition: Actor.h:48
IncrementalEngine::Transformable::SetOrigin
virtual void SetOrigin(float x, float y)
Definition: Transformable.cpp:82
IncrementalEngine::Transformable::GetTransform
const Transform & GetTransform() const
Definition: Transformable.cpp:140
IncrementalEngine::Actor::GetPosition
virtual const D3DXVECTOR2 & GetPosition() const override
Definition: Actor.cpp:182
IncrementalEngine::Actor::GetWorldTransform
const Transform GetWorldTransform()
Definition: Actor.cpp:93
IncrementalEngine::Transform::GetInverse
Transform GetInverse() const
Definition: Transform.cpp:61
IncrementalEngine::Transformable::GetOrigin
virtual const D3DXVECTOR2 & GetOrigin() const
Definition: Transformable.cpp:110
IncrementalEngine::Transformable::GetPosition
virtual const D3DXVECTOR2 & GetPosition() const
Definition: Transformable.cpp:95
IncrementalEngine::Transformable::GetRotation
virtual float GetRotation() const
Definition: Transformable.cpp:100
IncrementalEngine::Actor::GetLocalBounds
virtual FloatRect GetLocalBounds()
Definition: Actor.cpp:83
IncrementalEngine::Transform::TransformRect
FloatRect TransformRect(const FloatRect &rectangle) const
Definition: Transform.cpp:99
IncrementalEngine::Transformable::SetPosition
virtual void SetPosition(float x, float y)
Definition: Transformable.cpp:46
IncrementalEngine::Transformable::GetScale
virtual const D3DXVECTOR2 & GetScale() const
Definition: Transformable.cpp:105
IncrementalEngine::Transform::TransformPoint
D3DXVECTOR2 TransformPoint(float x, float y) const
Definition: Transform.cpp:86
IncrementalEngine::Actor::GetWorldRotation
const float GetWorldRotation()
Definition: Actor.cpp:131
IncrementalEngine::Actor::SetWorldPosition
void SetWorldPosition(D3DXVECTOR2 value)
Definition: Actor.cpp:149
IncrementalEngine::Actor::_active
bool _active
Definition: Actor.h:49
IncrementalEngine::Actor::Draw
virtual HRESULT Draw(ID3D11DeviceContext *deviceContext) override
Definition: Actor.cpp:72
IncrementalEngine::Actor::GetWorldScale
const D3DXVECTOR2 GetWorldScale()
Definition: Actor.cpp:114