diff options
author | Stijn Buys <ingar@osirion.org> | 2013-10-13 18:26:33 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2013-10-13 18:26:33 +0000 |
commit | adc3d4dbff2361da2ba9a8e0e0207546d474e29a (patch) | |
tree | 9598ee656b9cf23055416e2ad6a0651650ee1b3f | |
parent | d6503ad4863c85642de046697ce28af10dbb5c0d (diff) |
Added method to find an entity in the registry by pointer.
-rw-r--r-- | src/core/entity.cc | 16 | ||||
-rw-r--r-- | src/core/entity.h | 3 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/core/entity.cc b/src/core/entity.cc index 8ea0db5..63fa4e8 100644 --- a/src/core/entity.cc +++ b/src/core/entity.cc @@ -62,12 +62,24 @@ void Entity::add(Entity *ent, unsigned int id) Entity *Entity::find(unsigned int id) { Registry::iterator it = entity_registry.find(id); - if (it == entity_registry.end()) + if (it == entity_registry.end()) { return 0; - else + } else { return (*it).second; + } +} + +Entity *Entity::find(Entity * entity) +{ + for (Registry::iterator it = entity_registry.begin(); it != entity_registry.end(); ++it) { + if ((*it).second == entity) { + return entity; + } + } + return 0; } + void Entity::erase(unsigned int id) { Registry::iterator it = entity_registry.find(id); diff --git a/src/core/entity.h b/src/core/entity.h index 90f350e..140f6ca 100644 --- a/src/core/entity.h +++ b/src/core/entity.h @@ -471,6 +471,9 @@ public: /// find an entity in the registry static Entity *find(unsigned int id); + + /// find an entity in the registry + static Entity *find(Entity * entity); /// add an entity to the registry static void add(Entity *ent, unsigned int it); |