openscenegraph
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
49};
50
51
53{
54 public:
55
57
60
62
63 virtual void setTerrainTile(TerrainTile* tile);
64 TerrainTile* getTerrainTile() { return _terrainTile; }
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
This class provides an object-oriented thread mutex interface.
Definition Mutex:31
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
Definition TerrainTechnique:53
virtual void cull(osgUtil::CullVisitor *nv)
TerrainTile * getTerrainTile()
Definition TerrainTechnique:64
TerrainTechnique(const TerrainTechnique &, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
virtual void cleanSceneGraph()
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)
virtual void setTerrainTile(TerrainTile *tile)
virtual void releaseGLObjects(osg::State *=0) const
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
TerrainTile * _terrainTile
Definition TerrainTechnique:95
virtual void addNeighbour(TerrainTile *tile)
Definition TerrainTechnique:84
Definition TerrainTile:68
Definition CullVisitor:49
Definition UpdateVisitor:38
Definition CopyOp:41
@ SHALLOW_COPY
Definition CopyOp:47
Definition NodeVisitor:82
Definition Object:61
Definition Observer:25
Definition State:80
Definition Node:29
#define OSGTERRAIN_EXPORT
Definition osgTerrain/Export:39