15 #define OSG_CALLBACK 1
18 #include <osg/UserDataContainer>
31 _nestedCallback(cb._nestedCallback) {}
44 return traverse(
object, data);
58 if (_nestedCallback.valid())
60 _nestedCallback->addNestedCallback(nc);
73 if (_nestedCallback==nc)
77 _nestedCallback = new_nested_callback;
79 else if (_nestedCallback.valid())
92 typedef std::vector< osg::ref_ptr<osg::Object> >
Parameters;
116 return run(
object, inputParameters, outputParameters);
148 if (obj && obj->
getName()==name)
151 if (co) result = co->
run(
object, inputParameters, outputParameters) | result;
191 class StateAttribute;
virtual const CallbackObject * asCallbackObject() const
virtual CallbackObject * asCallbackObject()
CallbackObject * getCallbackObject(osg::Object *object, const std::string &name)
CallbackObject(const std::string &name)
bool run(osg::Object *object, osg::Object *data)
NodeCallback(const NodeCallback &nc, const CopyOp ©op)
std::vector< osg::ref_ptr< osg::Object > > Parameters
virtual Object * getUserObject(unsigned int i)=0
#define META_Object(library, name)
virtual bool run(osg::Object *object, osg::Object *data)
const std::string & getName() const
void setNestedCallback(osg::Callback *cb)
const osg::Callback * getNestedCallback() const
StateAttributeCallback(const StateAttributeCallback &, const CopyOp &)
osg::Callback * getNestedCallback()
bool runNamedCallbackObjects(osg::Object *object, const std::string &name, osg::Parameters &inputParameters, osg::Parameters &outputParameters)
void removeNestedCallback(osg::Callback *nc)
bool run(osg::Object *object) const
osg::UserDataContainer * getUserDataContainer()
Callback(const Callback &cb, const CopyOp ©op)
virtual unsigned int getNumUserObjects() const =0
void addNestedCallback(osg::Callback *nc)
ref_ptr< Callback > _nestedCallback
CallbackObject(const CallbackObject &co, const osg::CopyOp copyop=osg::CopyOp::SHALLOW_COPY)