15#ifndef OSGANIMATION_ACTION_H
16#define OSGANIMATION_ACTION_H
24#define META_Action(library,name) \
25 virtual osg::Object* cloneType() const { return new name (); } \
26 virtual osg::Object* clone(const osg::CopyOp& copyop) const { return new name (*this,copyop); } \
27 virtual bool isSameKindAs(const osg::Object* obj) const { return dynamic_cast<const name *>(obj)!=NULL; } \
28 virtual const char* className() const { return #name; } \
29 virtual const char* libraryName() const { return #library; } \
30 virtual void accept(osgAnimation::ActionVisitor& nv) { nv.apply(*this); } \
45 osg::Object(nc, copyop),
46 _nestedCallback(nc._nestedCallback) {}
56 if (_nestedCallback.valid())
57 _nestedCallback->addNestedCallback(callback);
59 _nestedCallback = callback;
68 if (_nestedCallback.get() == cb)
69 _nestedCallback = _nestedCallback->getNestedCallback();
70 else if (_nestedCallback.valid())
71 _nestedCallback->removeCallback(cb);
88 setCallback(
static_cast<unsigned int>(floor(when*_fps)), callback);
93 if (_framesCallback[frame].valid())
94 _framesCallback[frame]->addNestedCallback(callback);
96 _framesCallback[frame] = callback;
100 if (_framesCallback.find(frame) == _framesCallback.end())
102 return _framesCallback[frame].get();
112 void setDuration(
double duration) { _numberFrame =
static_cast<unsigned int>(floor(duration * _fps)); }
117 virtual void setLoop(
unsigned int nb) { _loop = nb; }
118 virtual unsigned int getLoop()
const {
return _loop;}
122 bool evaluateFrame(
unsigned int frame,
unsigned int& resultframe,
unsigned int& nbloop );
Definition ActionVisitor:39
Callback * getNestedCallback()
Definition Action:52
Callback()
Definition Action:43
void addNestedCallback(Callback *callback)
Definition Action:53
META_Object(osgAnimation, Callback)
Callback(const Callback &nc, const osg::CopyOp ©op)
Definition Action:44
virtual void operator()(Action *, osgAnimation::ActionVisitor *)
Definition Action:50
void removeCallback(Callback *cb)
Definition Action:63
osg::ref_ptr< Callback > _nestedCallback
Definition Action:75
virtual unsigned int getLoop() const
Definition Action:118
void setDuration(double duration)
Definition Action:112
virtual void setLoop(unsigned int nb)
Definition Action:117
unsigned int _numberFrame
Definition Action:131
unsigned int getFramesPerSecond() const
Definition Action:109
double _speed
Definition Action:129
FrameCallback _framesCallback
Definition Action:127
unsigned int getNumFrames() const
Definition Action:113
unsigned int _fps
Definition Action:130
Status _state
Definition Action:140
META_Action(osgAnimation, Action)
void removeCallback(Callback *)
double getDuration() const
Definition Action:114
Callback * getCallback(unsigned int frame)
Definition Action:98
unsigned int _loop
Definition Action:132
void setCallback(double when, Callback *callback)
Definition Action:86
Callback * getFrameCallback(double time)
Action(const Action &, const osg::CopyOp &)
virtual void traverse(ActionVisitor &)
Definition Action:123
void setCallback(unsigned int frame, Callback *callback)
Definition Action:91
Callback * getFrameCallback(unsigned int frame)
bool evaluateFrame(unsigned int frame, unsigned int &resultframe, unsigned int &nbloop)
void setNumFrames(unsigned int numFrames)
Definition Action:111
Status
Definition Action:135
@ Play
Definition Action:136
std::map< unsigned int, osg::ref_ptr< Callback > > FrameCallback
Definition Action:79
author: Julien Valentin 2017 (mp3butcher@hotmail.com)
Definition AlphaFunc:19
#define OSGANIMATION_EXPORT
Definition osgAnimation/Export:40