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