def _processRemoving(self): while len(self.entityDelQueue): e = self.entityDelQueue.pop(0) if e in self.groups['all']: self.groups['all'].remove(e) else: # print "was told to delete entity but it was not in the 'all' group: " + repr(e) # DEBUG continue if Entities.isEntityKind_updating(e): self.groups['updating'].remove(e) if Entities.isEntityKind_physics(e): self.space.remove(e.shapes) for shape in e.shapes: del self.spaceView.shapeToEntity[shape] if e.body is not self.space.static_body: self.space.remove(e.body) if Entities.isEntityKind_visible(e): # self.drawLayers[e.drawLayer].remove(e) if hasattr(e, 'draw'): self.drawCalls[e.drawLayer].remove(e.draw) if hasattr(e, 'sprite'): e.sprite.delete() # for vertexList in e.vertexLists: # vertexList.delete() if isinstance(e, Blob): del self.blobs[e.id]
def _processAdding(self): while len(self.entityAddQueue): e = self.entityAddQueue.pop(0) self.groups["all"].add(e) if Entities.isEntityKind_updating(e): self.groups['updating'].add(e) if Entities.isEntityKind_physics(e): self.space.add(e.shapes) for shape in e.shapes: self.spaceView.shapeToEntity[shape] = e if e.body is not self.space.static_body: self.space.add(e.body) if Entities.isEntityKind_visible(e): if hasattr(e, 'initGraphics'): e.initGraphics(self.drawLayers[e.drawLayer]) if hasattr(e, 'draw'): self.drawCalls[e.drawLayer].append(e.draw) if isinstance(e, Blob): self.highestBlobId += 1 e.controller = e.controller(e, self.blobs, self.spaceView) # initialize the controller e.id = self.highestBlobId self.blobs[e.id] = e