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
19#include <QtQuick3DPhysics/qtquick3dphysicsglobal.h>
20
21#include <QtCore/QList>
22#include <QtGui/QVector3D>
23#include <QtGui/qgenericmatrix.h>
24
25namespace physx {
26class PxRigidBody;
27}
28
30
31class QDynamicRigidBody;
32
34{
36public:
37 QPhysicsCommand() = default;
38 virtual ~QPhysicsCommand();
39 virtual void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) = 0;
40};
41
43{
44public:
45 explicit QPhysicsCommandApplyCentralForce(const QVector3D &inForce);
47
48 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
49
50private:
51 QVector3D force;
52};
53
55{
56public:
57 explicit QPhysicsCommandApplyForce(const QVector3D &inForce, const QVector3D &inPosition);
59
60 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
61
62private:
63 QVector3D force;
64 QVector3D position;
65};
66
68{
69public:
70 explicit QPhysicsCommandApplyTorque(const QVector3D &inTorque);
72
73 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
74
75private:
76 QVector3D torque;
77};
78
80{
81public:
82 explicit QPhysicsCommandApplyCentralImpulse(const QVector3D &inImpulse);
84
85 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
86
87private:
88 QVector3D impulse;
89};
90
92{
93public:
94 explicit QPhysicsCommandApplyImpulse(const QVector3D &inImpulse, const QVector3D &inPosition);
96
97 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
98
99private:
100 QVector3D impulse;
101 QVector3D position;
102};
103
105{
106public:
107 explicit QPhysicsCommandApplyTorqueImpulse(const QVector3D &inImpulse);
109
110 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
111
112private:
113 QVector3D impulse;
114};
115
117{
118public:
119 explicit QPhysicsCommandSetAngularVelocity(const QVector3D &inAngularVelocity);
121
122 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
123
124private:
125 QVector3D angularVelocity;
126};
127
129{
130public:
131 explicit QPhysicsCommandSetLinearVelocity(const QVector3D &inLinearVelocity);
133
134 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
135
136private:
137 QVector3D linearVelocity;
138};
139
141{
142public:
143 explicit QPhysicsCommandSetMass(float inMass);
145
146 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
147
148private:
149 float mass;
150};
151
153{
154public:
155 explicit QPhysicsCommandSetMassAndInertiaTensor(float inMass, const QVector3D &inInertia);
157
158 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
159
160private:
161 float mass;
162 QVector3D inertia;
163};
164
166{
167public:
168 explicit QPhysicsCommandSetMassAndInertiaMatrix(float inMass, const QMatrix3x3 &inInertia);
170
171 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
172
173private:
174 float mass;
175 QMatrix3x3 inertia;
176};
177
179{
180public:
181 explicit QPhysicsCommandSetDensity(float inDensity);
183
184 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
185
186private:
187 float density;
188};
189
191{
192public:
193 explicit QPhysicsCommandSetIsKinematic(bool inIsKinematic);
195
196 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
197
198private:
199 bool isKinematic;
200};
201
203{
204public:
205 explicit QPhysicsCommandSetGravityEnabled(bool inGravityEnabled);
207
208 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
209
210private:
211 bool gravityEnabled;
212};
213
215{
216public:
217 explicit QPhysicsCommandReset(QVector3D inPosition, QVector3D inEulerRotation);
219
220 void execute(const QDynamicRigidBody &rigidBody, physx::PxRigidBody &body) override;
221
222private:
223 QVector3D position;
224 QVector3D eulerRotation;
225};
226
228
229#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
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