openscenegraph
VolumeTile
Go to the documentation of this file.
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2009 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 OSGVOLUME_tile
15#define OSGVOLUME_tile 1
16
17#include <osg/Group>
18#include <osg/Image>
19
20#include <osgDB/ReaderWriter>
21
22#include <osgVolume/Layer>
24
25namespace osgVolume {
26
27class Volume;
28
30{
31 public:
32
34
35 TileID(int in_level, int in_x, int in_y, int in_z);
36
37 bool operator == (const TileID& rhs) const
38 {
39 return (level==rhs.level) && (x==rhs.x) && (y==rhs.y) && (z==rhs.z);
40 }
41
42 bool operator != (const TileID& rhs) const
43 {
44 return (level!=rhs.level) || (x!=rhs.x) || (y!=rhs.y) || (z!=rhs.z);
45 }
46
47 bool operator < (const TileID& rhs) const
48 {
49 if (level<rhs.level) return true;
50 if (level>rhs.level) return false;
51 if (x<rhs.x) return true;
52 if (x>rhs.x) return false;
53 if (y<rhs.y) return true;
54 if (y>rhs.y) return false;
55 return z<rhs.z;
56 }
57
58 bool valid() const { return level>=0; }
59
60 int level;
61 int x;
62 int y;
63 int z;
64};
65
66
70{
71 public:
72
74
77
79
80 virtual void traverse(osg::NodeVisitor& nv);
81
83 void init();
84
85
87 void setVolume(Volume* ts);
88
90 Volume* getVolume() { return _volume; }
91
93 const Volume* getVolume() const { return _volume; }
94
95
99 void setTileID(const TileID& tileID);
100
102 const TileID& getTileID() const { return _tileID; }
103
104
105 void setLocator(Locator* locator) { _locator = locator; }
106 Locator* getLocator() { return _locator.get(); }
107 const Locator* getLocator() const { return _locator.get(); }
108
109
110 void setLayer(Layer* layer);
111 Layer* getLayer() { return _layer.get(); }
112 const Layer* getLayer() const { return _layer.get(); }
113
114
115
118
120 VolumeTechnique* getVolumeTechnique() { return _volumeTechnique.get(); }
121
123 const VolumeTechnique* getVolumeTechnique() const { return _volumeTechnique.get(); }
124
125
127 void setDirty(bool dirty);
128
130 bool getDirty() const { return _dirty; }
131
132
134
135 protected:
136
137 virtual ~VolumeTile();
138
139 friend class Volume;
140
142
143 bool _dirty;
145
147
149
151
153};
154
155}
156
157#endif
Definition osgVolume/Layer:57
Definition osgVolume/Locator:30
Definition VolumeTile:30
int level
Definition VolumeTile:60
bool valid() const
Definition VolumeTile:58
TileID(int in_level, int in_x, int in_y, int in_z)
int y
Definition VolumeTile:62
int z
Definition VolumeTile:63
int x
Definition VolumeTile:61
Definition VolumeTechnique:46
Definition VolumeTile:70
META_Node(osgVolume, VolumeTile)
VolumeTechnique * getVolumeTechnique()
Definition VolumeTile:120
void setLocator(Locator *locator)
Definition VolumeTile:105
VolumeTile(const VolumeTile &, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
bool getDirty() const
Definition VolumeTile:130
Locator * getLocator()
Definition VolumeTile:106
osg::ref_ptr< VolumeTechnique > _volumeTechnique
Definition VolumeTile:148
Volume * getVolume()
Definition VolumeTile:90
TileID _tileID
Definition VolumeTile:146
const Locator * getLocator() const
Definition VolumeTile:107
const Volume * getVolume() const
Definition VolumeTile:93
void setTileID(const TileID &tileID)
void setVolume(Volume *ts)
bool _dirty
Definition VolumeTile:143
Volume * _volume
Definition VolumeTile:141
bool _hasBeenTraversal
Definition VolumeTile:144
void setLayer(Layer *layer)
osg::ref_ptr< Locator > _locator
Definition VolumeTile:150
void setVolumeTechnique(VolumeTechnique *VolumeTechnique)
osg::ref_ptr< Layer > _layer
Definition VolumeTile:152
const Layer * getLayer() const
Definition VolumeTile:112
Layer * getLayer()
Definition VolumeTile:111
const TileID & getTileID() const
Definition VolumeTile:102
virtual void traverse(osg::NodeVisitor &nv)
const VolumeTechnique * getVolumeTechnique() const
Definition VolumeTile:123
void setDirty(bool dirty)
virtual osg::BoundingSphere computeBound() const
Definition Volume:27
Definition BoundingSphere:35
Definition CopyOp:41
@ SHALLOW_COPY
Definition CopyOp:47
Definition Group:29
Definition NodeVisitor:82
Definition ref_ptr:32
#define OSGVOLUME_EXPORT
Definition osgVolume/Export:39