OpenSceneGraph 3.6.5
TerrainTechnique
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_TERRAINTECHNIQUE
15#define OSGTERRAIN_TERRAINTECHNIQUE 1
16
17#include <osg/Object>
18
19#include <osgUtil/UpdateVisitor>
20#include <osgUtil/CullVisitor>
21
22#include <osgTerrain/Export>
23
24namespace osgTerrain {
25
26class TerrainTile;
27
29{
30 public:
31
34
35 void clear();
38 bool containsNeighbour(TerrainTile* tile) const;
39
40 protected:
41
43 TerrainNeighbours& operator = (const TerrainNeighbours& /*rhs*/) { return *this; }
44
45 typedef std::set<TerrainTile*> Neighbours;
46
47 mutable OpenThreads::Mutex _neighboursMutex;
49};
50
51
53{
54 public:
55
57
60
62
63 virtual void setTerrainTile(TerrainTile* tile);
65 const TerrainTile* getTerrainTile() const { return _terrainTile; }
66
67 virtual void init(int dirtyMask, bool assumeMultiThreaded);
68
69 virtual void update(osgUtil::UpdateVisitor* nv);
70
71 virtual void cull(osgUtil::CullVisitor* nv);
72
74 virtual void cleanSceneGraph();
75
77 virtual void traverse(osg::NodeVisitor& nv);
78
82 virtual void releaseGLObjects(osg::State* = 0) const {}
83
84 virtual void addNeighbour(TerrainTile* tile) { _neighbours.addNeighbour(tile); }
85 virtual void removeNeighbour(TerrainTile* tile) { _neighbours.removeNeighbour(tile); }
86 virtual bool containsNeighbour(TerrainTile* tile) { return _neighbours.containsNeighbour(tile); }
87
88
89 protected:
90
92
94
96
97
99
100};
101
102}
103
104#endif
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
Visitor for type safe operations on osg::Nodes.
Definition NodeVisitor:82
Base class/standard interface for objects which require IO support, cloning and reference counting.
Definition Object:61
Observer base class for tracking when objects are unreferenced (their reference count goes to 0) and ...
Definition Observer:25
Encapsulates the current applied OpenGL modes, attributes and vertex arrays settings,...
Definition State:80
Definition TerrainTechnique:29
std::set< TerrainTile * > Neighbours
Definition TerrainTechnique:45
OpenThreads::Mutex _neighboursMutex
Definition TerrainTechnique:47
TerrainNeighbours(const TerrainNeighbours &)
Definition TerrainTechnique:42
void addNeighbour(TerrainTile *tile)
void removeNeighbour(TerrainTile *tile)
bool containsNeighbour(TerrainTile *tile) const
Neighbours _neighbours
Definition TerrainTechnique:48
virtual void cull(osgUtil::CullVisitor *nv)
TerrainTile * getTerrainTile()
Definition TerrainTechnique:64
TerrainTechnique(const TerrainTechnique &, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
Copy constructor using CopyOp to manage deep vs shallow copy.
virtual void cleanSceneGraph()
Clean scene graph from any terrain technique specific nodes.
virtual void update(osgUtil::UpdateVisitor *nv)
const TerrainTile * getTerrainTile() const
Definition TerrainTechnique:65
TerrainNeighbours _neighbours
Definition TerrainTechnique:98
META_Object(osgTerrain, TerrainTechnique)
virtual void traverse(osg::NodeVisitor &nv)
Traverse the terrain subgraph.
virtual void setTerrainTile(TerrainTile *tile)
virtual void releaseGLObjects(osg::State *=0) const
If State is non-zero, this function releases any associated OpenGL objects for the specified graphics...
Definition TerrainTechnique:82
virtual bool containsNeighbour(TerrainTile *tile)
Definition TerrainTechnique:86
virtual void init(int dirtyMask, bool assumeMultiThreaded)
virtual void removeNeighbour(TerrainTile *tile)
Definition TerrainTechnique:85
friend class osgTerrain::TerrainTile
Definition TerrainTechnique:93
TerrainTile * _terrainTile
Definition TerrainTechnique:95
virtual void addNeighbour(TerrainTile *tile)
Definition TerrainTechnique:84
Terrain provides a framework for loosely coupling height field data with height rendering algorithms.
Definition TerrainTile:68
Basic NodeVisitor implementation for rendering a scene.
Definition CullVisitor:49
Basic UpdateVisitor implementation for animating a scene.
Definition UpdateVisitor:38
#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.