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

This commit is contained in:
David Rose 2006-10-19 18:07:37 +00:00
parent 8750d233f8
commit 825cbc04bc
3 changed files with 21 additions and 31 deletions

View File

@ -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);
}
}
}
}

View File

@ -309,17 +309,6 @@ traverse(const NodePath &root) {
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
////////////////////////////////////////////////////////////////////
// Function: CollisionTraverser::set_recorder

View File

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