From d3be07a17cecc0def06a508f861912f4f9d96780 Mon Sep 17 00:00:00 2001 From: aignacio_sf <> Date: Sat, 29 Apr 2006 04:25:50 +0000 Subject: [PATCH] Add exception handling to len ( ) calls to prevent random bug. --- direct/src/motiontrail/MotionTrail.py | 52 +++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/direct/src/motiontrail/MotionTrail.py b/direct/src/motiontrail/MotionTrail.py index e2a48c7452..110ff28181 100644 --- a/direct/src/motiontrail/MotionTrail.py +++ b/direct/src/motiontrail/MotionTrail.py @@ -56,6 +56,8 @@ class MotionTrail(NodePath): self.previous_matrix = None self.calculate_relative_matrix = False + self.playing = False; + # default options self.continuous_motion_trail = True self.color_scale = 1.0 @@ -110,7 +112,14 @@ class MotionTrail(NodePath): current_time = task.time index = 0 - total_motion_trails = len (MotionTrail.motion_trail_list) + + try: + total_motion_trails = len (MotionTrail.motion_trail_list) + except: + print "ERROR: len ( ) exception 1" + total_motion_trails = 0 + MotionTrail.motion_trail_list = [ ] + while (index < total_motion_trails): motion_trail = MotionTrail.motion_trail_list [index] if (motion_trail.active and motion_trail.check_for_update (current_time)): @@ -213,10 +222,22 @@ class MotionTrail(NodePath): def add_vertex (self, vertex_id, vertex_function, context): motion_trail_vertex = MotionTrailVertex (vertex_id, vertex_function, context) - total_vertices = len (self.vertex_list) + try: + total_vertices = len (self.vertex_list) + except: + print "ERROR: len ( ) exception 2" + total_vertices = 0 + self.vertex_list = [ ] + self.vertex_list [total_vertices : total_vertices] = [motion_trail_vertex] - self.total_vertices = len (self.vertex_list) + try: + self.total_vertices = len (self.vertex_list) + except: + print "ERROR: len ( ) exception 3" + self.total_vertices = 0 + self.vertex_list = [ ] + return motion_trail_vertex def set_vertex_color (self, vertex_id, start_color, end_color): @@ -237,7 +258,13 @@ class MotionTrail(NodePath): def update_vertices (self): - total_vertices = len (self.vertex_list) + try: + total_vertices = len (self.vertex_list) + except: + print "ERROR: len ( ) exception 4" + total_vertices = 0 + self.vertex_list = [ ] + self.total_vertices = total_vertices if (total_vertices >= 2): vertex_index = 0 @@ -370,8 +397,14 @@ class MotionTrail(NodePath): """ index = 0 - last_frame_index = len (self.frame_list) - 1 + try: + last_frame_index = len (self.frame_list) - 1 + except: + print "ERROR: len ( ) exception 5" + last_frame_index = -1 + self.frame_list = [ ] + while (index <= last_frame_index): motion_trail_frame = self.frame_list [last_frame_index - index] if (motion_trail_frame.time >= minimum_time): @@ -386,7 +419,12 @@ class MotionTrail(NodePath): self.frame_list = [motion_trail_frame] + self.frame_list # convert frames and vertices to geometry - total_frames = len (self.frame_list) + try: + total_frames = len (self.frame_list) + except: + print "ERROR: len ( ) exception 6" + total_frames = 0 + self.frame_list = [ ] """ print "total_frames", total_frames @@ -557,6 +595,7 @@ class MotionTrail(NodePath): if (self.continuous_motion_trail == False): self.reset_motion_trail ( ) self.active = True; + self.playing = True; return def end_motion_trail (self): @@ -564,6 +603,7 @@ class MotionTrail(NodePath): self.active = False self.reset_motion_trail ( ) self.reset_motion_trail_geometry ( ) + self.playing = False; return def set_fade (self, time, current_time):