Revision control

Copy as Markdown

// Copyright (C) 2026 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
// Qt-Security score:significant reason:default
#include "qquick3dphysicsqueryhit_p.h"
#include "qabstractcollisionshape_p.h"
#include "qabstractphysicsnode_p.h"
#include <PxQueryReport.h>
#include <PxRigidActor.h>
QT_BEGIN_NAMESPACE
/*!
\qmlvaluetype queryHit
\inqmlmodule QtQuick3D.Physics
\since 6.13
\brief Represents the result of a spatial physics query hit (raycast, sweep, or overlap).
The \c queryHit struct provides hit information returned by spatial
queries in the physics world.
\sa PhysicsNode, CollisionShape
*/
/*!
\qmlproperty PhysicsNode queryHit::body
\readonly
\since 6.13
Holds the physical body (\c PhysicsNode) intersected by the spatial query.
*/
/*!
\qmlproperty CollisionShape queryHit::shape
\readonly
\since 6.13
Holds the specific collision shape (\c CollisionShape) intersected by the spatial query.
Returns \c null if the underlying PhysX shape has no associated Qt collision shape.
\note When a query intersects a \l CharacterController, the \c body property
is populated, but the \c shape property will be \c null because character
controllers do not assign individual shape metadata.
*/
QQuick3DPhysicsQueryHit::QQuick3DPhysicsQueryHit() = default;
QQuick3DPhysicsQueryHit::QQuick3DPhysicsQueryHit(const physx::PxQueryHit &/*hit*/,
const physx::PxActorShape &actorShape)
: m_body(actorShape.actor ? static_cast<QAbstractPhysicsNode *>(actorShape.actor->userData) : nullptr),
m_shape(actorShape.shape ? static_cast<QAbstractCollisionShape *>(actorShape.shape->userData) : nullptr)
{
}
QAbstractPhysicsNode *QQuick3DPhysicsQueryHit::body() const
{
return m_body.data();
}
QAbstractCollisionShape *QQuick3DPhysicsQueryHit::shape() const
{
return m_shape.data();
}
QT_END_NAMESPACE