#include "RenderBase.h"
#include "EngineFrame/Actor/Actor.h"

RenderBase::RenderBase()
{
}

RenderBase::~RenderBase()
{
}

void RenderBase::CalcRenderInfo()
{
    this->CalcRenderInfoFlag = true;
}

void RenderBase::Init()
{
    Component::Init();
    // 标记该组件需要渲染和更新
    addTag(Tag::RENDER);
    addTag(Tag::UPDATE);
    addTag(Tag::TRANSFORM);
    // 计算渲染信息
    CalcRenderInfo();
}

void RenderBase::Update(float deltaTime)
{
    if (!Visible)
        return;
    Component::Update(deltaTime);
    
}

void RenderBase::Render()
{
    if (!Visible)
        return;
    Component::Render();
}

void RenderBase::SetIterationPos(Vec2 pos)
{
    Component::SetIterationPos(pos);
    CalcRenderInfo(); // 更新渲染信息
}

void RenderBase::SetIterationScale(Vec2 scale)
{
    Component::SetIterationScale(scale);
    CalcRenderInfo(); // 更新渲染信息
}

void RenderBase::SetIterationRotation(float angle)
{
    if (!Visible)
        return;
    Component::SetIterationRotation(angle);
    CalcRenderInfo(); // 更新渲染信息
}

void RenderBase::SetPos(Vec2 pos)
{
    Component::SetPos(pos);

    CalcRenderInfo(); // 更新渲染信息
}

void RenderBase::SetScale(Vec2 scale)
{
    Component::SetScale(scale);
    CalcRenderInfo(); // 更新渲染信息
}

void RenderBase::SetRotation(float angle)
{
    Component::SetRotation(angle);
    CalcRenderInfo(); // 更新渲染信息
}

void RenderBase::SetAnchor(Vec2 anchor)
{
    Component::SetAnchor(anchor);
    CalcRenderInfo(); // 更新渲染信息
}
