Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2013-10-13 18:26:33 +0000
committerStijn Buys <ingar@osirion.org>2013-10-13 18:26:33 +0000
commitadc3d4dbff2361da2ba9a8e0e0207546d474e29a (patch)
tree9598ee656b9cf23055416e2ad6a0651650ee1b3f /src/core
parentd6503ad4863c85642de046697ce28af10dbb5c0d (diff)
Added method to find an entity in the registry by pointer.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/entity.cc16
-rw-r--r--src/core/entity.h3
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);