35 Q_PROPERTY(
float xExtent READ xExtent WRITE setXExtent NOTIFY xExtentChanged FINAL)
36 Q_PROPERTY(
float yExtent READ yExtent WRITE setYExtent NOTIFY yExtentChanged FINAL)
37 Q_PROPERTY(
float zExtent READ zExtent WRITE setZExtent NOTIFY zExtentChanged FINAL)
38 Q_PROPERTY(QSize yzMeshResolution READ yzMeshResolution WRITE setYzMeshResolution NOTIFY yzMeshResolutionChanged FINAL)
39 Q_PROPERTY(QSize xzMeshResolution READ xzMeshResolution WRITE setXzMeshResolution NOTIFY xzMeshResolutionChanged FINAL)
40 Q_PROPERTY(QSize xyMeshResolution READ xyMeshResolution WRITE setXyMeshResolution NOTIFY xyMeshResolutionChanged FINAL)
41 Q_PROPERTY(
bool asynchronous READ asynchronous WRITE setAsynchronous NOTIFY asynchronousChanged)
42 Q_PROPERTY(Status status READ status NOTIFY statusChanged)
44 QML_ADDED_IN_VERSION(6, 9)
46 enum Status { Null, Ready, Loading, Error };
49 explicit CuboidGeometry(QQuick3DObject *parent =
nullptr);
50 ~CuboidGeometry() override;
51 float xExtent()
const;
52 void setXExtent(
float newXExtent);
53 float yExtent()
const;
54 void setYExtent(
float newYExtent);
56 float zExtent()
const;
57 void setZExtent(
float newZExtent);
59 QSize yzMeshResolution()
const;
60 void setYzMeshResolution(
const QSize &newYzMeshResolution);
62 QSize xzMeshResolution()
const;
63 void setXzMeshResolution(
const QSize &newXzMeshResolution);
65 QSize xyMeshResolution()
const;
66 void setXyMeshResolution(
const QSize &newXyMeshResolution);
68 bool asynchronous()
const;
69 void setAsynchronous(
bool newAsynchronous);
71 Status status()
const;
74 void doUpdateGeometry();
75 void requestFinished();
78 void xExtentChanged();
79 void yExtentChanged();
80 void zExtentChanged();
81 void yzMeshResolutionChanged();
82 void xzMeshResolutionChanged();
83 void xyMeshResolutionChanged();
84 void asynchronousChanged();
89 QByteArray vertexData;
95 void scheduleGeometryUpdate();
96 void updateGeometry(
const GeometryData &geometryData);
98 static CuboidGeometry::GeometryData generateCuboidGeometry(
float xExtent,
101 QSize yzMeshResolution,
102 QSize xzMeshResolution,
103 QSize xyMeshResolution);
104#if QT_CONFIG(concurrent)
105 static void generateCuboidGeometryAsync(QPromise<CuboidGeometry::GeometryData> &promise,
109 QSize yzMeshResolution,
110 QSize xzMeshResolution,
111 QSize xyMeshResolution);
114 float m_xExtent = 100.0f;
115 float m_yExtent = 100.0f;
116 float m_zExtent = 100.0f;
117 QSize m_yzMeshResolution = QSize(2, 2);
118 QSize m_xzMeshResolution = QSize(2, 2);
119 QSize m_xyMeshResolution = QSize(2, 2);
120 bool m_asynchronous =
true;
121 Status m_status = Null;
122#if QT_CONFIG(concurrent)
123 QFuture<GeometryData> m_geometryDataFuture;
124 QFutureWatcher<GeometryData> m_geometryDataWatcher;
126 bool m_geometryUpdateRequested =
false;
127 bool m_pendingAsyncUpdate =
false;