From 261aefba910dfd4511284c48e5e0b136a1f7f32a Mon Sep 17 00:00:00 2001 From: Joe Wreschnig Date: Sat, 24 Apr 2010 01:28:10 -0700 Subject: [PATCH] Bullet.step: Manage finished state here. Although this increases the time spent in bullet.step, all calls to that will be followed by checks of bullet.finished anyway, and a real attribute is cheaper than the callable. --- bulletml/impl.py | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/bulletml/impl.py b/bulletml/impl.py index 4785ef2..a2e8dec 100644 --- a/bulletml/impl.py +++ b/bulletml/impl.py @@ -132,6 +132,7 @@ class Bullet(object): tags - string tags set by the running actions appearance - string used to set bullet appearance radius - radius for collision + finished - true if all actions are finished and the bullet vanished Contructor Arguments: x, y, direction, speed, target, rank, tags, appearance, radius @@ -152,6 +153,7 @@ class Bullet(object): self.direction = direction self.speed = speed self.vanished = False + self.finished = False self.target = target self.rank = rank self.tags = set(tags) @@ -188,24 +190,6 @@ class Bullet(object): else: return atan2(target_x - self.x, target_y - self.y) - @property - def finished(self): - """Check if this bullet is finished running. - - A bullet is finished when it has vanished, and all its - actions have finished. - - If this is true, the bullet should be removed from the screen. - (You will probably want to cull it under other circumstances - as well). - """ - if not self.vanished: - return False - for action in self.actions: - if not action.finished: - return False - return True - def vanish(self): """Vanish this bullet and stop all actions.""" self.vanished = True @@ -235,8 +219,11 @@ class Bullet(object): """ created = [] + finished = self.vanished for action in self.actions: action.step(self, created) + finished = finished and action.finished + self.finished = finished speed = self.speed direction = self.direction -- 2.30.2