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
4#ifndef QPHYSICSCOMMANDS_H
5#define QPHYSICSCOMMANDS_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtQuick3DPhysics/qtquick3dphysicsglobal.h>
19
20#include <QtCore/QList>
21#include <QtGui/QVector3D>
22#include <QtGui/qgenericmatrix.h>
23
24namespace physx {
25class PxRigidBody;
26}
27
29
30class QDynamicRigidBody;
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);
194
195 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
196
197private:
198 bool isKinematic;
199};
200
202{
203public:
204 explicit QPhysicsCommandSetGravityEnabled(bool inGravityEnabled);
206
207 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
208
209private:
210 bool gravityEnabled;
211};
212
214{
215public:
216 explicit QPhysicsCommandReset(QVector3D inPosition, QVector3D inEulerRotation);
218
219 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
220
221private:
222 QVector3D position;
223 QVector3D eulerRotation;
224};
225
227
228#endif // QPHYSICSCOMMANDS_H
void setShapesDirty(bool dirty)
void buildShapes(QPhysXWorld *physX)
physx::PxRigidActor * actor
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
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)
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