6#include <QtQuick3D/QQuick3DGeometry>
7#include <geometry/PxCapsuleGeometry.h>
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
31
32
33
34
35
38
39
40
41
42
44QCapsuleShape::QCapsuleShape() =
default;
46QCapsuleShape::~QCapsuleShape()
48 delete m_physXGeometry;
51physx::PxGeometry *QCapsuleShape::getPhysXGeometry()
53 if (!m_physXGeometry || m_scaleDirty) {
54 updatePhysXGeometry();
57 return m_physXGeometry;
60float QCapsuleShape::diameter()
const
65void QCapsuleShape::setDiameter(
float newDiameter)
67 if (qFuzzyCompare(m_diameter, newDiameter))
69 m_diameter = newDiameter;
70 updatePhysXGeometry();
72 emit needsRebuild(
this);
73 emit diameterChanged();
76float QCapsuleShape::height()
const
81void QCapsuleShape::setHeight(
float newHeight)
83 if (qFuzzyCompare(m_height, newHeight))
86 updatePhysXGeometry();
88 emit needsRebuild(
this);
92void QCapsuleShape::updatePhysXGeometry()
94 delete m_physXGeometry;
95 QVector3D s = sceneScale();
98 m_physXGeometry =
new physx::PxCapsuleGeometry(rs * m_diameter * 0.5f, hs * m_height * 0.5f);