diff --git a/panda/src/collide/collisionLevelState.cxx b/panda/src/collide/collisionLevelState.cxx index fcdef13866..1520a56729 100644 --- a/panda/src/collide/collisionLevelState.cxx +++ b/panda/src/collide/collisionLevelState.cxx @@ -56,7 +56,7 @@ reserve(int num_colliders) { // in the current level state. //////////////////////////////////////////////////////////////////// void CollisionLevelState:: -prepare_collider(const ColliderDef &def) { +prepare_collider(const ColliderDef &def, const NodePath &root) { int index = (int)_colliders.size(); nassertv(index < get_max_colliders()); _colliders.push_back(def); @@ -88,7 +88,8 @@ prepare_collider(const ColliderDef &def) { } */ - gbv->xform(def._node_path.get_net_transform()->get_mat()); + CPT(TransformState) rel_transform = def._node_path.get_transform(root); + gbv->xform(rel_transform->get_mat()); _local_bounds.push_back(gbv); } diff --git a/panda/src/collide/collisionLevelState.h b/panda/src/collide/collisionLevelState.h index d775e64da1..c08d9522ed 100644 --- a/panda/src/collide/collisionLevelState.h +++ b/panda/src/collide/collisionLevelState.h @@ -56,7 +56,7 @@ public: void clear(); void reserve(int num_colliders); - void prepare_collider(const ColliderDef &def); + void prepare_collider(const ColliderDef &def, const NodePath &root); INLINE static int get_max_colliders(); diff --git a/panda/src/collide/collisionTraverser.cxx b/panda/src/collide/collisionTraverser.cxx index e88e5996ef..1a7234c7bb 100644 --- a/panda/src/collide/collisionTraverser.cxx +++ b/panda/src/collide/collisionTraverser.cxx @@ -504,7 +504,7 @@ prepare_colliders(CollisionTraverser::LevelStates &level_states, for (int s = 0; s < num_solids; ++s) { CollisionSolid *collider = cnode->get_solid(s); def._collider = collider; - level_state.prepare_collider(def); + level_state.prepare_collider(def, root); if (level_state.get_num_colliders() == max_colliders) { // That's the limit. Save off this level state and make a