33 Q_PROPERTY(
float xExtent READ xExtent WRITE setXExtent NOTIFY xExtentChanged FINAL)
34 Q_PROPERTY(
float yExtent READ yExtent WRITE setYExtent NOTIFY yExtentChanged FINAL)
35 Q_PROPERTY(
float zExtent READ zExtent WRITE setZExtent NOTIFY zExtentChanged FINAL)
36 Q_PROPERTY(QSize yzMeshResolution READ yzMeshResolution WRITE setYzMeshResolution NOTIFY yzMeshResolutionChanged FINAL)
37 Q_PROPERTY(QSize xzMeshResolution READ xzMeshResolution WRITE setXzMeshResolution NOTIFY xzMeshResolutionChanged FINAL)
38 Q_PROPERTY(QSize xyMeshResolution READ xyMeshResolution WRITE setXyMeshResolution NOTIFY xyMeshResolutionChanged FINAL)
39 Q_PROPERTY(
bool asynchronous READ asynchronous WRITE setAsynchronous NOTIFY asynchronousChanged)
40 Q_PROPERTY(Status status READ status NOTIFY statusChanged)
42 QML_ADDED_IN_VERSION(6, 9)
44 enum Status { Null, Ready, Loading, Error };
47 explicit CuboidGeometry(QQuick3DObject *parent =
nullptr);
48 ~CuboidGeometry() override;
49 float xExtent()
const;
50 void setXExtent(
float newXExtent);
51 float yExtent()
const;
52 void setYExtent(
float newYExtent);
54 float zExtent()
const;
55 void setZExtent(
float newZExtent);
57 QSize yzMeshResolution()
const;
58 void setYzMeshResolution(
const QSize &newYzMeshResolution);
60 QSize xzMeshResolution()
const;
61 void setXzMeshResolution(
const QSize &newXzMeshResolution);
63 QSize xyMeshResolution()
const;
64 void setXyMeshResolution(
const QSize &newXyMeshResolution);
66 bool asynchronous()
const;
67 void setAsynchronous(
bool newAsynchronous);
69 Status status()
const;
72 void doUpdateGeometry();
73 void requestFinished();
76 void xExtentChanged();
77 void yExtentChanged();
78 void zExtentChanged();
79 void yzMeshResolutionChanged();
80 void xzMeshResolutionChanged();
81 void xyMeshResolutionChanged();
82 void asynchronousChanged();
87 QByteArray vertexData;
93 void scheduleGeometryUpdate();
94 void updateGeometry(
const GeometryData &geometryData);
96 static CuboidGeometry::GeometryData generateCuboidGeometry(
float xExtent,
99 QSize yzMeshResolution,
100 QSize xzMeshResolution,
101 QSize xyMeshResolution);
102#if QT_CONFIG(concurrent)
103 static void generateCuboidGeometryAsync(QPromise<CuboidGeometry::GeometryData> &promise,
107 QSize yzMeshResolution,
108 QSize xzMeshResolution,
109 QSize xyMeshResolution);
112 float m_xExtent = 100.0f;
113 float m_yExtent = 100.0f;
114 float m_zExtent = 100.0f;
115 QSize m_yzMeshResolution = QSize(2, 2);
116 QSize m_xzMeshResolution = QSize(2, 2);
117 QSize m_xyMeshResolution = QSize(2, 2);
118 bool m_asynchronous =
true;
119 Status m_status = Null;
120#if QT_CONFIG(concurrent)
121 QFuture<GeometryData> m_geometryDataFuture;
122 QFutureWatcher<GeometryData> m_geometryDataWatcher;
124 bool m_geometryUpdateRequested =
false;
125 bool m_pendingAsyncUpdate =
false;