aboutsummaryrefslogtreecommitdiff
path: root/PhysX_3.4/Source/SimulationController/src/ScRigidSim.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'PhysX_3.4/Source/SimulationController/src/ScRigidSim.cpp')
-rw-r--r--PhysX_3.4/Source/SimulationController/src/ScRigidSim.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/PhysX_3.4/Source/SimulationController/src/ScRigidSim.cpp b/PhysX_3.4/Source/SimulationController/src/ScRigidSim.cpp
index dd4829bd..573f7bb1 100644
--- a/PhysX_3.4/Source/SimulationController/src/ScRigidSim.cpp
+++ b/PhysX_3.4/Source/SimulationController/src/ScRigidSim.cpp
@@ -68,12 +68,31 @@ Sc::RigidSim::~RigidSim()
scScene.getRigidIDTracker().releaseID(mRigidId);
}
+bool notifyActorInteractionsOfTransformChange(Sc::ActorSim& actor);
void Sc::RigidSim::notifyShapesOfTransformChange()
{
- for(ElementSim* e = getElements_(); e!=0; e = e->mNextInActor)
+ if(0)
{
- if(e->getElementType() == ElementType::eSHAPE)
- static_cast<Sc::ShapeSim*>(e)->onVolumeOrTransformChange(true);
+ for(ElementSim* e = getElements_(); e!=0; e = e->mNextInActor)
+ {
+ if(e->getElementType() == ElementType::eSHAPE)
+ static_cast<Sc::ShapeSim*>(e)->onVolumeOrTransformChange(true);
+ }
+ }
+ else
+ {
+ const bool isDynamic = notifyActorInteractionsOfTransformChange(*this);
+
+ ElementSim* current = getElements_();
+ while(current)
+ {
+ if(current->getElementType() == ElementType::eSHAPE)
+ {
+ ShapeSim* sim = static_cast<ShapeSim*>(current);
+ sim->markBoundsForUpdate(false, isDynamic);
+ }
+ current = current->mNextInActor;
+ }
}
}