Bir Varlığın açık bir 'türü' (örn. Oynatıcısı) yoksa ve yalnızca bir bileşenler koleksiyonuysa, sistemlerimin üzerinde çalışması gereken ve olmaması gereken varlıkları nasıl belirleyebilirim? Örneğin, bir Pong oyununda raket ve top, pencere sınırları ile çarpışır. Ancak, her biri için çarpışma kontrol sistemleri farklı olacaktır, bu nedenle bir sistem yanlış tipteki varlıkları işlememelidir.
void PlayerCollisionSystem::update(std::vector<Entity *> entities) {
typedef std::vector<Entity *>::iterator EIter;
for (EIter i = entities.begin(); i != entities.end(); ++i) {
Entity *player = *i; // How do I verify that the entity is a player?
// Get relevant components.
PositionComponent *position = player->getComponent<PositionComponent>();
VelocityComponent *velocity = player->getComponent<VelocityComponent>();
SpriteComponent *sprite = player->getComponent<SpriteComponent>();
// Detect and handle player collisions using the components.
}
}
Hem oyuncu hem de top, çarpışma kontrolü için aynı ilgili bileşen türlerini paylaşır, ancak sistem uygulamaları farklı olacaktır.
Tüm oyun varlıklarının kapsayıcısı varsa, devralmadan Entity
veya üye değişkeni dahil etmeden belirli varlık türlerini nasıl belirleyebilirimstd::string type
;