| 453 | } |
| 454 | |
| 455 | static void D6JointProject(const void* constantBlock, PxTransform& bodyAToWorld, PxTransform& bodyBToWorld, bool projectToA) |
| 456 | { |
| 457 | const D6JointData& data = *reinterpret_cast<const D6JointData*>(constantBlock); |
| 458 | |
| 459 | PxTransform cA2w, cB2w, cB2cA, projected; |
| 460 | joint::computeDerived(data, bodyAToWorld, bodyBToWorld, cA2w, cB2w, cB2cA, false); |
| 461 | |
| 462 | const PxVec3 v(data.locked & 1 ? cB2cA.p.x : 0.0f, |
| 463 | data.locked & 2 ? cB2cA.p.y : 0.0f, |
| 464 | data.locked & 4 ? cB2cA.p.z : 0.0f); |
| 465 | |
| 466 | bool linearTrunc, angularTrunc = false; |
| 467 | projected.p = joint::truncateLinear(v, data.projectionLinearTolerance, linearTrunc) + (cB2cA.p - v); |
| 468 | |
| 469 | projected.q = angularProject(data.locked >> 3, cB2cA.q, PxCos(data.projectionAngularTolerance / 2), angularTrunc); |
| 470 | |
| 471 | if(linearTrunc || angularTrunc) |
| 472 | joint::projectTransforms(bodyAToWorld, bodyBToWorld, cA2w, cB2w, projected, data, projectToA); |
| 473 | } |
| 474 | |
| 475 | static PX_FORCE_INLINE PxReal computePhi(const PxQuat& q) |
| 476 | { |
nothing calls this directly
no test coverage detected