12#include <QtCore/QList>
13#include <QtQuick3D/QQuick3DGeometry>
21Q_MOC_INCLUDE(
"HeightField.h")
42 Q_PROPERTY(
int gridSize READ gridSize WRITE setGridSize NOTIFY gridSizeChanged)
43 Q_PROPERTY(qreal span READ span WRITE setSpan NOTIFY spanChanged)
44 Q_PROPERTY(QList<float> heights READ heights WRITE setHeights NOTIFY heightsChanged)
45 Q_PROPERTY(QList<int> edgeLodDeltas READ edgeLodDeltas WRITE setEdgeLodDeltas NOTIFY edgeLodDeltasChanged)
46 Q_PROPERTY(
HeightField* heightField READ heightField WRITE setHeightField NOTIFY heightFieldChanged)
51 static constexpr int kMinGridSize = 1;
53 static constexpr double kSkirtDepthFraction =
58 void setGridSize(
int gridSize);
60 qreal
span()
const {
return _span; }
62 void setSpan(qreal span);
65 QList<float>
heights()
const {
return _heights; }
67 void setHeights(
const QList<float>& heights);
84 void setEdgeLodDeltas(
int north,
int south,
int west,
int east);
89 return {_lodDelta[kNorth], _lodDelta[kSouth], _lodDelta[kWest], _lodDelta[kEast]};
92 void setEdgeLodDeltas(
const QList<int>& deltas);
102 void componentComplete()
override;
118 void _requestRebuild();
119 float _heightAt(
int row,
int col)
const;
120 float _rawHeightAt(
int row,
int col)
const;
123 qreal _span = 1000.0;
124 QList<float> _heights;
126 std::array<int, kEdgeCount> _lodDelta{};
static constexpr int kMaxGridSize
Sanity cap on patch density: rejects absurd sizes before allocation.
QList< int > edgeLodDeltas() const
QML-bindable form of the deltas: {north, south, west, east}.
HeightField * heightField() const
Field for sampleFromField to sample from; not owned, may be null.
QList< float > heights() const
(gridSize+1)^2 heights row-major from the north-west corner; empty = flat
void edgeLodDeltasChanged()
void heightFieldChanged()