aboutsummaryrefslogtreecommitdiff
path: root/PhysX_3.4/Source/PhysXExtensions/src/ExtDistanceJoint.cpp
diff options
context:
space:
mode:
authorSheikh Dawood Abdul Ajees <[email protected]>2017-11-20 11:35:52 -0600
committerSheikh Dawood Abdul Ajees <[email protected]>2017-11-20 11:35:52 -0600
commit3cc1861221d761b7f0301b9b61de4e1aa18c09f4 (patch)
treea51eb808016e1710a4bbd537000a493250602944 /PhysX_3.4/Source/PhysXExtensions/src/ExtDistanceJoint.cpp
parentPhysX 3.4.1, APEX 1.4.1 Release @22845541 (diff)
downloadphysx-3.4-3cc1861221d761b7f0301b9b61de4e1aa18c09f4.tar.xz
physx-3.4-3cc1861221d761b7f0301b9b61de4e1aa18c09f4.zip
PhysX 3.4.1, APEX 1.4.1 Release @23131702
Diffstat (limited to 'PhysX_3.4/Source/PhysXExtensions/src/ExtDistanceJoint.cpp')
-rw-r--r--PhysX_3.4/Source/PhysXExtensions/src/ExtDistanceJoint.cpp33
1 files changed, 28 insertions, 5 deletions
diff --git a/PhysX_3.4/Source/PhysXExtensions/src/ExtDistanceJoint.cpp b/PhysX_3.4/Source/PhysXExtensions/src/ExtDistanceJoint.cpp
index c1dde681..9168d893 100644
--- a/PhysX_3.4/Source/PhysXExtensions/src/ExtDistanceJoint.cpp
+++ b/PhysX_3.4/Source/PhysXExtensions/src/ExtDistanceJoint.cpp
@@ -148,12 +148,35 @@ void DistanceJoint::setDistanceJointFlag(PxDistanceJointFlag::Enum flag, bool va
namespace
{
-void DistanceJointVisualize(PxConstraintVisualizer& /*viz*/,
- const void* /*constantBlock*/,
- const PxTransform& /*body0Transform*/,
- const PxTransform& /*body1Transform*/,
- PxU32 /*flags*/)
+static void DistanceJointVisualize(PxConstraintVisualizer& viz, const void* constantBlock, const PxTransform& body0Transform, const PxTransform& body1Transform, PxU32 flags)
{
+ const DistanceJointData& data = *reinterpret_cast<const DistanceJointData*>(constantBlock);
+
+ const PxTransform cA2w = body0Transform.transform(data.c2b[0]);
+ const PxTransform cB2w = body1Transform.transform(data.c2b[1]);
+
+ if(flags & PxConstraintVisualizationFlag::eLOCAL_FRAMES)
+ viz.visualizeJointFrames(cA2w, cB2w);
+
+ // PT: we consider the following is part of the joint's "limits" since that's the only available flag we have
+ if(flags & PxConstraintVisualizationFlag::eLIMITS)
+ {
+ const bool enforceMax = (data.jointFlags & PxDistanceJointFlag::eMAX_DISTANCE_ENABLED);
+ const bool enforceMin = (data.jointFlags & PxDistanceJointFlag::eMIN_DISTANCE_ENABLED);
+ if(!enforceMin && !enforceMax)
+ return;
+
+ PxVec3 dir = cB2w.p - cA2w.p;
+ const float currentDist = dir.normalize();
+
+ PxU32 color = 0x00ff00;
+ if(enforceMax && currentDist>data.maxDistance)
+ color = 0xff0000;
+ if(enforceMin && currentDist<data.minDistance)
+ color = 0x0000ff;
+
+ viz.visualizeLine(cA2w.p, cB2w.p, color);
+ }
}
void DistanceJointProject(const void* /*constantBlock*/,