OpenSceneGraph 3.6.5
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
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
BoundingSphered BoundingSphere
Definition BoundingSphere:308
The osgVolume library is a NodeKit that extends the core scene graph to support volume rendering.
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
Base class for representing a single layer of volume data.
Definition Layer:57
Definition Locator:30
Definition VolumeTechnique:46
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
META_Node(osgVolume, VolumeTile)
VolumeTechnique * getVolumeTechnique()
Get the VolumeTechnique that will be used to render this tile.
Definition VolumeTile:120
void setLocator(Locator *locator)
Definition VolumeTile:105
VolumeTile(const VolumeTile &, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
Copy constructor using CopyOp to manage deep vs shallow copy.
bool getDirty() const
return true if the tile is dirty and needs to be updated,
Definition VolumeTile:130
Locator * getLocator()
Definition VolumeTile:106
osg::ref_ptr< VolumeTechnique > _volumeTechnique
Definition VolumeTile:148
Volume * getVolume()
Get the Volume that this Volume tile is a member of.
Definition VolumeTile:90
TileID _tileID
Definition VolumeTile:146
const Locator * getLocator() const
Definition VolumeTile:107
const Volume * getVolume() const
Get the const Volume that this Volume tile is a member of.
Definition VolumeTile:93
void setTileID(const TileID &tileID)
Set the TileID (layer, x,y,z) of the VolumeTile.
void setVolume(Volume *ts)
Set the Volume that this Volume tile is a member of.
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)
Set the VolumeTechnique that will be used to render this tile.
friend class Volume
Definition VolumeTile:139
osg::ref_ptr< Layer > _layer
Definition VolumeTile:152
void init()
Call init on any attached TerrainTechnique.
const Layer * getLayer() const
Definition VolumeTile:112
Layer * getLayer()
Definition VolumeTile:111
const TileID & getTileID() const
Get the TileID (layer, x,y,z) of the VolumeTile.
Definition VolumeTile:102
virtual void traverse(osg::NodeVisitor &nv)
Traverse downwards : calls children's accept method with NodeVisitor.
const VolumeTechnique * getVolumeTechnique() const
Get the const VolumeTechnique that will be used to render this tile.
Definition VolumeTile:123
void setDirty(bool dirty)
Set the dirty flag on/off.
virtual osg::BoundingSphere computeBound() const
Compute the bounding sphere around Node's geometry or children.
#define OSGVOLUME_EXPORT
Definition Export:39

osg logo
Generated at Sun Jul 20 2025 00:00:00 for the OpenSceneGraph by doxygen 1.14.0.