OpenSceneGraph 3.6.5
ValueObject
Go to the documentation of this file.
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 2011 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_VALUEOBJECT
15#define OSG_VALUEOBJECT 1
16
17#include <osg/Object>
18#include <osg/UserDataContainer>
19#include <osg/BoundingBox>
20#include <osg/BoundingSphere>
21
22#include <typeinfo>
23
24namespace osg {
25
26// forward declare core OSG math classes
27class Vec2b;
28class Vec3b;
29class Vec4b;
30class Vec2ub;
31class Vec3ub;
32class Vec4ub;
33
34class Vec2s;
35class Vec3s;
36class Vec4s;
37class Vec2us;
38class Vec3us;
39class Vec4us;
40
41class Vec2i;
42class Vec3i;
43class Vec4i;
44class Vec2ui;
45class Vec3ui;
46class Vec4ui;
47
48class Vec2f;
49class Vec3f;
50class Vec4f;
51
52class Vec2d;
53class Vec3d;
54class Vec4d;
55
56class Quat;
57class Plane;
58class Matrixf;
59class Matrixd;
60
61template<typename T>
62class GetScalarValue;
63template<typename T>
64class SetScalarValue;
65
66class ValueObject : public Object
67{
68 public:
69
70 ValueObject() : Object(true) {}
71 ValueObject(const std::string& name) : Object(true) { setName(name); }
72 ValueObject(const ValueObject& rhs, const osg::CopyOp copyop=osg::CopyOp::SHALLOW_COPY): Object(rhs,copyop) {}
73
75
76
78 virtual ValueObject* asValueObject() { return this; }
79
82 virtual const ValueObject* asValueObject() const { return this; }
83
85 {
86 public:
87 virtual ~GetValueVisitor() {}
88 virtual void apply(bool /*in_value*/) {}
89 virtual void apply(char /*in_value*/) {}
90 virtual void apply(unsigned char /*in_value*/) {}
91 virtual void apply(short /*in_value*/) {}
92 virtual void apply(unsigned short /*in_value*/) {}
93 virtual void apply(int /*in_value*/) {}
94 virtual void apply(unsigned int /*in_value*/) {}
95 virtual void apply(float /*in_value*/) {}
96 virtual void apply(double /*in_value*/) {}
97 virtual void apply(const std::string& /*in_value*/) {}
98
99 virtual void apply(const osg::Vec2b& /*in_value*/) {}
100 virtual void apply(const osg::Vec3b& /*in_value*/) {}
101 virtual void apply(const osg::Vec4b& /*in_value*/) {}
102
103 virtual void apply(const osg::Vec2ub& /*in_value*/) {}
104 virtual void apply(const osg::Vec3ub& /*in_value*/) {}
105 virtual void apply(const osg::Vec4ub& /*in_value*/) {}
106
107 virtual void apply(const osg::Vec2s& /*in_value*/) {}
108 virtual void apply(const osg::Vec3s& /*in_value*/) {}
109 virtual void apply(const osg::Vec4s& /*in_value*/) {}
110
111 virtual void apply(const osg::Vec2us& /*in_value*/) {}
112 virtual void apply(const osg::Vec3us& /*in_value*/) {}
113 virtual void apply(const osg::Vec4us& /*in_value*/) {}
114
115 virtual void apply(const osg::Vec2i& /*in_value*/) {}
116 virtual void apply(const osg::Vec3i& /*in_value*/) {}
117 virtual void apply(const osg::Vec4i& /*in_value*/) {}
118
119 virtual void apply(const osg::Vec2ui& /*in_value*/) {}
120 virtual void apply(const osg::Vec3ui& /*in_value*/) {}
121 virtual void apply(const osg::Vec4ui& /*in_value*/) {}
122
123 virtual void apply(const osg::Vec2f& /*in_value*/) {}
124 virtual void apply(const osg::Vec3f& /*in_value*/) {}
125 virtual void apply(const osg::Vec4f& /*in_value*/) {}
126
127 virtual void apply(const osg::Vec2d& /*in_value*/) {}
128 virtual void apply(const osg::Vec3d& /*in_value*/) {}
129 virtual void apply(const osg::Vec4d& /*in_value*/) {}
130
131 virtual void apply(const osg::Quat& /*in_value*/) {}
132 virtual void apply(const osg::Plane& /*in_value*/) {}
133 virtual void apply(const osg::Matrixf& /*in_value*/) {}
134 virtual void apply(const osg::Matrixd& /*in_value*/) {}
135 virtual void apply(const osg::BoundingBoxf& /*in_value*/) {}
136 virtual void apply(const osg::BoundingBoxd& /*in_value*/) {}
137 virtual void apply(const osg::BoundingSpheref& /*in_value*/) {}
138 virtual void apply(const osg::BoundingSphered& /*in_value*/) {}
139 };
140
141
143 {
144 public:
145 virtual ~SetValueVisitor() {}
146 virtual void apply(bool& /*in_value*/) {}
147 virtual void apply(char& /*in_value*/) {}
148 virtual void apply(unsigned char& /*in_value*/) {}
149 virtual void apply(short& /*in_value*/) {}
150 virtual void apply(unsigned short& /*in_value*/) {}
151 virtual void apply(int& /*in_value*/) {}
152 virtual void apply(unsigned int& /*in_value*/) {}
153 virtual void apply(float& /*in_value*/) {}
154 virtual void apply(double& /*in_value*/) {}
155 virtual void apply(std::string& /*in_value*/) {}
156
157 virtual void apply(osg::Vec2b& /*in_value*/) {}
158 virtual void apply(osg::Vec3b& /*in_value*/) {}
159 virtual void apply(osg::Vec4b& /*in_value*/) {}
160
161 virtual void apply(osg::Vec2ub& /*in_value*/) {}
162 virtual void apply(osg::Vec3ub& /*in_value*/) {}
163 virtual void apply(osg::Vec4ub& /*in_value*/) {}
164
165 virtual void apply(osg::Vec2s& /*in_value*/) {}
166 virtual void apply(osg::Vec3s& /*in_value*/) {}
167 virtual void apply(osg::Vec4s& /*in_value*/) {}
168
169 virtual void apply(osg::Vec2us& /*in_value*/) {}
170 virtual void apply(osg::Vec3us& /*in_value*/) {}
171 virtual void apply(osg::Vec4us& /*in_value*/) {}
172
173 virtual void apply(osg::Vec2i& /*in_value*/) {}
174 virtual void apply(osg::Vec3i& /*in_value*/) {}
175 virtual void apply(osg::Vec4i& /*in_value*/) {}
176
177 virtual void apply(osg::Vec2ui& /*in_value*/) {}
178 virtual void apply(osg::Vec3ui& /*in_value*/) {}
179 virtual void apply(osg::Vec4ui& /*in_value*/) {}
180
181 virtual void apply(osg::Vec2f& /*in_value*/) {}
182 virtual void apply(osg::Vec3f& /*in_value*/) {}
183 virtual void apply(osg::Vec4f& /*in_value*/) {}
184
185 virtual void apply(osg::Vec2d& /*in_value*/) {}
186 virtual void apply(osg::Vec3d& /*in_value*/) {}
187 virtual void apply(osg::Vec4d& /*in_value*/) {}
188
189 virtual void apply(osg::Quat& /*in_value*/) {}
190 virtual void apply(osg::Plane& /*in_value*/) {}
191 virtual void apply(osg::Matrixf& /*in_value*/) {}
192 virtual void apply(osg::Matrixd& /*in_value*/) {}
193 virtual void apply(osg::BoundingBoxf& /*in_value*/) {}
194 virtual void apply(osg::BoundingBoxd& /*in_value*/) {}
195 virtual void apply(osg::BoundingSpheref& /*in_value*/) {}
196 virtual void apply(osg::BoundingSphered& /*in_value*/) {}
197 };
198
199 virtual bool get(GetValueVisitor& /*gvv*/) const { return false; }
200 virtual bool set(SetValueVisitor& /*gvv*/) { return false; }
201
202 template<typename T>
203 bool getScalarValue(T& value) { GetScalarValue<T> gsv; if (get(gsv) && gsv.set) { value = gsv.value; return true; } else return false; }
204
205 template<typename T>
206 bool setScalarValue(T value) { SetScalarValue<T> ssv(value); return set(ssv) && ssv.set; }
207
208protected:
209 virtual ~ValueObject() {}
210};
211
212template<typename T>
214{
215public:
216
217 GetScalarValue() : set(false), value(0) {}
218
219 bool set;
221
222 virtual void apply(bool in_value) { value = in_value ? 1 : 0; set = true; }
223 virtual void apply(char in_value) { value = in_value; set = true; }
224 virtual void apply(unsigned char in_value) { value = in_value; set = true; }
225 virtual void apply(short in_value) { value = in_value; set = true; }
226 virtual void apply(unsigned short in_value) { value = in_value; set = true; }
227 virtual void apply(int in_value) { value = in_value; set = true; }
228 virtual void apply(unsigned int in_value) { value = in_value; set = true; }
229 virtual void apply(float in_value) { value = in_value; set = true; }
230 virtual void apply(double in_value) { value = in_value; set = true; }
231};
232template<>
234{
235public:
236
237 GetScalarValue() : set(false), value(0) {}
238
239 bool set;
240 bool value;
241
242 virtual void apply(bool in_value) { value = in_value; set = true; }
243 virtual void apply(char in_value) { value = in_value != 0; set = true; }
244 virtual void apply(unsigned char in_value) { value = in_value != 0; set = true; }
245 virtual void apply(short in_value) { value = in_value != 0; set = true; }
246 virtual void apply(unsigned short in_value) { value = in_value != 0; set = true; }
247 virtual void apply(int in_value) { value = in_value != 0; set = true; }
248 virtual void apply(unsigned int in_value) { value = in_value != 0; set = true; }
249 virtual void apply(float in_value) { value = in_value != 0.0f; set = true; }
250 virtual void apply(double in_value) { value = in_value != 0.0; set = true; }
251};
252
253template<typename T>
255{
256public:
257
258 SetScalarValue(T in_value) : set(false), value(in_value) {}
259
260 bool set;
262
263 virtual void apply(bool& in_value) { in_value=(value!=0); set = true;}
264 virtual void apply(char& in_value) { in_value=value; set = true;}
265 virtual void apply(unsigned char& in_value) { in_value=value; set = true;}
266 virtual void apply(short& in_value) { in_value=value; set = true;}
267 virtual void apply(unsigned short& in_value) { in_value=value; set = true;}
268 virtual void apply(int& in_value) { in_value=value; set = true;}
269 virtual void apply(unsigned int& in_value) { in_value=value; set = true;}
270 virtual void apply(float& in_value) { in_value=value; set = true;}
271 virtual void apply(double& in_value) { in_value=value; set = true;}
272};
273
274template< typename T >
276{
277 static const char* className() { return "TemplateValueObject"; }
278};
279
280
281template< typename T >
283{
284 public:
285
289
290 TemplateValueObject(const T& value) :
291 ValueObject(),
292 _value(value) {}
293
294 TemplateValueObject(const std::string& name, const T& value) :
295 ValueObject(name),
296 _value(value) {}
297
301
302 virtual Object* cloneType() const { return new TemplateValueObject(); }
303 virtual Object* clone(const CopyOp& copyop) const { return new TemplateValueObject(*this, copyop); }
304 virtual bool isSameKindAs(const Object* obj) const { return dynamic_cast<const TemplateValueObject*>(obj)!=NULL; }
305 virtual const char* libraryName() const { return "osg"; }
306 virtual const char* className() const { return ValueObjectClassNameTrait<T>::className(); }
307
308 void setValue(const T& value) { _value = value; }
309 const T& getValue() const { return _value; }
310
311 virtual bool get(GetValueVisitor& gvv) const { gvv.apply(_value); return true; }
312 virtual bool set(SetValueVisitor& svv) { svv.apply(_value); return true; }
313
314protected:
315
318
320};
321
322#define META_ValueObject(TYPE,NAME) \
323 template<> struct ValueObjectClassNameTrait<TYPE> { static const char* className() { return #NAME; } }; \
324 typedef TemplateValueObject<TYPE> NAME;
325
326META_ValueObject(std::string, StringValueObject)
327META_ValueObject(bool, BoolValueObject)
328META_ValueObject(char, CharValueObject)
329META_ValueObject(unsigned char, UCharValueObject)
330META_ValueObject(short, ShortValueObject)
331META_ValueObject(unsigned short, UShortValueObject)
332META_ValueObject(int, IntValueObject)
333META_ValueObject(unsigned int, UIntValueObject)
334META_ValueObject(float, FloatValueObject)
335META_ValueObject(double, DoubleValueObject)
336META_ValueObject(Vec2f, Vec2fValueObject)
337META_ValueObject(Vec3f, Vec3fValueObject)
338META_ValueObject(Vec4f, Vec4fValueObject)
339META_ValueObject(Vec2d, Vec2dValueObject)
340META_ValueObject(Vec3d, Vec3dValueObject)
341META_ValueObject(Vec4d, Vec4dValueObject)
342META_ValueObject(Quat, QuatValueObject)
343META_ValueObject(Plane, PlaneValueObject)
344META_ValueObject(Matrixf, MatrixfValueObject)
345META_ValueObject(Matrixd, MatrixdValueObject)
346META_ValueObject(BoundingBoxf, BoundingBoxfValueObject)
347META_ValueObject(BoundingBoxd, BoundingBoxdValueObject)
348META_ValueObject(BoundingSpheref, BoundingSpherefValueObject)
349META_ValueObject(BoundingSphered, BoundingSpheredValueObject)
350
352template<typename T>
353bool osg::Object::getUserValue(const std::string& name, T& value) const
354{
355 typedef TemplateValueObject<T> UserValueObject;
356
358 if (!udc) udc = _userDataContainer;
359
360 if (!udc) return false;
361
362 const Object* obj = udc->getUserObject(name);
363 if (obj && typeid(*obj)==typeid(UserValueObject))
364 {
365 const UserValueObject* uvo = static_cast<const UserValueObject*>(obj);
366 value = uvo->getValue();
367 return true;
368 }
369 else
370 {
371 return false;
372 }
373}
374
376template<typename T>
377void osg::Object::setUserValue(const std::string& name, const T& value)
378{
379 typedef TemplateValueObject<T> UserValueObject;
380
382 if (!udc)
383 {
385 udc = _userDataContainer;
386 }
387
388 unsigned int i = udc->getUserObjectIndex(name);
389 if (i<udc->getNumUserObjects())
390 {
391 Object* obj = udc->getUserObject(i);
392 if (typeid(*obj)==typeid(UserValueObject))
393 {
394 UserValueObject* uvo = static_cast<UserValueObject*>(obj);
395 uvo->setValue(value);
396 }
397 else
398 {
399 udc->setUserObject(i, new UserValueObject(name, value));
400 }
401 }
402 else
403 {
404 udc->addUserObject(new UserValueObject(name,value));
405 }
406}
407
408
409template<class P, class T>
411{
412 T* object=0;
413 const char* name = typeid(T).name();
415 unsigned int index = udc->getUserObjectIndex(name);
416 if (index<udc->getNumUserObjects())
417 {
418 osg::Object* userObject = udc->getUserObject(index);
419 if (typeid(*userObject)==typeid(T))
420 {
421 object = static_cast<T*>(userObject);
422 // OSG_NOTICE<<"Reusing "<<name<<std::endl;
423 }
424 else
425 {
426 // OSG_NOTICE<<"Replacing "<<name<<", original object "<<userObject->className()<<std::endl;
427
428 object = new T;
429 object->setName(name);
430 udc->setUserObject(index, object);
431 }
432 }
433 else
434 {
435 object = new T;
436 object->setName(name);
437 udc->addUserObject(object);
438 // OSG_NOTICE<<"Creating new "<<name<<std::endl;
439 }
440 return object;
441}
442
443
444}
445#endif
446
#define META_ValueObject(TYPE, NAME)
Definition ValueObject:322
The core osg library provides the basic scene graph classes such as Nodes, State and Drawables,...
Definition AlphaFunc:19
META_ValueObject(std::string, StringValueObject) META_ValueObject(bool
BoundingBoxImpl< Vec3d > BoundingBoxd
Definition BoundingBox:252
T * getOrCreateUserObjectOfType(P *parent)
Definition ValueObject:410
BoundingBoxImpl< Vec3f > BoundingBoxf
Definition BoundingBox:251
BoundingSphereImpl< Vec3f > BoundingSpheref
Definition BoundingSphere:302
BoundingSphereImpl< Vec3d > BoundingSphered
Definition BoundingSphere:303
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
Definition Matrixd:27
Definition Matrixf:27
Base class/standard interface for objects which require IO support, cloning and reference counting.
Definition Object:61
void setUserValue(const std::string &name, const T &value)
Convenience method that creates the osg::TemplateValueObject<T> to store the specified value and adds...
Definition ValueObject:377
virtual void setName(const std::string &name)
Set the name of object using C++ style string.
Definition Object:203
virtual UserDataContainer * asUserDataContainer()
Convert 'this' into a UserDataContainer pointer if Object is a UserDataContainer, otherwise return 0.
Definition Object:175
Object()
Construct an object.
Definition Object:69
osg::UserDataContainer * _userDataContainer
Definition Object:306
bool getUserValue(const std::string &name, T &value) const
Convenience method that casts the named UserObject to osg::TemplateValueObject<T> and gets the value.
osg::UserDataContainer * getOrCreateUserDataContainer()
Convenience method that returns the UserDataContainer, and if one doesn't already exist creates and a...
A plane class.
Definition Plane:34
A quaternion class.
Definition Quat:30
Internal structure for storing all user data.
Definition UserDataContainer:26
virtual unsigned int addUserObject(Object *obj)=0
Add user data object.
virtual unsigned int getUserObjectIndex(const osg::Object *obj, unsigned int startPos=0) const =0
Get the index position of specified user data object.
virtual void setUserObject(unsigned int i, Object *obj)=0
Add element to list of user data objects.
virtual Object * getUserObject(unsigned int i)=0
Get user data object as specified index position.
Definition ValueObject:214
virtual void apply(char in_value)
Definition ValueObject:223
virtual void apply(short in_value)
Definition ValueObject:225
virtual void apply(unsigned short in_value)
Definition ValueObject:226
virtual void apply(bool in_value)
Definition ValueObject:222
virtual void apply(float in_value)
Definition ValueObject:229
GetScalarValue()
Definition ValueObject:217
virtual void apply(unsigned int in_value)
Definition ValueObject:228
virtual void apply(unsigned char in_value)
Definition ValueObject:224
virtual void apply(int in_value)
Definition ValueObject:227
virtual void apply(double in_value)
Definition ValueObject:230
T value
Definition ValueObject:220
bool set
Definition ValueObject:219
Definition ValueObject:255
bool set
Definition ValueObject:260
virtual void apply(int &in_value)
Definition ValueObject:268
virtual void apply(short &in_value)
Definition ValueObject:266
virtual void apply(float &in_value)
Definition ValueObject:270
virtual void apply(unsigned char &in_value)
Definition ValueObject:265
virtual void apply(double &in_value)
Definition ValueObject:271
virtual void apply(unsigned short &in_value)
Definition ValueObject:267
SetScalarValue(T in_value)
Definition ValueObject:258
virtual void apply(bool &in_value)
Definition ValueObject:263
virtual void apply(unsigned int &in_value)
Definition ValueObject:269
virtual void apply(char &in_value)
Definition ValueObject:264
T value
Definition ValueObject:261
virtual const ValueObject * asValueObject() const
Convert 'this' into a ValueObject pointer if Object is a ValueObject, otherwise return 0.
Definition ValueObject:82
ValueObject(const std::string &name)
Definition ValueObject:71
META_Object(osg, ValueObject) virtual ValueObject *asValueObject()
Convert 'this' into a ValueObject pointer if Object is a ValueObject, otherwise return 0.
Definition ValueObject:74
virtual bool get(GetValueVisitor &) const
Definition ValueObject:199
virtual ~ValueObject()
Definition ValueObject:209
ValueObject(const ValueObject &rhs, const osg::CopyOp copyop=osg::CopyOp::SHALLOW_COPY)
Definition ValueObject:72
virtual bool set(SetValueVisitor &)
Definition ValueObject:200
bool getScalarValue(T &value)
Definition ValueObject:203
ValueObject()
Definition ValueObject:70
bool setScalarValue(T value)
Definition ValueObject:206
Definition ValueObject:85
virtual void apply(double)
Definition ValueObject:96
virtual void apply(unsigned int)
Definition ValueObject:94
virtual void apply(const osg::Vec4ui &)
Definition ValueObject:121
virtual void apply(const osg::BoundingBoxf &)
Definition ValueObject:135
virtual void apply(unsigned short)
Definition ValueObject:92
virtual void apply(const osg::Vec4b &)
Definition ValueObject:101
virtual void apply(const osg::Plane &)
Definition ValueObject:132
virtual void apply(const osg::Matrixf &)
Definition ValueObject:133
virtual void apply(unsigned char)
Definition ValueObject:90
virtual void apply(const osg::Vec2us &)
Definition ValueObject:111
virtual void apply(int)
Definition ValueObject:93
virtual void apply(const osg::Vec2d &)
Definition ValueObject:127
virtual void apply(const osg::Quat &)
Definition ValueObject:131
virtual void apply(const osg::Vec3s &)
Definition ValueObject:108
virtual void apply(const osg::BoundingBoxd &)
Definition ValueObject:136
virtual void apply(const osg::BoundingSpheref &)
Definition ValueObject:137
virtual void apply(const osg::Vec3b &)
Definition ValueObject:100
virtual void apply(const osg::Vec4s &)
Definition ValueObject:109
virtual void apply(short)
Definition ValueObject:91
virtual void apply(const osg::Vec4i &)
Definition ValueObject:117
virtual void apply(char)
Definition ValueObject:89
virtual void apply(const osg::Vec3us &)
Definition ValueObject:112
virtual void apply(const osg::Vec3d &)
Definition ValueObject:128
virtual void apply(const osg::Vec4f &)
Definition ValueObject:125
virtual void apply(const osg::Vec4us &)
Definition ValueObject:113
virtual void apply(const osg::Vec3f &)
Definition ValueObject:124
virtual void apply(const osg::Vec2i &)
Definition ValueObject:115
virtual void apply(const osg::Vec4ub &)
Definition ValueObject:105
virtual void apply(const osg::Vec2f &)
Definition ValueObject:123
virtual void apply(const osg::Vec2ub &)
Definition ValueObject:103
virtual ~GetValueVisitor()
Definition ValueObject:87
virtual void apply(const std::string &)
Definition ValueObject:97
virtual void apply(const osg::Matrixd &)
Definition ValueObject:134
virtual void apply(const osg::BoundingSphered &)
Definition ValueObject:138
virtual void apply(const osg::Vec2s &)
Definition ValueObject:107
virtual void apply(const osg::Vec3ui &)
Definition ValueObject:120
virtual void apply(const osg::Vec3i &)
Definition ValueObject:116
virtual void apply(const osg::Vec2b &)
Definition ValueObject:99
virtual void apply(const osg::Vec2ui &)
Definition ValueObject:119
virtual void apply(const osg::Vec4d &)
Definition ValueObject:129
virtual void apply(float)
Definition ValueObject:95
virtual void apply(bool)
Definition ValueObject:88
virtual void apply(const osg::Vec3ub &)
Definition ValueObject:104
Definition ValueObject:143
virtual void apply(osg::Vec2b &)
Definition ValueObject:157
virtual void apply(osg::Vec4f &)
Definition ValueObject:183
virtual void apply(osg::Vec3d &)
Definition ValueObject:186
virtual void apply(osg::Vec3ui &)
Definition ValueObject:178
virtual void apply(osg::Vec2ui &)
Definition ValueObject:177
virtual void apply(osg::Vec2d &)
Definition ValueObject:185
virtual void apply(osg::Vec2f &)
Definition ValueObject:181
virtual void apply(osg::Vec3ub &)
Definition ValueObject:162
virtual void apply(osg::BoundingBoxd &)
Definition ValueObject:194
virtual void apply(osg::Vec4s &)
Definition ValueObject:167
virtual void apply(osg::Vec4i &)
Definition ValueObject:175
virtual void apply(osg::Plane &)
Definition ValueObject:190
virtual void apply(osg::Matrixf &)
Definition ValueObject:191
virtual void apply(osg::Vec4b &)
Definition ValueObject:159
virtual void apply(osg::Vec3b &)
Definition ValueObject:158
virtual void apply(unsigned char &)
Definition ValueObject:148
virtual void apply(osg::BoundingSpheref &)
Definition ValueObject:195
virtual ~SetValueVisitor()
Definition ValueObject:145
virtual void apply(osg::Vec4ui &)
Definition ValueObject:179
virtual void apply(bool &)
Definition ValueObject:146
virtual void apply(unsigned int &)
Definition ValueObject:152
virtual void apply(osg::Vec4us &)
Definition ValueObject:171
virtual void apply(osg::Vec3s &)
Definition ValueObject:166
virtual void apply(osg::Vec2us &)
Definition ValueObject:169
virtual void apply(osg::Vec4ub &)
Definition ValueObject:163
virtual void apply(osg::Quat &)
Definition ValueObject:189
virtual void apply(char &)
Definition ValueObject:147
virtual void apply(float &)
Definition ValueObject:153
virtual void apply(osg::BoundingSphered &)
Definition ValueObject:196
virtual void apply(osg::Vec2s &)
Definition ValueObject:165
virtual void apply(osg::Vec3i &)
Definition ValueObject:174
virtual void apply(short &)
Definition ValueObject:149
virtual void apply(osg::Vec4d &)
Definition ValueObject:187
virtual void apply(osg::Vec3us &)
Definition ValueObject:170
virtual void apply(osg::Matrixd &)
Definition ValueObject:192
virtual void apply(std::string &)
Definition ValueObject:155
virtual void apply(unsigned short &)
Definition ValueObject:150
virtual void apply(osg::Vec2ub &)
Definition ValueObject:161
virtual void apply(osg::Vec2i &)
Definition ValueObject:173
virtual void apply(osg::Vec3f &)
Definition ValueObject:182
virtual void apply(int &)
Definition ValueObject:151
virtual void apply(double &)
Definition ValueObject:154
virtual void apply(osg::BoundingBoxf &)
Definition ValueObject:193
virtual void apply(double in_value)
Definition ValueObject:250
virtual void apply(bool in_value)
Definition ValueObject:242
virtual void apply(char in_value)
Definition ValueObject:243
virtual void apply(unsigned int in_value)
Definition ValueObject:248
virtual void apply(short in_value)
Definition ValueObject:245
GetScalarValue()
Definition ValueObject:237
virtual void apply(float in_value)
Definition ValueObject:249
virtual void apply(unsigned char in_value)
Definition ValueObject:244
bool value
Definition ValueObject:240
bool set
Definition ValueObject:239
virtual void apply(unsigned short in_value)
Definition ValueObject:246
virtual void apply(int in_value)
Definition ValueObject:247
Definition ValueObject:276
static const char * className()
Definition ValueObject:277
Definition ValueObject:283
void setValue(const T &value)
Definition ValueObject:308
TemplateValueObject(const TemplateValueObject &rhs, const osg::CopyOp copyop=osg::CopyOp::SHALLOW_COPY)
Definition ValueObject:298
static const char * s_TemplateValueObject_className
Definition ValueObject:317
virtual const char * className() const
return the name of the object's class type.
Definition ValueObject:306
TemplateValueObject(const T &value)
Definition ValueObject:290
virtual ~TemplateValueObject()
Definition ValueObject:316
TemplateValueObject()
Definition ValueObject:286
virtual Object * cloneType() const
Clone the type of an object, with Object* return type.
Definition ValueObject:302
virtual bool get(GetValueVisitor &gvv) const
Definition ValueObject:311
TemplateValueObject(const std::string &name, const T &value)
Definition ValueObject:294
virtual Object * clone(const CopyOp &copyop) const
Clone an object, with Object* return type.
Definition ValueObject:303
T _value
Definition ValueObject:319
virtual const char * libraryName() const
return the name of the object's library.
Definition ValueObject:305
virtual bool set(SetValueVisitor &svv)
Definition ValueObject:312
virtual bool isSameKindAs(const Object *obj) const
Definition ValueObject:304
const T & getValue() const
Definition ValueObject:309
General purpose float triple.
Definition Vec2b:26
General purpose double pair, uses include representation of texture coordinates.
Definition Vec2d:29
General purpose float pair.
Definition Vec2f:29
General purpose integer pair.
Definition Vec2i:22
Definition Vec2s:20
General purpose unsigned byte pair.
Definition Vec2ub:22
General purpose integer pair.
Definition Vec2ui:22
Definition Vec2us:20
General purpose float triple.
Definition Vec3b:26
General purpose double triple for use as vertices, vectors and normals.
Definition Vec3d:30
General purpose float triple for use as vertices, vectors and normals.
Definition Vec3f:29
General purpose integer triple.
Definition Vec3i:22
Definition Vec3s:20
General purpose float triple.
Definition Vec3ub:26
General purpose integer triple.
Definition Vec3ui:22
Definition Vec3us:20
General purpose float triple.
Definition Vec4b:26
General purpose double quad.
Definition Vec4d:29
General purpose float quad.
Definition Vec4f:28
General purpose integer quad.
Definition Vec4i:22
General purpose float quad.
Definition Vec4s:26
General purpose float quad.
Definition Vec4ub:28
General purpose integer quad.
Definition Vec4ui:22
General purpose float quad.
Definition Vec4us:26
#define NULL
Definition Export:55

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