diff options
author | Marc Mutz <[email protected]> | 2025-07-04 13:27:25 +0200 |
---|---|---|
committer | Marc Mutz <[email protected]> | 2025-07-07 23:00:28 +0200 |
commit | a6689facf0899a2ca52b1ba3414c8c37aee287da (patch) | |
tree | 900fa14ce90ab14a9967a4c9669b25975e45a30c | |
parent | 38b48c72258637f21998dc37af4c871fa19b7af6 (diff) |
This reliably pins the vtable to a single TU, avoiding duplicated
vtables and other such fun, and avoids -Wweak-vtables.
Amends the start of this module's history.
Since this is private API, we can pick all the way.
Pick-to: 6.10 6.9 6.8 6.5
Task-number: QTBUG-45582
Change-Id: I688868744c825edcbabcb0880629bee596379517
Reviewed-by: Jonas Karlsson <[email protected]>
-rw-r--r-- | src/quick3dphysics/qphysicscommands.cpp | 49 | ||||
-rw-r--r-- | src/quick3dphysics/qphysicscommands_p.h | 32 |
2 files changed, 80 insertions, 1 deletions
diff --git a/src/quick3dphysics/qphysicscommands.cpp b/src/quick3dphysics/qphysicscommands.cpp index ca0d3b5..cf54bdc 100644 --- a/src/quick3dphysics/qphysicscommands.cpp +++ b/src/quick3dphysics/qphysicscommands.cpp @@ -16,11 +16,18 @@ static bool isKinematicBody(physx::PxRigidBody &body) return static_cast<bool>(body.getRigidBodyFlags() & physx::PxRigidBodyFlag::eKINEMATIC); } + +QPhysicsCommand::~QPhysicsCommand() + = default; + QPhysicsCommandApplyCentralForce::QPhysicsCommandApplyCentralForce(const QVector3D &inForce) : QPhysicsCommand(), force(inForce) { } +QPhysicsCommandApplyCentralForce::~QPhysicsCommandApplyCentralForce() + = default; + void QPhysicsCommandApplyCentralForce::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -36,6 +43,9 @@ QPhysicsCommandApplyForce::QPhysicsCommandApplyForce(const QVector3D &inForce, { } +QPhysicsCommandApplyForce::~QPhysicsCommandApplyForce() + = default; + void QPhysicsCommandApplyForce::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -51,6 +61,9 @@ QPhysicsCommandApplyTorque::QPhysicsCommandApplyTorque(const QVector3D &inTorque { } +QPhysicsCommandApplyTorque::~QPhysicsCommandApplyTorque() + = default; + void QPhysicsCommandApplyTorque::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -65,6 +78,9 @@ QPhysicsCommandApplyCentralImpulse::QPhysicsCommandApplyCentralImpulse(const QVe { } +QPhysicsCommandApplyCentralImpulse::~QPhysicsCommandApplyCentralImpulse() + = default; + void QPhysicsCommandApplyCentralImpulse::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -80,6 +96,9 @@ QPhysicsCommandApplyImpulse::QPhysicsCommandApplyImpulse(const QVector3D &inImpu { } +QPhysicsCommandApplyImpulse::~QPhysicsCommandApplyImpulse() + = default; + void QPhysicsCommandApplyImpulse::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -96,6 +115,9 @@ QPhysicsCommandApplyTorqueImpulse::QPhysicsCommandApplyTorqueImpulse(const QVect { } +QPhysicsCommandApplyTorqueImpulse::~QPhysicsCommandApplyTorqueImpulse() + = default; + void QPhysicsCommandApplyTorqueImpulse::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -112,6 +134,9 @@ QPhysicsCommandSetAngularVelocity::QPhysicsCommandSetAngularVelocity( { } +QPhysicsCommandSetAngularVelocity::~QPhysicsCommandSetAngularVelocity() + = default; + void QPhysicsCommandSetAngularVelocity::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -125,6 +150,9 @@ QPhysicsCommandSetLinearVelocity::QPhysicsCommandSetLinearVelocity( { } +QPhysicsCommandSetLinearVelocity::~QPhysicsCommandSetLinearVelocity() + = default; + void QPhysicsCommandSetLinearVelocity::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -134,6 +162,9 @@ void QPhysicsCommandSetLinearVelocity::execute(const QDynamicRigidBody &rigidBod QPhysicsCommandSetMass::QPhysicsCommandSetMass(float inMass) : QPhysicsCommand(), mass(inMass) { } +QPhysicsCommandSetMass::~QPhysicsCommandSetMass() + = default; + void QPhysicsCommandSetMass::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { if (rigidBody.hasStaticShapes()) { @@ -167,6 +198,9 @@ QPhysicsCommandSetMassAndInertiaMatrix::QPhysicsCommandSetMassAndInertiaMatrix( { } +QPhysicsCommandSetMassAndInertiaMatrix::~QPhysicsCommandSetMassAndInertiaMatrix() + = default; + void QPhysicsCommandSetMassAndInertiaMatrix::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -192,6 +226,9 @@ QPhysicsCommandSetDensity::QPhysicsCommandSetDensity(float inDensity) { } +QPhysicsCommandSetDensity::~QPhysicsCommandSetDensity() + = default; + void QPhysicsCommandSetDensity::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -215,6 +252,9 @@ QPhysicsCommandSetIsKinematic::QPhysicsCommandSetIsKinematic(bool inIsKinematic) { } +QPhysicsCommandSetIsKinematic::~QPhysicsCommandSetIsKinematic() + = default; + void QPhysicsCommandSetIsKinematic::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -232,6 +272,9 @@ QPhysicsCommandSetGravityEnabled::QPhysicsCommandSetGravityEnabled(bool inGravit { } +QPhysicsCommandSetGravityEnabled::~QPhysicsCommandSetGravityEnabled() + = default; + void QPhysicsCommandSetGravityEnabled::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { @@ -244,6 +287,9 @@ QPhysicsCommandReset::QPhysicsCommandReset(QVector3D inPosition, QVector3D inEul { } +QPhysicsCommandReset::~QPhysicsCommandReset() + = default; + void QPhysicsCommandReset::execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) { Q_UNUSED(rigidBody) @@ -265,4 +311,7 @@ QPhysicsCommandSetMassAndInertiaTensor::QPhysicsCommandSetMassAndInertiaTensor( { } +QPhysicsCommandSetMassAndInertiaTensor::~QPhysicsCommandSetMassAndInertiaTensor() + = default; + QT_END_NAMESPACE diff --git a/src/quick3dphysics/qphysicscommands_p.h b/src/quick3dphysics/qphysicscommands_p.h index 3e8b564..4853a7d 100644 --- a/src/quick3dphysics/qphysicscommands_p.h +++ b/src/quick3dphysics/qphysicscommands_p.h @@ -32,7 +32,7 @@ class QDynamicRigidBody; class QPhysicsCommand { public: - virtual ~QPhysicsCommand() = default; + virtual ~QPhysicsCommand(); virtual void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) = 0; }; @@ -40,6 +40,8 @@ class QPhysicsCommandApplyCentralForce : public QPhysicsCommand { public: QPhysicsCommandApplyCentralForce(const QVector3D &inForce); + ~QPhysicsCommandApplyCentralForce() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -50,6 +52,8 @@ class QPhysicsCommandApplyForce : public QPhysicsCommand { public: QPhysicsCommandApplyForce(const QVector3D &inForce, const QVector3D &inPosition); + ~QPhysicsCommandApplyForce() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -61,6 +65,8 @@ class QPhysicsCommandApplyTorque : public QPhysicsCommand { public: QPhysicsCommandApplyTorque(const QVector3D &inTorque); + ~QPhysicsCommandApplyTorque() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -71,6 +77,8 @@ class QPhysicsCommandApplyCentralImpulse : public QPhysicsCommand { public: QPhysicsCommandApplyCentralImpulse(const QVector3D &inImpulse); + ~QPhysicsCommandApplyCentralImpulse() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -81,6 +89,8 @@ class QPhysicsCommandApplyImpulse : public QPhysicsCommand { public: QPhysicsCommandApplyImpulse(const QVector3D &inImpulse, const QVector3D &inPosition); + ~QPhysicsCommandApplyImpulse() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -92,6 +102,8 @@ class QPhysicsCommandApplyTorqueImpulse : public QPhysicsCommand { public: QPhysicsCommandApplyTorqueImpulse(const QVector3D &inImpulse); + ~QPhysicsCommandApplyTorqueImpulse() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -102,6 +114,8 @@ class QPhysicsCommandSetAngularVelocity : public QPhysicsCommand { public: QPhysicsCommandSetAngularVelocity(const QVector3D &inAngularVelocity); + ~QPhysicsCommandSetAngularVelocity() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -112,6 +126,8 @@ class QPhysicsCommandSetLinearVelocity : public QPhysicsCommand { public: QPhysicsCommandSetLinearVelocity(const QVector3D &inLinearVelocity); + ~QPhysicsCommandSetLinearVelocity() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -122,6 +138,8 @@ class QPhysicsCommandSetMass : public QPhysicsCommand { public: QPhysicsCommandSetMass(float inMass); + ~QPhysicsCommandSetMass() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -132,6 +150,8 @@ class QPhysicsCommandSetMassAndInertiaTensor : public QPhysicsCommand { public: QPhysicsCommandSetMassAndInertiaTensor(float inMass, const QVector3D &inInertia); + ~QPhysicsCommandSetMassAndInertiaTensor() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -143,6 +163,8 @@ class QPhysicsCommandSetMassAndInertiaMatrix : public QPhysicsCommand { public: QPhysicsCommandSetMassAndInertiaMatrix(float inMass, const QMatrix3x3 &inInertia); + ~QPhysicsCommandSetMassAndInertiaMatrix() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -154,6 +176,8 @@ class QPhysicsCommandSetDensity : public QPhysicsCommand { public: QPhysicsCommandSetDensity(float inDensity); + ~QPhysicsCommandSetDensity() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -164,6 +188,8 @@ class QPhysicsCommandSetIsKinematic : public QPhysicsCommand { public: QPhysicsCommandSetIsKinematic(bool inIsKinematic); + ~QPhysicsCommandSetIsKinematic() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -174,6 +200,8 @@ class QPhysicsCommandSetGravityEnabled : public QPhysicsCommand { public: QPhysicsCommandSetGravityEnabled(bool inGravityEnabled); + ~QPhysicsCommandSetGravityEnabled() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: @@ -184,6 +212,8 @@ class QPhysicsCommandReset : public QPhysicsCommand { public: QPhysicsCommandReset(QVector3D inPosition, QVector3D inEulerRotation); + ~QPhysicsCommandReset() override; + void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override; private: |