Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qphysicscommands_p.h
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QPHYSICSCOMMANDS_H
6#define QPHYSICSCOMMANDS_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
20#include <QtQuick3DPhysics/qtquick3dphysicsglobal.h>
21
22#include <QtCore/QList>
23#include <QtGui/QVector3D>
24#include <QtGui/qgenericmatrix.h>
25
26namespace physx {
27class PxRigidBody;
28}
29
31
33{
35public:
36 QPhysicsCommand() = default;
37 virtual ~QPhysicsCommand();
38 virtual void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) = 0;
39};
40
42{
43public:
44 explicit QPhysicsCommandApplyCentralForce(const QVector3D &inForce);
46
47 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
48
49private:
50 QVector3D force;
51};
52
54{
55public:
56 explicit QPhysicsCommandApplyForce(const QVector3D &inForce, const QVector3D &inPosition);
58
59 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
60
61private:
62 QVector3D force;
63 QVector3D position;
64};
65
67{
68public:
69 explicit QPhysicsCommandApplyTorque(const QVector3D &inTorque);
71
72 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
73
74private:
75 QVector3D torque;
76};
77
79{
80public:
81 explicit QPhysicsCommandApplyCentralImpulse(const QVector3D &inImpulse);
83
84 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
85
86private:
87 QVector3D impulse;
88};
89
91{
92public:
93 explicit QPhysicsCommandApplyImpulse(const QVector3D &inImpulse, const QVector3D &inPosition);
95
96 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
97
98private:
99 QVector3D impulse;
100 QVector3D position;
101};
102
104{
105public:
106 explicit QPhysicsCommandApplyTorqueImpulse(const QVector3D &inImpulse);
108
109 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
110
111private:
112 QVector3D impulse;
113};
114
116{
117public:
118 explicit QPhysicsCommandSetAngularVelocity(const QVector3D &inAngularVelocity);
120
121 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
122
123private:
124 QVector3D angularVelocity;
125};
126
128{
129public:
130 explicit QPhysicsCommandSetLinearVelocity(const QVector3D &inLinearVelocity);
132
133 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
134
135private:
136 QVector3D linearVelocity;
137};
138
140{
141public:
142 explicit QPhysicsCommandSetMass(float inMass);
144
145 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
146
147private:
148 float mass;
149};
150
152{
153public:
154 explicit QPhysicsCommandSetMassAndInertiaTensor(float inMass, const QVector3D &inInertia);
156
157 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
158
159private:
160 float mass;
161 QVector3D inertia;
162};
163
165{
166public:
167 explicit QPhysicsCommandSetMassAndInertiaMatrix(float inMass, const QMatrix3x3 &inInertia);
169
170 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
171
172private:
173 float mass;
174 QMatrix3x3 inertia;
175};
176
178{
179public:
180 explicit QPhysicsCommandSetDensity(float inDensity);
182
183 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
184
185private:
186 float density;
187};
188
190{
191public:
192 explicit QPhysicsCommandSetIsKinematic(bool inIsKinematic, bool worldEnableCCD);
194
195 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
196
197private:
198 bool isKinematic;
199 bool worldEnableCCD;
200};
201
203{
204public:
205 explicit QPhysicsCommandSetCCD(QDynamicRigidBody::CCDType ccdType, bool worldEnableCCD);
207
208 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
209
210private:
211 QDynamicRigidBody::CCDType ccdType;
212 bool worldEnableCCD;
213};
214
216{
217public:
218 explicit QPhysicsCommandSetGravityEnabled(bool inGravityEnabled);
220
221 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
222
223private:
224 bool gravityEnabled;
225};
226
228{
229public:
230 explicit QPhysicsCommandReset(QVector3D inPosition, QVector3D inEulerRotation);
232
233 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
234
235private:
236 QVector3D position;
237 QVector3D eulerRotation;
238};
239
241
242#endif // QPHYSICSCOMMANDS_H
void setShapesDirty(bool dirty)
void buildShapes(QPhysXWorld *physX)
void updateDefaultDensity(float density) override
QPhysXDynamicBody(QDynamicRigidBody *frontEnd)
DebugDrawBodyType getDebugDrawBodyType() override
void sync(float deltaTime, QHash< QQuick3DNode *, QMatrix4x4 > &transformCache) override
void rebuildDirtyShapes(QPhysicsWorld *world, QPhysXWorld *physX) override
QPhysXRigidBody(QAbstractPhysicsBody *frontEnd)
void createMaterial(QPhysXWorld *physX) override
QPhysicsCommandApplyCentralForce(const QVector3D &inForce)
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
QPhysicsCommandApplyCentralImpulse(const QVector3D &inImpulse)
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
QPhysicsCommandApplyForce(const QVector3D &inForce, const QVector3D &inPosition)
~QPhysicsCommandApplyForce() override
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
~QPhysicsCommandApplyImpulse() override
QPhysicsCommandApplyImpulse(const QVector3D &inImpulse, const QVector3D &inPosition)
QPhysicsCommandApplyTorqueImpulse(const QVector3D &inImpulse)
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
~QPhysicsCommandApplyTorque() override
QPhysicsCommandApplyTorque(const QVector3D &inTorque)
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
~QPhysicsCommandReset() override
QPhysicsCommandReset(QVector3D inPosition, QVector3D inEulerRotation)
QPhysicsCommandSetAngularVelocity(const QVector3D &inAngularVelocity)
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
QPhysicsCommandSetCCD(QDynamicRigidBody::CCDType ccdType, bool worldEnableCCD)
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
~QPhysicsCommandSetCCD() override
QPhysicsCommandSetDensity(float inDensity)
~QPhysicsCommandSetDensity() override
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
QPhysicsCommandSetGravityEnabled(bool inGravityEnabled)
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
~QPhysicsCommandSetIsKinematic() override
QPhysicsCommandSetIsKinematic(bool inIsKinematic, bool worldEnableCCD)
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
QPhysicsCommandSetLinearVelocity(const QVector3D &inLinearVelocity)
QPhysicsCommandSetMassAndInertiaMatrix(float inMass, const QMatrix3x3 &inInertia)
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
QPhysicsCommandSetMassAndInertiaTensor(float inMass, const QVector3D &inInertia)
QPhysicsCommandSetMass(float inMass)
~QPhysicsCommandSetMass() override
void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override
virtual void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body)=0
virtual ~QPhysicsCommand()
DebugDrawBodyType
static QMatrix4x4 calculateKinematicNodeTransform(QQuick3DNode *node, QHash< QQuick3DNode *, QMatrix4x4 > &transformCache)
static physx::PxTransform getPhysXWorldTransform(const QMatrix4x4 transform)
static physx::PxRigidDynamicLockFlags getLockFlags(QDynamicRigidBody *body)
static QT_BEGIN_NAMESPACE void processCommandQueue(QQueue< QPhysicsCommand * > &commandQueue, const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body)
#define QT_BEGIN_NAMESPACE
#define QT_END_NAMESPACE