11 else if(v[m].m_UID<uid)
34 m_PhysicsWorld->SetGravity(
b2Vec2(x,y));
43 m_Entities.push_back(
Entity());
44 return m_Entities.back().m_UID;
57 return &m_Entities[
idx];
76 m_Entities.erase(m_Entities.begin()+
idx);
151 if(m_PhysicsWorld!=
nullptr){
285 m_TextureComponents.
Render(
this);
286 m_AnimatedTextureComponents.
Render(
this);
287 m_TextComponents.
Render(
this);
288 m_LightComponents.
Render(
this);
296 printf(
"Entity %d does not have a rigidbody\n",
uid);
324 const auto &position=
body->GetPosition();
327 entity->m_X=position.x/m_ScalingFactor;
328 entity->m_Y=position.y/m_ScalingFactor;
333 delete m_PhysicsWorld;
334 m_PhysicsWorld=
nullptr;
385 for(
auto &
entity:m_Entities){
388 RENDERER->
DrawLine({
Interpolate(
entity.m_X,
entity.m_PreviousX),
Interpolate(
entity.m_Y,
entity.m_PreviousY)},{
Interpolate(
entity.m_X,
entity.m_PreviousX)+
box_collider->m_Width,
Interpolate(
entity.m_Y,
entity.m_PreviousY)},{0,1,0.75f,1},5);
389 RENDERER->
DrawLine({
Interpolate(
entity.m_X,
entity.m_PreviousX)+
box_collider->m_Width,
Interpolate(
entity.m_Y,
entity.m_PreviousY)},{
Interpolate(
entity.m_X,
entity.m_PreviousX)+
box_collider->m_Width,
Interpolate(
entity.m_Y,
entity.m_PreviousY)+
box_collider->m_Height},{0,1,0.75f,1},5);
390 RENDERER->
DrawLine({
Interpolate(
entity.m_X,
entity.m_PreviousX)+
box_collider->m_Width,
Interpolate(
entity.m_Y,
entity.m_PreviousY)+
box_collider->m_Height},{
Interpolate(
entity.m_X,
entity.m_PreviousX),
Interpolate(
entity.m_Y,
entity.m_PreviousY)+
box_collider->m_Height},{0,1,0.75f,1},5);
391 RENDERER->
DrawLine({
Interpolate(
entity.m_X,
entity.m_PreviousX),
Interpolate(
entity.m_Y,
entity.m_PreviousY)+
box_collider->m_Height},{
Interpolate(
entity.m_X,
entity.m_PreviousX),
Interpolate(
entity.m_Y,
entity.m_PreviousY)},{0,1,0.75f,1},5);
T * GetComponent(uint32_t uid)
void Render(Scene *scene)
void AddComponent(T &component, uint32_t uid)
std::vector< T > m_Components
void RemoveComponent(uint32_t uid)
void Update(Scene *scene, float frame_time)
void SetPointSize(float new_size)
void DrawCircle(Vec2 pos, Vec4 color, float border, int layer)
std::vector< std::pair< Vec2, Vec2 > > & GetSegments()
void SetLineWidth(float new_size)
void DrawLine(Vec2 pos1, Vec2 pos2, Vec4 color, int layer)
void Render(bool post_processing=false)
void OnPhysicsUpdate(double frame_time)
void MoveEntity(uint32_t uid, float x_offset, float y_offset)
T * GetComponent(uint32_t uid)
void SetEntityPosition(uint32_t uid, float x, float y)
void SetGravity(float x, float y)
void SetScalingFactor(float scaling_factor)
void RemoveEntity(uint32_t uid)
Entity * GetEntity(uint32_t uid)
void Update(double frame_time)
std::vector< Entity > & GetEntities()
float Interpolate(float current, float previous)
int BinarySearchi(std::vector< Entity > &v, uint32_t uid)
Renderer * RENDERER
The main renderer.