SwitchGame/source/EngineFrame/Component/Component.cpp

111 lines
1.8 KiB
C++

#include "Component.h"
#include "EngineFrame/Actor/Actor.h"
Component::Component()
{
}
Component::~Component()
{
}
void Component::Init()
{
}
void Component::HandleEvents(SDL_Event *e)
{
}
void Component::Update(float deltaTime)
{
}
void Component::Render(float deltaTime)
{
}
void Component::Clear()
{
}
void Component::SetName(std::string name)
{
m_Name = name;
}
void Component::OnAdded(Actor *actor)
{
this->Parent = actor;
}
int Component::GetRenderZOrder()
{
return this->RenderZOrder;
}
void Component::ReorderComponents()
{
if (Parent)
{
RefPtr<Component> me = this;
Parent->m_Components.Remove(me);
RefPtr<Component> sibling = Parent->m_Components.GetLast();
if (sibling && sibling->GetRenderZOrder() > RenderZOrder)
{
sibling = sibling->GetPrev();
while (sibling)
{
if (sibling->GetRenderZOrder() <= RenderZOrder)
break;
sibling = sibling->GetPrev();
}
}
if (sibling)
{
Parent->m_Components.InsertAfter(me, sibling);
}
else
{
Parent->m_Components.PushFront(me);
}
}
}
void Component::SetIterationPos(VecPos pos)
{
this->IterationPos = pos;
}
VecPos Component::GetIterationPos()
{
return this->IterationPos;
}
void Component::SetIterationScale(VecSize scale)
{
this->IterationScale = scale;
}
VecSize Component::GetIterationScale()
{
return this->IterationScale;
}
void Component::SetIterationAngle(float angle)
{
this->IterationAngle = angle;
}
float Component::GetIterationAngle()
{
return this->IterationAngle;
}
void Component::SetRenderZOrder(int zOrder)
{
if (zOrder != this->RenderZOrder)
{
this->RenderZOrder = zOrder;
ReorderComponents();
}
}