Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qtrianglemeshshape.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
5
6#include <QtQuick3D/QQuick3DGeometry>
7#include <extensions/PxExtensionsAPI.h>
8
10
11//########################################################################################
12// NOTE:
13// Triangle mesh, heightfield or plane geometry shapes configured as eSIMULATION_SHAPE are
14// not supported for non-kinematic PxRigidDynamic instances.
15//########################################################################################
16
18
46
48{
49 delete m_meshGeometry;
50 if (m_mesh)
52}
53
55{
56 if (m_dirtyPhysx || m_scaleDirty) {
57 updatePhysXGeometry();
58 }
59 return m_meshGeometry;
60}
61
62void QTriangleMeshShape::updatePhysXGeometry()
63{
64 delete m_meshGeometry;
65 m_meshGeometry = nullptr;
66
67 if (!m_mesh)
68 return;
69 auto *triangleMesh = m_mesh->triangleMesh();
70 if (!triangleMesh)
71 return;
72
73 auto meshScale = sceneScale();
74 physx::PxMeshScale scale(physx::PxVec3(meshScale.x(), meshScale.y(), meshScale.z()),
75 physx::PxQuat(physx::PxIdentity));
76
77 m_meshGeometry = new physx::PxTriangleMeshGeometry(triangleMesh, scale);
78 m_dirtyPhysx = false;
79}
80
82{
83 return m_meshSource;
84}
85
86void QTriangleMeshShape::setSource(const QUrl &newSource)
87{
88 if (m_meshSource == newSource)
89 return;
90 m_meshSource = newSource;
91 m_mesh = QQuick3DPhysicsMeshManager::getMesh(m_meshSource, this);
92
93 updatePhysXGeometry();
94
95 emit needsRebuild(this);
96 emit sourceChanged();
97}
98
void needsRebuild(QObject *)
QVector3D sceneScale
QVector3D scale
static void releaseMesh(QQuick3DPhysicsMesh *mesh)
static QQuick3DPhysicsMesh * getMesh(const QUrl &source, const QObject *contextObject)
physx::PxTriangleMesh * triangleMesh()
physx::PxGeometry * getPhysXGeometry() override
QTriangleMeshShape()
\qmltype TriangleMeshShape \inqmlmodule QtQuick3D.Physics \inherits CollisionShape
\inmodule QtCore
Definition qurl.h:94
Combined button and popup list for selecting options.
GLenum GLenum GLenum GLenum GLenum scale
#define emit