aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <[email protected]>2025-07-04 13:27:25 +0200
committerMarc Mutz <[email protected]>2025-07-07 23:00:28 +0200
commita6689facf0899a2ca52b1ba3414c8c37aee287da (patch)
tree900fa14ce90ab14a9967a4c9669b25975e45a30c
parent38b48c72258637f21998dc37af4c871fa19b7af6 (diff)
QPhysicsCommand hierarchy: de-inline dtorsHEADdev
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.cpp49
-rw-r--r--src/quick3dphysics/qphysicscommands_p.h32
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: