Browse Source

update entType2ids on entity insert/remove

Darren Ranalli 22 years ago
parent
commit
6b4309afc3
1 changed files with 8 additions and 3 deletions
  1. 8 3
      direct/src/level/Level.py

+ 8 - 3
direct/src/level/Level.py

@@ -66,7 +66,7 @@ class Level:
         # get an entity creator object
         # get an entity creator object
         self.entityCreator = self.createEntityCreator()
         self.entityCreator = self.createEntityCreator()
         # create all the entities
         # create all the entities
-        # TODO: we should leave this to a subclass or the level user
+        # TODO: maybe we should leave this to a subclass or the level user
         self.createAllEntities(priorityTypes=['levelMgr','zone'])
         self.createAllEntities(priorityTypes=['levelMgr','zone'])
 
 
         self.initialized = 1
         self.initialized = 1
@@ -123,8 +123,8 @@ class Level:
                 entity.destroy()
                 entity.destroy()
                 assert not entId in self.entities
                 assert not entId in self.entities
             else:
             else:
-                Level.notify.warning('trying to destroy entity %s, but '
-                                     'it is already gone' % entId)
+                Level.notify.error('trying to destroy entity %s, but '
+                                   'it is already gone' % entId)
 
 
     def createAllEntitiesOfType(self, entType):
     def createAllEntitiesOfType(self, entType):
         """creates all entities of a given type"""
         """creates all entities of a given type"""
@@ -292,6 +292,9 @@ class Level:
             pass
             pass
 
 
         def handleEntityInsert(self, entId):
         def handleEntityInsert(self, entId):
+            # update our local type->entId table
+            self.entType2ids.setdefault(self.getEntityType(entId), [])
+            self.entType2ids[self.getEntityType(entId)].append(entId)
             self.createEntity(entId)
             self.createEntity(entId)
             messenger.send(self.getInsertEntityEventName(), [entId])
             messenger.send(self.getInsertEntityEventName(), [entId])
 
 
@@ -302,3 +305,5 @@ class Level:
             if entId in self.createdEntIds:
             if entId in self.createdEntIds:
                 entity = self.getEntity(entId)
                 entity = self.getEntity(entId)
                 entity.destroy()
                 entity.destroy()
+            # update our local type->entId table
+            self.entType2ids[self.getEntityType(entId)].remove(entId)