OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PagedLOD.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 OSG_PagedLOD
15 #define OSG_PagedLOD 1
16 
17 #include <osg/LOD>
18 
19 namespace osg {
20 
23 class OSG_EXPORT PagedLOD : public LOD
24 {
25  public :
26 
27  PagedLOD();
28 
30  PagedLOD(const PagedLOD&,const CopyOp& copyop=CopyOp::SHALLOW_COPY);
31 
33 
34 
35 
36  virtual void traverse(NodeVisitor& nv);
37 
38  virtual bool addChild(Node *child);
39 
40  virtual bool addChild(Node *child, float min, float max);
41 
42  virtual bool addChild(Node *child, float min, float max,const std::string& filename, float priorityOffset=0.0f, float priorityScale=1.0f);
43 
44  virtual bool removeChildren(unsigned int pos,unsigned int numChildrenToRemove=1);
45 
46 
48  void setDatabaseOptions(osg::Referenced* options) { _databaseOptions = options; }
49 
51  osg::Referenced* getDatabaseOptions() { return _databaseOptions.get(); }
52 
54  const osg::Referenced* getDatabaseOptions() const { return _databaseOptions.get(); }
55 
56 
58  void setDatabasePath(const std::string& path);
59 
61  inline const std::string& getDatabasePath() const { return _databasePath; }
62 
63 
65  {
66  PerRangeData();
67  PerRangeData(const PerRangeData& prd);
68  PerRangeData& operator = (const PerRangeData& prd);
69 
70  std::string _filename;
74  unsigned int _minExpiryFrames;
75  double _timeStamp;
76  unsigned int _frameNumber;
79  };
80 
81  typedef std::vector<PerRangeData> PerRangeDataList;
82 
83  void setFileName(unsigned int childNo, const std::string& filename) { expandPerRangeDataTo(childNo); _perRangeDataList[childNo]._filename=filename; }
84  const std::string& getFileName(unsigned int childNo) const { return _perRangeDataList[childNo]._filename; }
85  unsigned int getNumFileNames() const { return static_cast<unsigned int>(_perRangeDataList.size()); }
86 
87 
88  void setPriorityOffset(unsigned int childNo, float priorityOffset) { expandPerRangeDataTo(childNo); _perRangeDataList[childNo]._priorityOffset=priorityOffset; }
89  float getPriorityOffset(unsigned int childNo) const { return _perRangeDataList[childNo]._priorityOffset; }
90  unsigned int getNumPriorityOffsets() const { return static_cast<unsigned int>(_perRangeDataList.size()); }
91 
92  void setPriorityScale(unsigned int childNo, float priorityScale) { expandPerRangeDataTo(childNo); _perRangeDataList[childNo]._priorityScale=priorityScale; }
93  float getPriorityScale(unsigned int childNo) const { return _perRangeDataList[childNo]._priorityScale; }
94  unsigned int getNumPriorityScales() const { return static_cast<unsigned int>(_perRangeDataList.size()); }
95 
97  void setMinimumExpiryTime(unsigned int childNo, double minTime) { expandPerRangeDataTo(childNo); _perRangeDataList[childNo]._minExpiryTime=minTime; }
98  double getMinimumExpiryTime(unsigned int childNo) const { return _perRangeDataList[childNo]._minExpiryTime; }
99  unsigned int getNumMinimumExpiryTimes() const { return static_cast<unsigned int>(_perRangeDataList.size()); }
100 
102  void setMinimumExpiryFrames(unsigned int childNo, unsigned int minFrames) { expandPerRangeDataTo(childNo); _perRangeDataList[childNo]._minExpiryFrames=minFrames; }
103  unsigned int getMinimumExpiryFrames(unsigned int childNo) const { return _perRangeDataList[childNo]._minExpiryFrames; }
104  unsigned int getNumMinimumExpiryFrames() const { return static_cast<unsigned int>(_perRangeDataList.size()); }
105 
106 
107  void setTimeStamp(unsigned int childNo, double timeStamp) { expandPerRangeDataTo(childNo); _perRangeDataList[childNo]._timeStamp=timeStamp; }
108  double getTimeStamp(unsigned int childNo) const { return _perRangeDataList[childNo]._timeStamp; }
109  unsigned int getNumTimeStamps() const { return static_cast<unsigned int>(_perRangeDataList.size()); }
110 
111  void setFrameNumber(unsigned int childNo, unsigned int frameNumber) { expandPerRangeDataTo(childNo); _perRangeDataList[childNo]._frameNumber=frameNumber; }
112  unsigned getFrameNumber(unsigned int childNo) const { return _perRangeDataList[childNo]._frameNumber; }
113  unsigned int getNumFrameNumbers() const { return static_cast<unsigned int>(_perRangeDataList.size()); }
114 
115 
120  osg::ref_ptr<osg::Referenced>& getDatabaseRequest(unsigned int childNo) { return _perRangeDataList[childNo]._databaseRequest; }
121 
123  const osg::ref_ptr<osg::Referenced>& getDatabaseRequest(unsigned int childNo) const { return _perRangeDataList[childNo]._databaseRequest; }
124 
125 
129  inline void setFrameNumberOfLastTraversal(unsigned int frameNumber) { _frameNumberOfLastTraversal=frameNumber; }
130 
132  inline unsigned int getFrameNumberOfLastTraversal() const { return _frameNumberOfLastTraversal; }
133 
134 
136  inline void setNumChildrenThatCannotBeExpired(unsigned int num) { _numChildrenThatCannotBeExpired = num; }
137 
139  unsigned int getNumChildrenThatCannotBeExpired() const { return _numChildrenThatCannotBeExpired; }
140 
142  void setDisableExternalChildrenPaging(bool flag) { _disableExternalChildrenPaging = flag; }
143 
144  bool getDisableExternalChildrenPaging() const { return _disableExternalChildrenPaging; }
145 
146 
147 
152  virtual bool removeExpiredChildren(double expiryTime, unsigned int expiryFrame, NodeList& removedChildren);
153 
154  protected :
155 
156  virtual ~PagedLOD();
157 
158  void expandPerRangeDataTo(unsigned int pos);
159 
161  std::string _databasePath;
162 
166 
167  PerRangeDataList _perRangeDataList;
168 };
169 
170 }
171 
172 #endif
unsigned int getNumPriorityScales() const
Definition: PagedLOD.h:94
#define OSG_EXPORT
Definition: Export.h:43
unsigned int getFrameNumberOfLastTraversal() const
Definition: PagedLOD.h:132
const std::string & getFileName(unsigned int childNo) const
Definition: PagedLOD.h:84
void setTimeStamp(unsigned int childNo, double timeStamp)
Definition: PagedLOD.h:107
unsigned int _numChildrenThatCannotBeExpired
Definition: PagedLOD.h:164
unsigned int getNumChildrenThatCannotBeExpired() const
Definition: PagedLOD.h:139
unsigned int getNumFileNames() const
Definition: PagedLOD.h:85
unsigned int getNumMinimumExpiryFrames() const
Definition: PagedLOD.h:104
const osg::ref_ptr< osg::Referenced > & getDatabaseRequest(unsigned int childNo) const
Definition: PagedLOD.h:123
bool _disableExternalChildrenPaging
Definition: PagedLOD.h:165
float getPriorityOffset(unsigned int childNo) const
Definition: PagedLOD.h:89
osg::ref_ptr< osg::Referenced > _databaseRequest
Definition: PagedLOD.h:78
unsigned int getNumPriorityOffsets() const
Definition: PagedLOD.h:90
void setPriorityOffset(unsigned int childNo, float priorityOffset)
Definition: PagedLOD.h:88
const osg::Referenced * getDatabaseOptions() const
Definition: PagedLOD.h:54
#define META_Node(library, name)
Definition: Node.h:59
osg::ref_ptr< osg::Referenced > & getDatabaseRequest(unsigned int childNo)
Definition: PagedLOD.h:120
unsigned getFrameNumber(unsigned int childNo) const
Definition: PagedLOD.h:112
void setPriorityScale(unsigned int childNo, float priorityScale)
Definition: PagedLOD.h:92
float getPriorityScale(unsigned int childNo) const
Definition: PagedLOD.h:93
void setFrameNumber(unsigned int childNo, unsigned int frameNumber)
Definition: PagedLOD.h:111
unsigned int getMinimumExpiryFrames(unsigned int childNo) const
Definition: PagedLOD.h:103
Definition: LOD.h:35
double getMinimumExpiryTime(unsigned int childNo) const
Definition: PagedLOD.h:98
unsigned int _frameNumberOfLastTraversal
Definition: PagedLOD.h:163
PerRangeDataList _perRangeDataList
Definition: PagedLOD.h:167
std::string _databasePath
Definition: PagedLOD.h:161
double getTimeStamp(unsigned int childNo) const
Definition: PagedLOD.h:108
const std::string & getDatabasePath() const
Definition: PagedLOD.h:61
unsigned int _frameNumber
Definition: PagedLOD.h:76
unsigned int getNumFrameNumbers() const
Definition: PagedLOD.h:113
osg::Referenced * getDatabaseOptions()
Definition: PagedLOD.h:51
unsigned int _frameNumberOfLastReleaseGLObjects
Definition: PagedLOD.h:77
void setDisableExternalChildrenPaging(bool flag)
Definition: PagedLOD.h:142
void setMinimumExpiryTime(unsigned int childNo, double minTime)
Definition: PagedLOD.h:97
void setMinimumExpiryFrames(unsigned int childNo, unsigned int minFrames)
Definition: PagedLOD.h:102
void setNumChildrenThatCannotBeExpired(unsigned int num)
Definition: PagedLOD.h:136
void setFrameNumberOfLastTraversal(unsigned int frameNumber)
Definition: PagedLOD.h:129
Definition: Node.h:71
Definition: AlphaFunc.h:19
std::vector< ref_ptr< Node > > NodeList
Definition: Group.h:22
bool getDisableExternalChildrenPaging() const
Definition: PagedLOD.h:144
unsigned int _minExpiryFrames
Definition: PagedLOD.h:74
ref_ptr< Referenced > _databaseOptions
Definition: PagedLOD.h:160
std::vector< PerRangeData > PerRangeDataList
Definition: PagedLOD.h:81
unsigned int getNumMinimumExpiryTimes() const
Definition: PagedLOD.h:99
void setDatabaseOptions(osg::Referenced *options)
Definition: PagedLOD.h:48
void setFileName(unsigned int childNo, const std::string &filename)
Definition: PagedLOD.h:83
unsigned int getNumTimeStamps() const
Definition: PagedLOD.h:109