OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Terrain.h
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
15 #define OSGTerrain 1
16 
17 #include <osg/CoordinateSystemNode>
18 #include <OpenThreads/ReentrantMutex>
19 
20 #include <osgTerrain/TerrainTile>
21 #include <osgTerrain/GeometryPool>
22 
23 namespace osgTerrain {
24 
28 {
29  public:
30 
31  Terrain();
32 
35 
37 
38  virtual void traverse(osg::NodeVisitor& nv);
39 
40  virtual osgTerrain::Terrain* asTerrain() { return this; }
41  virtual const osgTerrain::Terrain* asTerrain() const { return this; }
42 
43 
46  void setSampleRatio(float ratio);
47 
49  float getSampleRatio() const { return _sampleRatio; }
50 
51 
53  void setVerticalScale(float scale);
54 
56  float getVerticalScale() const { return _verticalScale; }
57 
58 
63  void setBlendingPolicy(TerrainTile::BlendingPolicy policy);
64 
66  TerrainTile::BlendingPolicy getBlendingPolicy() const { return _blendingPolicy; }
67 
72  void setEqualizeBoundaries(bool equalizeBoundaries);
73 
75  bool getEqualizeBoundaries() const { return _equalizeBoundaries; }
76 
77 
79  void setGeometryPool(GeometryPool* gp) { _geometryPool = gp; }
80 
82  GeometryPool* getGeometryPool() { return _geometryPool.get(); }
83 
85  const GeometryPool* getGeometryPool() const { return _geometryPool.get(); }
86 
87 
88 
90  TerrainTile* getTile(const TileID& tileID);
91 
93  const TerrainTile* getTile(const TileID& tileID) const;
94 
96  void setTerrainTechniquePrototype(TerrainTechnique* technique) { _terrainTechnique = technique; }
97 
99  TerrainTechnique* getTerrainTechniquePrototype() { return _terrainTechnique.get(); }
100 
102  const TerrainTechnique* getTerrainTechniquePrototype() const { return _terrainTechnique.get(); }
103 
105  void updateTerrainTileOnNextFrame(TerrainTile* terrainTile);
106 
107  protected:
108 
109  virtual ~Terrain();
110 
111  friend class TerrainTile;
112 
113  void dirtyRegisteredTiles(int dirtyMask = TerrainTile::ALL_DIRTY);
114 
115  void registerTerrainTile(TerrainTile* tile);
116  void unregisterTerrainTile(TerrainTile* tile);
117 
118  typedef std::map< TileID, TerrainTile* > TerrainTileMap;
119  typedef std::set< TerrainTile* > TerrainTileSet;
120 
126 
128  TerrainTileSet _terrainTileSet;
129  TerrainTileMap _terrainTileMap;
130  TerrainTileSet _updateTerrainTileSet;
131 
133 };
134 
135 }
136 
137 #endif
TerrainTileSet _terrainTileSet
Definition: Terrain.h:128
OpenThreads::ReentrantMutex _mutex
Definition: Terrain.h:127
void setGeometryPool(GeometryPool *gp)
Definition: Terrain.h:79
std::map< TileID, TerrainTile * > TerrainTileMap
Definition: Terrain.h:118
bool _equalizeBoundaries
Definition: Terrain.h:124
void setTerrainTechniquePrototype(TerrainTechnique *technique)
Definition: Terrain.h:96
TerrainTile::BlendingPolicy _blendingPolicy
Definition: Terrain.h:123
#define META_Node(library, name)
Definition: Node.h:59
GeometryPool * getGeometryPool()
Definition: Terrain.h:82
float _verticalScale
Definition: Terrain.h:122
#define OSGTERRAIN_EXPORT
Definition: Export.h:39
std::set< TerrainTile * > TerrainTileSet
Definition: Terrain.h:119
float getVerticalScale() const
Definition: Terrain.h:56
TerrainTileMap _terrainTileMap
Definition: Terrain.h:129
TerrainTileSet _updateTerrainTileSet
Definition: Terrain.h:130
TerrainTile::BlendingPolicy getBlendingPolicy() const
Definition: Terrain.h:66
osg::ref_ptr< TerrainTechnique > _terrainTechnique
Definition: Terrain.h:132
virtual osgTerrain::Terrain * asTerrain()
Definition: Terrain.h:40
TerrainTechnique * getTerrainTechniquePrototype()
Definition: Terrain.h:99
virtual const osgTerrain::Terrain * asTerrain() const
Definition: Terrain.h:41
const TerrainTechnique * getTerrainTechniquePrototype() const
Definition: Terrain.h:102
bool getEqualizeBoundaries() const
Definition: Terrain.h:75
float getSampleRatio() const
Definition: Terrain.h:49
const GeometryPool * getGeometryPool() const
Definition: Terrain.h:85
osg::ref_ptr< GeometryPool > _geometryPool
Definition: Terrain.h:125