diff options
| author | Sheikh Dawood Abdul Ajees <[email protected]> | 2017-11-20 11:35:52 -0600 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <[email protected]> | 2017-11-20 11:35:52 -0600 |
| commit | 3cc1861221d761b7f0301b9b61de4e1aa18c09f4 (patch) | |
| tree | a51eb808016e1710a4bbd537000a493250602944 /PhysX_3.4/Source/PhysXExtensions/src/ExtDistanceJoint.cpp | |
| parent | PhysX 3.4.1, APEX 1.4.1 Release @22845541 (diff) | |
| download | physx-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.cpp | 33 |
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*/, |