41 Q_PROPERTY(QAbstractPhysicsBody *bodyA READ bodyA WRITE setBodyA NOTIFY bodyAChanged FINAL
43 Q_PROPERTY(QAbstractPhysicsBody *bodyB READ bodyB WRITE setBodyB NOTIFY bodyBChanged FINAL
45 Q_PROPERTY(QVector3D positionA READ positionA WRITE setPositionA NOTIFY positionAChanged FINAL
47 Q_PROPERTY(QVector3D positionB READ positionB WRITE setPositionB NOTIFY positionBChanged FINAL
49 Q_PROPERTY(QQuaternion orientationA READ orientationA WRITE setOrientationA NOTIFY
50 orientationAChanged FINAL REVISION(6, 12))
51 Q_PROPERTY(QQuaternion orientationB READ orientationB WRITE setOrientationB NOTIFY
52 orientationBChanged FINAL REVISION(6, 12))
61 Q_REVISION(6, 12)
void setBodyA(QAbstractPhysicsBody *newBodyA);
63 Q_REVISION(6, 12)
void setBodyB(QAbstractPhysicsBody *newBodyB);
65 Q_REVISION(6, 12)
void setPositionA(
const QVector3D &newPositionA);
67 Q_REVISION(6, 12)
void setPositionB(
const QVector3D &newPositionB);
68 Q_REVISION(6, 12) QQuaternion orientationA()
const;
69 Q_REVISION(6, 12)
void setOrientationA(
const QQuaternion &newOrientationA);
70 Q_REVISION(6, 12) QQuaternion orientationB()
const;
71 Q_REVISION(6, 12)
void setOrientationB(
const QQuaternion &newOrientationB);
73 void updatePhysXBackend();
74 physx::PxJoint *getPhysXBackend()
const;
85 virtual physx::PxJoint *createPhysxJoint(physx::PxRigidActor *actorA,
86 physx::PxRigidActor *actorB,
87 const physx::PxTransform &trfA,
88 const physx::PxTransform &trfB) = 0;
89 virtual void setJointProperties() = 0;
90 void onBodyDestroyed(QObject *body);
92 QAbstractPhysicsBody *m_bodyA =
nullptr;
93 QAbstractPhysicsBody *m_bodyB =
nullptr;
94 QVector3D m_positionA;
95 QVector3D m_positionB;
96 QQuaternion m_orientationA;
97 QQuaternion m_orientationB;
98 physx::PxJoint *m_joint =
nullptr;
99 bool m_needsRebuild =
false;
100 bool m_dirtyProperties =
false;