浏览代码

remove ctrav.resetPrevTransform(); make respect-prev-transform affect visualization of prev transform also

David Rose 19 年之前
父节点
当前提交
825cbc04bc
共有 3 个文件被更改,包括 21 次插入31 次删除
  1. 21 19
      panda/src/collide/collisionNode.cxx
  2. 0 11
      panda/src/collide/collisionTraverser.cxx
  3. 0 1
      panda/src/collide/collisionTraverser.h

+ 21 - 19
panda/src/collide/collisionNode.cxx

@@ -229,25 +229,27 @@ cull_callback(CullTraverser *trav, CullTraverserData &data) {
     }
     }
   }
   }
 
 
-  // Determine the previous frame's position, relative to the
-  // current position.
-  NodePath node_path = data._node_path.get_node_path();
-  CPT(TransformState) transform = node_path.get_net_transform()->invert_compose(node_path.get_net_prev_transform());
-  
-  if (!transform->is_identity()) {
-    // If we have a velocity, also draw the previous frame's position,
-    // ghosted.
-
-    for (si = _solids.begin(); si != _solids.end(); ++si) {
-      CollisionSolid *solid = (*si);
-      PT(PandaNode) node = solid->get_viz(trav, data, false);
-      if (node != (PandaNode *)NULL) {
-        CullTraverserData next_data(data, node);
-
-        next_data._net_transform = 
-          next_data._net_transform->compose(transform);
-        next_data._state = get_last_pos_state();
-        trav->traverse(next_data);
+  if (respect_prev_transform) {
+    // Determine the previous frame's position, relative to the
+    // current position.
+    NodePath node_path = data._node_path.get_node_path();
+    CPT(TransformState) transform = node_path.get_net_transform()->invert_compose(node_path.get_net_prev_transform());
+    
+    if (!transform->is_identity()) {
+      // If we have a velocity, also draw the previous frame's position,
+      // ghosted.
+      
+      for (si = _solids.begin(); si != _solids.end(); ++si) {
+        CollisionSolid *solid = (*si);
+        PT(PandaNode) node = solid->get_viz(trav, data, false);
+        if (node != (PandaNode *)NULL) {
+          CullTraverserData next_data(data, node);
+          
+          next_data._net_transform = 
+            next_data._net_transform->compose(transform);
+          next_data._state = get_last_pos_state();
+          trav->traverse(next_data);
+        }
       }
       }
     }
     }
   }
   }

+ 0 - 11
panda/src/collide/collisionTraverser.cxx

@@ -309,17 +309,6 @@ traverse(const NodePath &root) {
   CollisionPlane::flush_level();
   CollisionPlane::flush_level();
 }
 }
 
 
-////////////////////////////////////////////////////////////////////
-//     Function: CollisionTraverser::reset_prev_transform
-//       Access: Published
-//  Description: This method is deprecated.  Just call
-//               PandaNode::reset_all_prev_transform() now.
-////////////////////////////////////////////////////////////////////
-void CollisionTraverser::
-reset_prev_transform(const NodePath &) {
-  PandaNode::reset_all_prev_transform();
-}
-
 #ifdef DO_COLLISION_RECORDING
 #ifdef DO_COLLISION_RECORDING
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: CollisionTraverser::set_recorder
 //     Function: CollisionTraverser::set_recorder

+ 0 - 1
panda/src/collide/collisionTraverser.h

@@ -66,7 +66,6 @@ PUBLISHED:
   void clear_colliders();
   void clear_colliders();
 
 
   void traverse(const NodePath &root);
   void traverse(const NodePath &root);
-  void reset_prev_transform(const NodePath &root);
 
 
 #ifdef DO_COLLISION_RECORDING
 #ifdef DO_COLLISION_RECORDING
   void set_recorder(CollisionRecorder *recorder);
   void set_recorder(CollisionRecorder *recorder);