Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qsphereshape.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 "qsphereshape_p.h"
5#include <QtQuick3D/QQuick3DGeometry>
6
7#include <geometry/PxSphereGeometry.h>
8
10
29
31{
32 delete m_physXGeometry;
33}
34
36{
37 return m_diameter;
38}
39
41{
42 if (!m_physXGeometry || m_scaleDirty) {
43 updatePhysXGeometry();
44 }
45 return m_physXGeometry;
46}
47
48void QSphereShape::setDiameter(float diameter)
49{
50 if (qFuzzyCompare(m_diameter, diameter))
51 return;
52
53 m_diameter = diameter;
54 updatePhysXGeometry();
55
56 emit needsRebuild(this);
57 emit diameterChanged(m_diameter);
58}
59
60void QSphereShape::updatePhysXGeometry()
61{
62 delete m_physXGeometry;
63 auto s = sceneScale();
64 m_physXGeometry = new physx::PxSphereGeometry(m_diameter * 0.5f * s.x());
65 m_scaleDirty = false;
66}
67
void needsRebuild(QObject *)
QVector3D sceneScale
void diameterChanged(float diameter)
physx::PxGeometry * getPhysXGeometry() override
void setDiameter(float diameter)
QSphereShape()
\qmltype SphereShape \inqmlmodule QtQuick3D.Physics \inherits CollisionShape
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