Browse Source

fix loop(restart = 0, fromFrame = x)

David Rose 17 years ago
parent
commit
0def22bd7b
1 changed files with 4 additions and 2 deletions
  1. 4 2
      panda/src/putil/animInterface.cxx

+ 4 - 2
panda/src/putil/animInterface.cxx

@@ -270,10 +270,11 @@ loop(bool restart, double from, double to) {
   _paused_f = 0.0;
   _paused_f = 0.0;
 
 
   if (!restart) {
   if (!restart) {
+    fframe = min(max(fframe, from), to);
     if (_paused) {
     if (_paused) {
       _paused_f = fframe - _start_frame;
       _paused_f = fframe - _start_frame;
     } else {
     } else {
-      _start_time -= fframe / _effective_frame_rate;
+      _start_time -= (fframe - _start_frame) / _effective_frame_rate;
     }
     }
   }
   }
 }
 }
@@ -303,10 +304,11 @@ pingpong(bool restart, double from, double to) {
   _paused_f = 0.0;
   _paused_f = 0.0;
 
 
   if (!restart) {
   if (!restart) {
+    fframe = min(max(fframe, from), to);
     if (_paused) {
     if (_paused) {
       _paused_f = fframe - _start_frame;
       _paused_f = fframe - _start_frame;
     } else {
     } else {
-      _start_time -= fframe / _effective_frame_rate;
+      _start_time -= (fframe - _start_frame) / _effective_frame_rate;
     }
     }
   }
   }
 }
 }