Mam stworzony EntityComponentSystem i powiedzmy mam dwa komponenty:
Podstawa class C_Body;
I komponenty class C_WalkingBody; oraz C_FlyingBody;
Do entity przypisujemy w przypadku tych komponentów jeden z nich.
Potem mam fragment kodu:
C_Position* position = entities->GetComponent<C_Position>(entity, Component::Position);
C_Drawable* drawable = nullptr;
C_Body* body = nullptr;
if (entities->HasComponent(entity, Component::SpriteSheet)){
drawable = entities->GetComponent<C_Drawable>(entity, Component::SpriteSheet);
} else { continue; }
if(entities->HasComponent(entity, Component::WalkingBody)){
body = entities->GetComponent<C_WalkingBody>(entity, Component::WalkingBody);
position->SetPosition(body->GetPosition());
}
drawable->UpdatePosition(position->GetPosition());
Nie podoba mi się fragment
if(entities->HasComponent(entity, Component::WalkingBody)){
body = entities->GetComponent<C_WalkingBody>(entity, Component::WalkingBody);
position->SetPosition(body->GetPosition());
}
Powiedzmy że będę miał nagle 10 komponentów różnego typu body i musiałbym we wszystkich miejscach programu dodawać te ify do każdego rodzaju komponentu; Czy jest jakiś sposób by to skrócić? Na początku wpadłem na pomysł żeby w klasie C_Body stworzyć zmienną C_Body* m_bodyType; i w każdym komponencie robić m_bodyType = this; ale nie mam dostępu do tego wskaźnika przecież co możecie zauważyć we fragmencie kodu który pokazałem.