Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qcapsuleshape.cpp
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#include "qcapsuleshape_p.h"
5
6#include <QtQuick3D/QQuick3DGeometry>
7#include <geometry/PxCapsuleGeometry.h>
8
10
41
43{
44 delete m_physXGeometry;
45}
46
48{
49 if (!m_physXGeometry || m_scaleDirty) {
50 updatePhysXGeometry();
51 }
52
53 return m_physXGeometry;
54}
55
57{
58 return m_diameter;
59}
60
61void QCapsuleShape::setDiameter(float newDiameter)
62{
63 if (qFuzzyCompare(m_diameter, newDiameter))
64 return;
65 m_diameter = newDiameter;
66 updatePhysXGeometry();
67
68 emit needsRebuild(this);
70}
71
73{
74 return m_height;
75}
76
77void QCapsuleShape::setHeight(float newHeight)
78{
79 if (qFuzzyCompare(m_height, newHeight))
80 return;
81 m_height = newHeight;
82 updatePhysXGeometry();
83
84 emit needsRebuild(this);
86}
87
88void QCapsuleShape::updatePhysXGeometry()
89{
90 delete m_physXGeometry;
92 qreal rs = s.y();
93 qreal hs = s.x();
94 m_physXGeometry = new physx::PxCapsuleGeometry(rs * m_diameter * 0.5f, hs * m_height * 0.5f);
95 m_scaleDirty = false;
96}
97
void needsRebuild(QObject *)
void heightChanged()
QCapsuleShape()
\qmltype CapsuleShape \inherits CollisionShape \inqmlmodule QtQuick3D.Physics
void setHeight(float newHeight)
void setDiameter(float newDiameter)
void diameterChanged()
physx::PxGeometry * getPhysXGeometry() override
QVector3D sceneScale
The QVector3D class represents a vector or vertex in 3D space.
Definition qvectornd.h:171
Combined button and popup list for selecting options.
bool qFuzzyCompare(qfloat16 p1, qfloat16 p2) noexcept
Definition qfloat16.h:287
GLdouble s
[6]
Definition qopenglext.h:235
#define emit
double qreal
Definition qtypes.h:92