#pragma once
#include
#include
#include
#include "CSprite.h"
namespace DarkStorm2D
{
class DLLDARKSTORM2D IActor
{
protected:
b2Body* m_Body;
GraphicsCore::CSprite* m_Sprite;
unsigned int ID;
enum ActorFlags
{
Alive,
Destroy,
Visible,
ActorFlagsCount
};
std::bitset
public:
IActor()
{
m_Body = 0;
m_Sprite = 0;
m_Flags.reset();
}
~IActor()
{
m_Body = 0;
m_Sprite = 0;
m_Flags.reset();
}
void Render(float ScaleFactory)
{
if ( m_Flags[Alive]&& !m_Flags[Destroy])
{
float rot = m_Body->GetAngle();
b2Vec2 pos = m_Body->GetPosition();
//if (rot)
//m_Sprite->Render(pos.x/ScaleFactory-(float)m_Sprite->GetWidth()/2.0f, pos.y/ScaleFactory-(float)m_Sprite->GetHeight()/2.0f);
//else
m_Sprite->Render(pos.x/ScaleFactory-(float)m_Sprite->GetWidth()/2.0f, pos.y/ScaleFactory-(float)m_Sprite->GetHeight()/2.0f);
}
}
GraphicsCore::CSprite* GetSprite()
{
return m_Sprite;
}
bool IsAlive()
{
return m_Flags[Alive];
}
bool IsDestroy()
{
return m_Flags[Destroy];
}
bool IsVisible()
{
return m_Flags[Visible];
}
};
};
Na razie nie jest aż tak funkcjonalna ale to się zmieni. Dzięki niej można wyrenderować świat Boxa za pomocą jednej komend(klasy CWorld - Render() // iteruje ona przez wszystkie body i renderuje ich aktorów). To na razie tyle o aktorach.
Fajne rozwiązanie z tą komendą. W tworzeniu gier bardzo się przydaje coś takiego, bo w procesie tworzenia nie ma czasu na zabawę ( jeśli gra ma mały budżet ) ;)
OdpowiedzUsuńDla poprawy czytelności kodu przeniósł bym deklaracje funkcji i konstruktorów do innego pliku a tu zostawił tylko ciało klasy