28 Q_PROPERTY(QVector3D movement READ movement WRITE setMovement NOTIFY movementChanged)
29 Q_PROPERTY(QVector3D gravity READ gravity WRITE setGravity NOTIFY gravityChanged)
30 Q_PROPERTY(
bool midAirControl READ midAirControl WRITE setMidAirControl NOTIFY
32 Q_PROPERTY(Collisions collisions READ collisions NOTIFY collisionsChanged)
33 Q_PROPERTY(
bool enableShapeHitCallback READ enableShapeHitCallback WRITE
34 setEnableShapeHitCallback NOTIFY enableShapeHitCallbackChanged)
35 QML_NAMED_ELEMENT(CharacterController)
37 QCharacterController();
39 enum class Collision {
45 Q_DECLARE_FLAGS(Collisions, Collision)
48 const QVector3D &movement()
const;
49 void setMovement(
const QVector3D &newMovement);
50 const QVector3D &gravity()
const;
51 void setGravity(
const QVector3D &newGravity);
52 QVector3D getDisplacement(
float deltaTime);
53 bool getTeleport(QVector3D &position);
55 bool midAirControl()
const;
56 void setMidAirControl(
bool newMidAirControl);
58 Q_INVOKABLE
void teleport(
const QVector3D &position);
60 const Collisions &collisions()
const;
61 void setCollisions(
const Collisions &newCollisions);
62 QAbstractPhysXNode *createPhysXBackend() final;
64 Q_REVISION(6, 6)
bool enableShapeHitCallback()
const;
65 Q_REVISION(6, 6)
void setEnableShapeHitCallback(
bool newEnableShapeHitCallback);
68 void movementChanged();
69 void gravityChanged();
71 void midAirControlChanged();
73 void collisionsChanged();
74 void enableShapeHitCallbackChanged();
75 void shapeHit(QAbstractPhysicsNode *body,
const QVector3D &position,
const QVector3D &impulse,
76 const QVector3D &normal);
81 bool m_midAirControl =
true;
83 QVector3D m_freeFallVelocity;
85 QVector3D m_teleportPosition;
86 bool m_teleport =
false;
87 Collisions m_collisions;
88 bool m_enableShapeHitCallback =
false;