OpenSceneGraph 3.6.5
TerrainTile
Go to the documentation of this file.
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2 *
3 * This library is open source and may be redistributed and/or modified under
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version. The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * OpenSceneGraph Public License for more details.
12*/
13
14#ifndef OSGTERRAIN_TERRAINTILE
15#define OSGTERRAIN_TERRAINTILE 1
16
17#include <osg/Group>
19
20#include <osgDB/ReaderWriter>
21
23#include <osgTerrain/Layer>
24#include <osgTerrain/Locator>
25
26namespace osgTerrain {
27
28class Terrain;
29
31{
32 public:
33
35
36 TileID(int in_level, int in_x, int in_y);
37
38 bool operator == (const TileID& rhs) const
39 {
40 return (level==rhs.level) && (x==rhs.x) && (y==rhs.y);
41 }
42
43 bool operator != (const TileID& rhs) const
44 {
45 return (level!=rhs.level) || (x!=rhs.x) || (y!=rhs.y);
46 }
47
48 bool operator < (const TileID& rhs) const
49 {
50 if (level<rhs.level) return true;
51 if (level>rhs.level) return false;
52 if (x<rhs.x) return true;
53 if (x>rhs.x) return false;
54 return y<rhs.y;
55 }
56
57 bool valid() const { return level>=0; }
58
59 int level;
60 int x;
61 int y;
62};
63
64
68{
69 public:
70
72
75
77
78 virtual void traverse(osg::NodeVisitor& nv);
79
81 void init(int dirtyMask, bool assumeMultiThreaded);
82
85
88
90 const Terrain* getTerrain() const { return _terrain; }
91
92
96 void setTileID(const TileID& tileID);
97
99 const TileID& getTileID() const { return _tileID; }
100
101
103 void setTerrainTechnique(TerrainTechnique* terrainTechnique);
104
105 template<class T> void setTerrainTechnique(const osg::ref_ptr<T>& terrainTechnique) { setTerrainTechnique(terrainTechnique.get()); }
106
109
112
113
116 void setLocator(Locator* locator) { _locator = locator; }
117
118 template<class T> void setLocator(const osg::ref_ptr<T>& locator) { setLocator(locator.get()); }
119
121 Locator* getLocator() { return _locator.get(); }
122
124 const Locator* getLocator() const { return _locator.get(); }
125
128
129 template<class T> void setElevationLayer(const osg::ref_ptr<T>& layer) { setElevationLayer(layer.get()); }
130
133
135 const Layer* getElevationLayer() const { return _elevationLayer.get(); }
136
137
139 void setColorLayer(unsigned int i, Layer* layer);
140
141 template<class T> void setColorLayer(unsigned int i, const osg::ref_ptr<T>& layer) { setColorLayer(i, layer.get()); }
142
144 Layer* getColorLayer(unsigned int i) { return i<_colorLayers.size() ? _colorLayers[i].get() : 0; }
145
147 const Layer* getColorLayer(unsigned int i) const { return i<_colorLayers.size() ? _colorLayers[i].get() : 0; }
148
150 unsigned int getNumColorLayers() const { return _colorLayers.size(); }
151
152
154 void setRequiresNormals(bool flag) { _requiresNormals = flag; }
155
157 bool getRequiresNormals() const { return _requiresNormals; }
158
159
162
165
166
174
177
180
181
199
201 void setDirty(bool dirty) { setDirtyMask(dirty ? ALL_DIRTY : NOT_DIRTY); }
202
204 int getDirty() const { return _dirtyMask!=NOT_DIRTY; }
205
206
208 void setDirtyMask(int dirtyMask);
209
211 int getDirtyMask() const { return _dirtyMask; }
212
213
216
219 {
220 virtual bool deferExternalLayerLoading() const = 0;
221 virtual void loaded(osgTerrain::TerrainTile* tile, const osgDB::ReaderWriter::Options* options) const = 0;
222 };
223
226
230 virtual void releaseGLObjects(osg::State* = 0) const;
231
232
233 protected:
234
235 virtual ~TerrainTile();
236
237 typedef std::vector< osg::ref_ptr<Layer> > Layers;
238
239 friend class Terrain;
240
242
245
247
250
252
254
258};
259
264{
265 public:
266
268
269 void allow(const std::string& setname) { _setWhiteList.insert(setname); }
270
271 void setMinimumNumOfLayers(unsigned int numLayers) { _minumumNumberOfLayers = numLayers; }
272 unsigned int getMinimumNumOfLayers() const { return _minumumNumberOfLayers; }
273
274 void setReplaceSwitchLayer(bool replaceSwitchLayer) { _replaceSwitchLayer = replaceSwitchLayer; }
276
277 void setAllowAll(bool allowAll) { _allowAll = allowAll; }
278 bool getAllowAll() const { return _allowAll; }
279
280 bool layerAcceptable(const std::string& setname) const;
282
283 virtual bool deferExternalLayerLoading() const;
284
285 virtual void loaded(osgTerrain::TerrainTile* tile, const osgDB::ReaderWriter::Options* options) const;
286
287 protected:
288
290
291 typedef std::set<std::string> SetWhiteList;
296
297};
298
299}
300
301#endif
BoundingSphered BoundingSphere
Definition BoundingSphere:308
The osgTerrain library is a NodeKit that provides geospecifc terrain rendering support.
Definition Node:29
Copy Op(erator) used to control whether shallow or deep copy is used during copy construction and clo...
Definition CopyOp:41
@ SHALLOW_COPY
Definition CopyOp:47
General group node which maintains a list of children.
Definition Group:29
Visitor for type safe operations on osg::Nodes.
Definition NodeVisitor:82
Smart pointer for handling referenced counted objects.
Definition ref_ptr:32
T * get() const
Definition ref_ptr:117
Base class for providing reference counted objects.
Definition Referenced:44
Encapsulates the current applied OpenGL modes, attributes and vertex arrays settings,...
Definition State:80
osgDB::Options Options
Definition ReaderWriter:227
Definition Layer:37
Definition Layer:303
Definition Locator:26
Definition TerrainTechnique:53
Definition TerrainTile:31
int level
Definition TerrainTile:59
bool valid() const
Definition TerrainTile:57
TileID(int in_level, int in_x, int in_y)
int y
Definition TerrainTile:61
int x
Definition TerrainTile:60
Terrain provides a framework for loosely coupling height field data with height rendering algorithms.
Definition TerrainTile:68
void setColorLayer(unsigned int i, Layer *layer)
Set a color layer with specified layer number.
const TileID & getTileID() const
Get the TileID (layer, x,y) of the TerrainTile.
Definition TerrainTile:99
static void setTileLoadedCallback(TileLoadedCallback *lc)
void setLocator(Locator *locator)
Set the coordinate frame locator of the terrain node.
Definition TerrainTile:116
void setLocator(const osg::ref_ptr< T > &locator)
Definition TerrainTile:118
void init(int dirtyMask, bool assumeMultiThreaded)
Call init on any attached TerrainTechnique.
osg::ref_ptr< TerrainTechnique > _terrainTechnique
Definition TerrainTile:248
bool _hasBeenTraversal
Definition TerrainTile:244
void setTerrain(Terrain *ts)
Set the Terrain that this Terrain tile is a member of.
bool getRequiresNormals() const
Get whether the TerrainTechnique should create per vertex normals for lighting purposes.
Definition TerrainTile:157
Terrain * getTerrain()
Get the Terrain that this Terrain tile is a member of.
Definition TerrainTile:87
TerrainTile(const TerrainTile &, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
Copy constructor using CopyOp to manage deep vs shallow copy.
static osg::ref_ptr< TileLoadedCallback > & getTileLoadedCallback()
DirtyMask
Definition TerrainTile:183
@ ELEVATION_DIRTY
Definition TerrainTile:186
@ BOTTOM_RIGHT_CORNER_DIRTY
Definition TerrainTile:194
@ EDGES_DIRTY
Definition TerrainTile:195
@ TOP_EDGE_DIRTY
Definition TerrainTile:189
@ TOP_LEFT_CORNER_DIRTY
Definition TerrainTile:190
@ RIGHT_EDGE_DIRTY
Definition TerrainTile:188
@ TOP_RIGHT_CORNER_DIRTY
Definition TerrainTile:191
@ IMAGERY_DIRTY
Definition TerrainTile:185
@ ALL_DIRTY
Definition TerrainTile:197
@ NOT_DIRTY
Definition TerrainTile:184
@ BOTTOM_LEFT_CORNER_DIRTY
Definition TerrainTile:193
@ BOTTOM_EDGE_DIRTY
Definition TerrainTile:192
@ LEFT_EDGE_DIRTY
Definition TerrainTile:187
void setColorLayer(unsigned int i, const osg::ref_ptr< T > &layer)
Definition TerrainTile:141
META_Node(osgTerrain, TerrainTile)
void setElevationLayer(Layer *layer)
Set the layer to use to define the elevations of the terrain.
Layer * getColorLayer(unsigned int i)
Get color layer with specified layer number.
Definition TerrainTile:144
virtual osg::BoundingSphere computeBound() const
Compute the bounding volume of the terrain by computing the union of the bounding volumes of all laye...
void setTreatBoundariesToValidDataAsDefaultValue(bool flag)
Set the hint to whether the TerrainTechnique should treat the invalid Layer entries that at are neigh...
Definition TerrainTile:161
BlendingPolicy getBlendingPolicy() const
Get the policy to use when deciding whether to enable/disable blending and use of transparent bin.
Definition TerrainTile:179
BlendingPolicy
Definition TerrainTile:168
@ ENABLE_BLENDING_WHEN_ALPHA_PRESENT
check colour layers for alpha value and if present enable blending.
Definition TerrainTile:172
@ ENABLE_BLENDING
Definition TerrainTile:171
@ INHERIT
Definition TerrainTile:169
@ DO_NOT_SET_BLENDING
Default - check for the any BlendingPolicy set on the enclosing osgTerrain::Terrain node,...
Definition TerrainTile:170
osg::ref_ptr< Layer > _elevationLayer
Definition TerrainTile:251
const Layer * getColorLayer(unsigned int i) const
Set const color layer with specified layer number.
Definition TerrainTile:147
const Layer * getElevationLayer() const
Get the const layer to use to define the elevations of the terrain.
Definition TerrainTile:135
virtual void releaseGLObjects(osg::State *=0) const
If State is non-zero, this function releases any associated OpenGL objects for the specified graphics...
void setTerrainTechnique(TerrainTechnique *terrainTechnique)
Set the TerrainTechnique.
virtual void traverse(osg::NodeVisitor &nv)
Traverse downwards : calls children's accept method with NodeVisitor.
void setTerrainTechnique(const osg::ref_ptr< T > &terrainTechnique)
Definition TerrainTile:105
friend class Terrain
Definition TerrainTile:239
const Locator * getLocator() const
Get the const coordinate frame locator of the terrain node.
Definition TerrainTile:124
bool _treatBoundariesToValidDataAsDefaultValue
Definition TerrainTile:256
unsigned int getNumColorLayers() const
Get the number of colour layers.
Definition TerrainTile:150
osg::ref_ptr< Locator > _locator
Definition TerrainTile:249
void setTileID(const TileID &tileID)
Set the TileID (layer, x,y) of the TerrainTile.
int getDirty() const
return true if the any of the DirtyMask are set.
Definition TerrainTile:204
bool getTreatBoundariesToValidDataAsDefaultValue() const
Get whether the TeatBoundariesToValidDataAsDefaultValue hint.
Definition TerrainTile:164
Layers _colorLayers
Definition TerrainTile:253
bool _requiresNormals
Definition TerrainTile:255
void setDirty(bool dirty)
Set the dirty flag on/off.
Definition TerrainTile:201
void setRequiresNormals(bool flag)
Set hint to whether the TerrainTechnique should create per vertex normals for lighting purposes.
Definition TerrainTile:154
const TerrainTechnique * getTerrainTechnique() const
Get the const TerrainTechnique.
Definition TerrainTile:111
int getDirtyMask() const
return true if the tile is dirty and needs to be updated,
Definition TerrainTile:211
BlendingPolicy _blendingPolicy
Definition TerrainTile:257
void setElevationLayer(const osg::ref_ptr< T > &layer)
Definition TerrainTile:129
Locator * getLocator()
Get the coordinate frame locator of the terrain node.
Definition TerrainTile:121
int _dirtyMask
Definition TerrainTile:243
void setDirtyMask(int dirtyMask)
Set the dirty flag on/off.
TerrainTechnique * getTerrainTechnique()
Get the TerrainTechnique.
Definition TerrainTile:108
Terrain * _terrain
Definition TerrainTile:241
Layer * getElevationLayer()
Get the layer to use to define the elevations of the terrain.
Definition TerrainTile:132
std::vector< osg::ref_ptr< Layer > > Layers
Definition TerrainTile:237
void setBlendingPolicy(BlendingPolicy policy)
Set the policy to use when deciding whether to enable/disable blending and use of transparent bin.
Definition TerrainTile:176
TileID _tileID
Definition TerrainTile:246
const Terrain * getTerrain() const
Get the const Terrain that this Terrain tile is a member of.
Definition TerrainTile:90
Callback for post processing loaded TerrainTile, and for filling in missing elements such as external...
Definition TerrainTile:219
virtual void loaded(osgTerrain::TerrainTile *tile, const osgDB::ReaderWriter::Options *options) const =0
virtual bool deferExternalLayerLoading() const =0
virtual void loaded(osgTerrain::TerrainTile *tile, const osgDB::ReaderWriter::Options *options) const
std::set< std::string > SetWhiteList
Definition TerrainTile:291
unsigned int getMinimumNumOfLayers() const
Definition TerrainTile:272
bool _replaceSwitchLayer
Definition TerrainTile:294
void setMinimumNumOfLayers(unsigned int numLayers)
Definition TerrainTile:271
void setReplaceSwitchLayer(bool replaceSwitchLayer)
Definition TerrainTile:274
bool getAllowAll() const
Definition TerrainTile:278
bool readImageLayer(osgTerrain::ImageLayer *imageLayer, const osgDB::ReaderWriter::Options *options) const
unsigned int _minumumNumberOfLayers
Definition TerrainTile:293
SetWhiteList _setWhiteList
Definition TerrainTile:292
bool layerAcceptable(const std::string &setname) const
void allow(const std::string &setname)
Definition TerrainTile:269
void setAllowAll(bool allowAll)
Definition TerrainTile:277
virtual bool deferExternalLayerLoading() const
bool _allowAll
Definition TerrainTile:295
bool getReplaceSwitchLayer() const
Definition TerrainTile:275
#define OSGTERRAIN_EXPORT
Definition Export:39

osg logo
Generated at Wed Jul 23 2025 00:00:00 for the OpenSceneGraph by doxygen 1.14.0.