Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
|
#include <qcharactercontroller_p.h>
Public Types | |
enum class | Collision { None = 0 , Side = 1 << 0 , Up = 1 << 1 , Down = 1 << 2 } |
Public Types inherited from QQuick3DNode | |
enum | TransformSpace { LocalSpace , ParentSpace , SceneSpace } |
enum | StaticFlags { None } |
Public Member Functions | |
QCharacterController () | |
\qmltype CharacterController \inqmlmodule QtQuick3D.Physics \inherits PhysicsBody | |
const QVector3D & | movement () const |
void | setMovement (const QVector3D &newMovement) |
const QVector3D & | gravity () const |
void | setGravity (const QVector3D &newGravity) |
QVector3D | getDisplacement (float deltaTime) |
bool | getTeleport (QVector3D &position) |
bool | midAirControl () const |
void | setMidAirControl (bool newMidAirControl) |
Q_INVOKABLE void | teleport (const QVector3D &position) |
const Collisions & | collisions () const |
void | setCollisions (const Collisions &newCollisions) |
QAbstractPhysXNode * | createPhysXBackend () final |
Q_REVISION (6, 6) bool enableShapeHitCallback() const | |
Q_REVISION (6, 6) void setEnableShapeHitCallback(bool new EnableShapeHitCallback) | |
Public Member Functions inherited from QAbstractPhysicsBody | |
QAbstractPhysicsBody () | |
\qmltype PhysicsBody \inherits PhysicsNode \inqmlmodule QtQuick3D.Physics | |
QPhysicsMaterial * | physicsMaterial () const |
void | setPhysicsMaterial (QPhysicsMaterial *newPhysicsMaterial) |
Q_REVISION (6, 7) bool simulationEnabled() const | |
Q_REVISION (6, 7) void setSimulationEnabled(bool new SimulationEnabled) | |
Public Member Functions inherited from QAbstractPhysicsNode | |
QAbstractPhysicsNode () | |
\qmltype PhysicsNode \inherits Node \inqmlmodule QtQuick3D.Physics | |
~QAbstractPhysicsNode () override | |
QQmlListProperty< QAbstractCollisionShape > | collisionShapes () |
const QVector< QAbstractCollisionShape * > & | getCollisionShapesList () const |
void | updateFromPhysicsTransform (const physx::PxTransform &transform) |
void | registerContact (QAbstractPhysicsNode *body, const QVector< QVector3D > &positions, const QVector< QVector3D > &impulses, const QVector< QVector3D > &normals) |
bool | sendContactReports () const |
void | setSendContactReports (bool sendContactReports) |
bool | receiveContactReports () const |
void | setReceiveContactReports (bool receiveContactReports) |
Q_REVISION (6, 5) bool sendTriggerReports() const | |
Q_REVISION (6, 5) void setSendTriggerReports(bool sendTriggerReports) | |
Q_REVISION (6, 5) bool receiveTriggerReports() const | |
Q_REVISION (6, 5) void setReceiveTriggerReports(bool receiveTriggerReports) | |
bool | hasStaticShapes () const |
Q_REVISION (6, 7) int filterGroup() const | |
Q_REVISION (6, 7) void setfilterGroup(int new filterGroup) | |
Q_REVISION (6, 7) int filterIgnoreGroups() const | |
Q_REVISION (6, 7) void setFilterIgnoreGroups(int new FilterIgnoreGroups) | |
Public Member Functions inherited from QQuick3DNode | |
QQuick3DNode (QQuick3DNode *parent=nullptr) | |
\qmltype Node \inherits Object3D \inqmlmodule QtQuick3D | |
~QQuick3DNode () override | |
float | x () const |
\qmlproperty real QtQuick3D::Node::x | |
float | y () const |
\qmlproperty real QtQuick3D::Node::y | |
float | z () const |
\qmlproperty real QtQuick3D::Node::z | |
QQuaternion | rotation () const |
\qmlproperty quaternion QtQuick3D::Node::rotation | |
QVector3D | eulerRotation () const |
\qmlproperty vector3d QtQuick3D::Node::eulerRotation | |
QVector3D | position () const |
\qmlproperty vector3d QtQuick3D::Node::position | |
QVector3D | scale () const |
\qmlproperty vector3d QtQuick3D::Node::scale | |
QVector3D | pivot () const |
\qmlproperty vector3d QtQuick3D::Node::pivot | |
float | localOpacity () const |
\qmlproperty real QtQuick3D::Node::opacity | |
bool | visible () const |
\qmlproperty bool QtQuick3D::Node::visible | |
int | staticFlags () const |
\qmlproperty int QtQuick3D::Node::staticFlags | |
QQuick3DNode * | parentNode () const |
QVector3D | forward () const |
\qmlproperty vector3d QtQuick3D::Node::forward \readonly | |
QVector3D | up () const |
\qmlproperty vector3d QtQuick3D::Node::up \readonly | |
QVector3D | right () const |
\qmlproperty vector3d QtQuick3D::Node::right \readonly | |
QVector3D | scenePosition () const |
\qmlproperty vector3d QtQuick3D::Node::scenePosition \readonly | |
QQuaternion | sceneRotation () const |
\qmlproperty quaternion QtQuick3D::Node::sceneRotation \readonly | |
QVector3D | sceneScale () const |
\qmlproperty vector3d QtQuick3D::Node::sceneScale \readonly | |
QMatrix4x4 | sceneTransform () const |
\qmlproperty matrix4x4 QtQuick3D::Node::sceneTransform \readonly | |
Q_INVOKABLE void | rotate (qreal degrees, const QVector3D &axis, QQuick3DNode::TransformSpace space) |
\qmlmethod QtQuick3D::Node::rotate(real degrees, vector3d axis, enumeration space) | |
Q_INVOKABLE QVector3D | mapPositionToScene (const QVector3D &localPosition) const |
\qmlmethod vector3d QtQuick3D::Node::mapPositionToScene(vector3d localPosition) | |
Q_INVOKABLE QVector3D | mapPositionFromScene (const QVector3D &scenePosition) const |
\qmlmethod vector3d QtQuick3D::Node::mapPositionFromScene(vector3d scenePosition) | |
Q_INVOKABLE QVector3D | mapPositionToNode (const QQuick3DNode *node, const QVector3D &localPosition) const |
\qmlmethod vector3d QtQuick3D::Node::mapPositionToNode(QtQuick3D::Node node, vector3d localPosition) | |
Q_INVOKABLE QVector3D | mapPositionFromNode (const QQuick3DNode *node, const QVector3D &localPosition) const |
\qmlmethod vector3d QtQuick3D::Node::mapPositionFromNode(QtQuick3D::Node node, vector3d localPosition) | |
Q_INVOKABLE QVector3D | mapDirectionToScene (const QVector3D &localDirection) const |
\qmlmethod vector3d QtQuick3D::Node::mapDirectionToScene(vector3d localDirection) | |
Q_INVOKABLE QVector3D | mapDirectionFromScene (const QVector3D &sceneDirection) const |
\qmlmethod vector3d QtQuick3D::Node::mapDirectionFromScene(vector3d sceneDirection) | |
Q_INVOKABLE QVector3D | mapDirectionToNode (const QQuick3DNode *node, const QVector3D &localDirection) const |
\qmlmethod vector3d QtQuick3D::Node::mapDirectionToNode(QtQuick3D::Node node, vector3d localDirection) | |
Q_INVOKABLE QVector3D | mapDirectionFromNode (const QQuick3DNode *node, const QVector3D &localDirection) const |
\qmlmethod vector3d QtQuick3D::Node::mapDirectionFromNode(QtQuick3D::Node node, vector3d localDirection) | |
void | markAllDirty () override |
Public Member Functions inherited from QObject | |
Q_INVOKABLE | QObject (QObject *parent=nullptr) |
Constructs an object with parent object parent. | |
virtual | ~QObject () |
Destroys the object, deleting all its child objects. | |
virtual bool | event (QEvent *event) |
This virtual function receives events to an object and should return true if the event e was recognized and processed. | |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
Filters events if this object has been installed as an event filter for the watched object. | |
QString | objectName () const |
Q_WEAK_OVERLOAD void | setObjectName (const QString &name) |
Sets the object's name to name. | |
void | setObjectName (QAnyStringView name) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
QBindable< QString > | bindableObjectName () |
bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false . | |
bool | isWindowType () const |
Returns true if the object is a window; otherwise returns false . | |
bool | isQuickItemType () const |
Returns true if the object is a QQuickItem; otherwise returns false . | |
bool | signalsBlocked () const noexcept |
Returns true if signals are blocked; otherwise returns false . | |
bool | blockSignals (bool b) noexcept |
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). | |
QThread * | thread () const |
Returns the thread in which the object lives. | |
bool | moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL) |
Changes the thread affinity for this object and its children and returns true on success. | |
int | startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer) |
This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds. | |
int | startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer) |
void | killTimer (int id) |
Kills the timer with timer identifier, id. | |
void | killTimer (Qt::TimerId id) |
template<typename T > | |
T | findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object. | |
template<typename T > | |
QList< T > | findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. | |
template<typename T > | |
T | findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
template<typename T > | |
QList< T > | findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
const QObjectList & | children () const |
Returns a list of child objects. | |
void | setParent (QObject *parent) |
Makes the object a child of parent. | |
void | installEventFilter (QObject *filterObj) |
Installs an event filter filterObj on this object. | |
void | removeEventFilter (QObject *obj) |
Removes an event filter object obj from this object. | |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
bool | disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const |
bool | disconnect (const QObject *receiver, const char *member=nullptr) const |
void | dumpObjectTree () const |
Dumps a tree of children to the debug output. | |
void | dumpObjectInfo () const |
Dumps information about signal connections, etc. | |
bool | setProperty (const char *name, const QVariant &value) |
Sets the value of the object's name property to value. | |
bool | setProperty (const char *name, QVariant &&value) |
QVariant | property (const char *name) const |
Returns the value of the object's name property. | |
QList< QByteArray > | dynamicPropertyNames () const |
QBindingStorage * | bindingStorage () |
const QBindingStorage * | bindingStorage () const |
QObject * | parent () const |
Returns a pointer to the parent object. | |
bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false . | |
Public Member Functions inherited from QQmlParserStatus | |
QQmlParserStatus () | |
virtual | ~QQmlParserStatus () |
Additional Inherited Members | |
Public Slots inherited from QQuick3DNode | |
void | setX (float x) |
void | setY (float y) |
void | setZ (float z) |
void | setRotation (const QQuaternion &rotation) |
void | setEulerRotation (const QVector3D &eulerRotation) |
void | setPosition (const QVector3D &position) |
void | setScale (const QVector3D &scale) |
void | setPivot (const QVector3D &pivot) |
void | setLocalOpacity (float opacity) |
void | setVisible (bool visible) |
void | setStaticFlags (int staticFlags) |
Public Slots inherited from QQuick3DObject | |
void | update () |
void | setParentItem (QQuick3DObject *parentItem) |
Public Slots inherited from QObject | |
void | deleteLater () |
\threadsafe | |
Static Public Member Functions inherited from QObject | |
static QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
\threadsafe | |
static QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot) |
static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
\threadsafe | |
static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
static bool | disconnect (const QMetaObject::Connection &) |
Disconnect a connection. | |
template<typename Func1 , typename Func2 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot) |
template<typename Func1 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero) |
Protected Member Functions inherited from QQuick3DNode | |
void | connectNotify (const QMetaMethod &signal) override |
void | disconnectNotify (const QMetaMethod &signal) override |
void | componentComplete () override |
Invoked after the root component that caused this instantiation has completed construction. | |
QQuick3DNode (QQuick3DNodePrivate &dd, QQuick3DNode *parent=nullptr) | |
QSSGRenderGraphObject * | updateSpatialNode (QSSGRenderGraphObject *node) override |
virtual void | itemChange (ItemChange, const ItemChangeData &) override |
Protected Member Functions inherited from QQuick3DObject | |
QQuick3DObject (QQuick3DObjectPrivate &dd, QQuick3DObject *parent=nullptr) | |
void | classBegin () override |
Invoked after class creation, but before any properties have been set. | |
void | componentComplete () override |
Invoked after the root component that caused this instantiation has completed construction. | |
bool | isComponentComplete () const |
virtual void | preSync () |
Protected Member Functions inherited from QObject | |
QObject * | sender () const |
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr. | |
int | senderSignalIndex () const |
int | receivers (const char *signal) const |
Returns the number of receivers connected to the signal. | |
bool | isSignalConnected (const QMetaMethod &signal) const |
virtual void | timerEvent (QTimerEvent *event) |
This event handler can be reimplemented in a subclass to receive timer events for the object. | |
virtual void | childEvent (QChildEvent *event) |
This event handler can be reimplemented in a subclass to receive child events. | |
virtual void | customEvent (QEvent *event) |
This event handler can be reimplemented in a subclass to receive custom events. | |
QObject (QObjectPrivate &dd, QObject *parent=nullptr) | |
Protected Attributes inherited from QObject | |
QScopedPointer< QObjectData > | d_ptr |
Related Symbols inherited from QObject | |
template< class T > T | qobject_cast (const QObject *object) |
Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns \nullptr. | |
template< typename T > T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
template< typename T > QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QObjectList | |
\macro Q_CLASSINFO(Name, Value) | |
Definition at line 25 of file qcharactercontroller_p.h.
|
strong |
Enumerator | |
---|---|
None | |
Side | |
Up | |
Down |
Definition at line 39 of file qcharactercontroller_p.h.
|
default |
\qmltype CharacterController \inqmlmodule QtQuick3D.Physics \inherits PhysicsBody
Controls the motion of a character.
The CharacterController type controls the motion of a character.
A character is an entity that moves under external control, but is still constrained by physical barriers and (optionally) subject to gravity. This is in contrast to \l{DynamicRigidBody}{dynamic rigid bodies} which are either completely controlled by the physics simulation (for non-kinematic bodies); or move exactly where placed, regardless of barriers (for kinematic objects).
To control the motion of a character controller, set \l movement to the desired velocity.
For a first-person view, the camera is typically placed inside a character controller.
\qmlproperty vector3d CharacterController::movement
This property defines the controlled motion of the character. This is the velocity the character would move in the absence of gravity and without interacting with other physics objects.
This property does not reflect the actual velocity of the character. If the character is stuck against terrain, the character can move slower than the speed defined by movement
. Conversely, if the character is in free fall, it may move much faster.
Default value: {(0, 0, 0)}
\qmlproperty vector3d CharacterController::gravity
This property defines the gravitational acceleration that applies to the character. For a character that walks on the ground, it should typically be set to \l{PhysicsWorld::gravity}{PhysicsWorld.gravity}. A floating character that has movement controls in three dimensions will normally have gravity {(0, 0, 0)}.
Default value: {(0, 0, 0)}.
\qmlproperty bool CharacterController::midAirControl
This property defines whether the \l movement property has effect when the character is in free fall. This is only relevant if \l gravity in not null. A value of true
means that the character will change direction in mid-air when movement
changes. A value of false
means that the character will continue on its current trajectory until it hits another object.
Default value: true
\qmlproperty Collisions CharacterController::collisions \readonly
This property holds the current collision state of the character. It is either None
for no collision, or an OR combination of Side
, Up
, and Down:
\value CharacterController.None The character is not touching anything. If gravity is non-null, this means that the character is in free fall. \value CharacterController.Side The character is touching something on its side. \value CharacterController.Up The character is touching something above it. \value CharacterController.Down The character is touching something below it. In standard gravity, this means that the character is on the ground.
Up
is always along the positive y-axis, regardless of the value of \l {gravity}{CharacterController.gravity} or \l{PhysicsWorld::gravity}{PhysicsWorld.gravity}\qmlproperty bool CharacterController::enableShapeHitCallback
This property enables/disables the \l {CharacterController::shapeHit} callback for this character controller.
Default value: {false}
\qmlmethod CharacterController::teleport(vector3d position) Immediately move the character to position without checking for collisions. The caller is responsible for avoiding overlap with static objects.
\qmlsignal CharacterController::shapeHit(PhysicsNode *body, vector3D position, vector3D impulse, vector3D normal)
This signal is emitted when \l {CharacterController::}{movement} has been called and it would result in a collision with a \l {DynamicRigidBody} or a \l {StaticRigidBody} and \l {CharacterController::} {enableShapeHitCallback} is set to true
. The parameters body, position, impulse and normal contain the body, position, impulse force and normal for the contact point.
const QCharacterController::Collisions & QCharacterController::collisions | ( | ) | const |
Definition at line 250 of file qcharactercontroller.cpp.
|
signal |
|
finalvirtual |
Implements QAbstractPhysicsNode.
Definition at line 268 of file qcharactercontroller.cpp.
|
signal |
QVector3D QCharacterController::getDisplacement | ( | float | deltaTime | ) |
Definition at line 155 of file qcharactercontroller.cpp.
References QVector3D::dotProduct(), Down, None, QVector3D::normalized(), QQuick3DNode::sceneRotation, Side, Up, QVector3D::x(), QVector3D::y(), and QVector3D::z().
bool QCharacterController::getTeleport | ( | QVector3D & | position | ) |
Definition at line 240 of file qcharactercontroller.cpp.
References QQuick3DNode::position.
const QVector3D & QCharacterController::gravity | ( | ) | const |
Definition at line 140 of file qcharactercontroller.cpp.
|
signal |
bool QCharacterController::midAirControl | ( | ) | const |
Definition at line 220 of file qcharactercontroller.cpp.
|
signal |
const QVector3D & QCharacterController::movement | ( | ) | const |
Definition at line 127 of file qcharactercontroller.cpp.
|
signal |
QCharacterController::Q_REVISION | ( | 6 | , |
6 | ) const |
|
new |
void QCharacterController::setCollisions | ( | const Collisions & | newCollisions | ) |
Definition at line 255 of file qcharactercontroller.cpp.
References collisionsChanged(), and emit.
Definition at line 145 of file qcharactercontroller.cpp.
References emit, and gravityChanged().
void QCharacterController::setMidAirControl | ( | bool | newMidAirControl | ) |
Definition at line 225 of file qcharactercontroller.cpp.
References emit, and midAirControlChanged().
Definition at line 132 of file qcharactercontroller.cpp.
References emit, and movementChanged().
|
signal |
Definition at line 233 of file qcharactercontroller.cpp.
References QQuick3DNode::position.
|
read |
Definition at line 32 of file qcharactercontroller_p.h.
|
read |
Definition at line 33 of file qcharactercontroller_p.h.
Referenced by ControllerCallback::onShapeHit().
|
readwrite |
Definition at line 29 of file qcharactercontroller_p.h.
|
readwrite |
Definition at line 30 of file qcharactercontroller_p.h.
|
readwrite |
Definition at line 28 of file qcharactercontroller_p.h.