6#include <QtQuick3D/QQuick3DGeometry>
8#include <geometry/PxSphereGeometry.h>
13
14
15
16
17
18
19
20
21
22
25
26
27
28
29
31QSphereShape::QSphereShape() =
default;
33QSphereShape::~QSphereShape()
35 delete m_physXGeometry;
38float QSphereShape::diameter()
const
43physx::PxGeometry *QSphereShape::getPhysXGeometry()
45 if (!m_physXGeometry || m_scaleDirty) {
46 updatePhysXGeometry();
48 return m_physXGeometry;
51void QSphereShape::setDiameter(
float diameter)
53 if (!qIsFinite(diameter) || diameter <= 0.f) {
54 qWarning() <<
"SphereShape: diameter must be finite and greater than zero, ignoring"
59 if (qFuzzyCompare(m_diameter, diameter))
62 m_diameter = diameter;
63 updatePhysXGeometry();
65 emit needsRebuild(
this);
66 emit diameterChanged(m_diameter);
69void QSphereShape::updatePhysXGeometry()
71 delete m_physXGeometry;
72 m_physXGeometry =
nullptr;
75 const float radius = m_diameter * 0.5f * sceneScale().x();
76 if (!qIsFinite(radius) || radius <= 0.f) {
77 qWarning() <<
"SphereShape: scaled radius must be finite and greater than zero, "
81 m_physXGeometry =
new physx::PxSphereGeometry(radius);
Combined button and popup list for selecting options.