14 #ifndef OSG_STATEATTRIBUTE
15 #define OSG_STATEATTRIBUTE 1
19 #include <osg/Callback>
30 #define GL_COLOR_SUM 0x8458
48 #define META_StateAttribute(library,name,type) \
49 virtual osg::Object* cloneType() const { return new name(); } \
50 virtual osg::Object* clone(const osg::CopyOp& copyop) const { return new name (*this,copyop); } \
51 virtual bool isSameKindAs(const osg::Object* obj) const { return dynamic_cast<const name *>(obj)!=NULL; } \
52 virtual const char* libraryName() const { return #library; } \
53 virtual const char* className() const { return #name; } \
54 virtual Type getType() const { return type; }
57 #define COMPARE_StateAttribute_Types(TYPE,rhs_attribute) \
58 if (this==&rhs_attribute) return 0;\
59 const std::type_info* type_lhs = &typeid(*this);\
60 const std::type_info* type_rhs = &typeid(rhs_attribute);\
61 if (type_lhs->before(*type_rhs)) return -1;\
62 if (*type_lhs != *type_rhs) return 1;\
63 const TYPE& rhs = static_cast<const TYPE&>(rhs_attribute);
69 #define COMPARE_StateAttribute_Parameter(parameter) \
70 if (parameter<rhs.parameter) return -1; \
71 if (rhs.parameter<parameter) return 1;
215 _shaderComponent(sa._shaderComponent),
216 _updateCallback(copyop(sa._updateCallback.get())),
217 _eventCallback(copyop(sa._eventCallback.get()))
236 virtual const char*
className()
const {
return "StateAttribute"; }
255 virtual Type getType()
const = 0;
261 inline TypeMemberPair
getTypeMemberPair()
const {
return TypeMemberPair(getType(),getMember()); }
278 inline const ParentList&
getParents()
const {
return _parents; }
292 inline unsigned int getNumParents()
const {
return static_cast<unsigned int>(_parents.size()); }
301 virtual void usesMode(GLMode mode) = 0;
302 virtual void usesTextureMode(GLMode mode) = 0;
StateAttribute(const StateAttribute &sa, const CopyOp ©op=CopyOp::SHALLOW_COPY)
virtual void apply(State &) const
TypeMemberPair getTypeMemberPair() const
virtual bool checkValidityOfAssociatedModes(osg::State &) const
osg::StateAttributeCallback Callback
virtual const char * className() const
virtual StateAttribute * asStateAttribute()
const StateAttributeCallback * getEventCallback() const
unsigned int getNumParents() const
ref_ptr< StateAttributeCallback > _updateCallback
virtual const char * libraryName() const
StateAttributeCallback * getEventCallback()
StateAttributeCallback * getUpdateCallback()
ShaderComponent * getShaderComponent()
virtual const StateAttribute * asStateAttribute() const
std::vector< StateSet * > ParentList
T * clone(const T *t, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
unsigned int OverrideValue
const ShaderComponent * getShaderComponent() const
ref_ptr< ShaderComponent > _shaderComponent
virtual void releaseGLObjects(State *=0) const
virtual void compileGLObjects(State &) const
T * cloneType(const T *t)
void setShaderComponent(ShaderComponent *sc)
virtual Texture * asTexture()
virtual bool isTextureAttribute() const
const ParentList & getParents() const
const StateAttributeCallback * getUpdateCallback() const
StateSet * getParent(unsigned int i)
virtual bool getModeUsage(ModeUsage &) const
ref_ptr< StateAttributeCallback > _eventCallback
virtual bool isSameKindAs(const Object *obj) const
const StateSet * getParent(unsigned int i) const
virtual ~StateAttribute()
virtual const Texture * asTexture() const
std::pair< Type, unsigned int > TypeMemberPair
virtual unsigned int getMember() const
virtual void resizeGLObjectBuffers(unsigned int)