6#include "physxnode/qphysxactorbody_p.h"
10#include <extensions/PxSphericalJoint.h>
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
32
33
34
35
36
37
38
39
40
41
44
45
46
47
48
49
50
51
52
53
56
57
58
59
60
61
63float QSphericalJoint::coneLimitY()
const
68void QSphericalJoint::setConeLimitY(
float newConeLimitY)
72 newConeLimitY = qBound(1e-4f, newConeLimitY, physx::PxPi - 1e-4f);
73 if (qFuzzyCompare(m_coneLimitY, newConeLimitY))
75 m_coneLimitY = newConeLimitY;
76 m_dirtyProperties =
true;
77 emit coneLimitYChanged();
80float QSphericalJoint::coneLimitZ()
const
85void QSphericalJoint::setConeLimitZ(
float newConeLimitZ)
89 newConeLimitZ = qBound(1e-4f, newConeLimitZ, physx::PxPi - 1e-4f);
90 if (qFuzzyCompare(m_coneLimitZ, newConeLimitZ))
92 m_coneLimitZ = newConeLimitZ;
93 m_dirtyProperties =
true;
94 emit coneLimitZChanged();
97bool QSphericalJoint::enableConeLimit()
const
99 return m_enableConeLimit;
102void QSphericalJoint::setEnableConeLimit(
bool newEnableConeLimit)
104 if (m_enableConeLimit == newEnableConeLimit)
106 m_enableConeLimit = newEnableConeLimit;
107 m_dirtyProperties =
true;
108 emit enableConeLimitChanged();
111physx::PxJoint *QSphericalJoint::createPhysxJoint(physx::PxRigidActor *actorA,
112 physx::PxRigidActor *actorB,
113 const physx::PxTransform &trfA,
114 const physx::PxTransform &trfB)
116 return physx::PxSphericalJointCreate(*StaticPhysXObjects::getReference().physics, actorA, trfA,
120void QSphericalJoint::setJointProperties()
122 physx::PxSphericalJoint *joint =
static_cast<physx::PxSphericalJoint *>(m_joint);
124 physx::PxJointLimitCone limit(m_coneLimitY, m_coneLimitZ);
125 limit.stiffness = m_stiffness;
126 limit.damping = m_damping;
128 joint->setLimitCone(limit);
129 joint->setSphericalJointFlag(physx::PxSphericalJointFlag::eLIMIT_ENABLED, m_enableConeLimit);
#define QT_BEGIN_NAMESPACE