AnimationManagerBase
Go to the documentation of this file.
/* -*-c++-*-
* Copyright (C) 2008 Cedric Pinson <cedric.pinson@plopbyte.net>
*
* This library is open source and may be redistributed and/or modified under
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
* (at your option) any later version. The full license is in LICENSE file
* included with this distribution, and on the openscenegraph.org website.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* OpenSceneGraph Public License for more details.
*/
#ifndef OSGANIMATION_ANIMATION_MANAGER_BASE
#define OSGANIMATION_ANIMATION_MANAGER_BASE 1
#include <osgAnimation/LinkVisitor>
#include <osgAnimation/Animation>
#include <osgAnimation/Export>
#include <osg/FrameStamp>
#include <osg/Group>
namespace osgAnimation
{
class OSGANIMATION_EXPORT AnimationManagerBase : public osg::NodeCallback
{
public:
typedef std::set<osg::ref_ptr<Target> > TargetSet;
AnimationManagerBase();
AnimationManagerBase(const AnimationManagerBase& b, const osg::CopyOp& copyop= osg::CopyOp::SHALLOW_COPY);
virtual ~AnimationManagerBase();
virtual void buildTargetReference();
virtual void registerAnimation (Animation*);
virtual void unregisterAnimation (Animation*);
virtual void link(osg::Node* subgraph);
virtual void update(double t) = 0;
virtual bool needToLink() const;
const AnimationList& getAnimationList() const { return _animations;}
AnimationList& getAnimationList() { return _animations;}
//uniformisation of the API
inline Animation * getRegisteredAnimation(unsigned int i) { return _animations[i].get();}
inline unsigned int getNumRegisteredAnimations() const { return _animations.size();}
inline void addRegisteredAnimation(Animation* animation)
{
_needToLink = true;
_animations.push_back(animation);
buildTargetReference();
}
void removeRegisteredAnimation(Animation* animation);
virtual void operator()(osg::Node* node, osg::NodeVisitor* nv);
void clearTargets();
LinkVisitor* getOrCreateLinkVisitor();
void setLinkVisitor(LinkVisitor*);
void setAutomaticLink(bool);
bool getAutomaticLink() const;
bool isAutomaticLink() const { return getAutomaticLink(); }
void dirty();
protected:
osg::ref_ptr<LinkVisitor> _linker;
AnimationList _animations;
TargetSet _targets;
bool _needToLink;
bool _automaticLink;
};
}
#endif
Animation
FrameStamp
Group
LinkVisitor
osgAnimation::AnimationManagerBase::getRegisteredAnimation
Animation * getRegisteredAnimation(unsigned int i)
Definition AnimationManagerBase:46
osgAnimation::AnimationManagerBase::TargetSet
std::set< osg::ref_ptr< Target > > TargetSet
Definition AnimationManagerBase:31
osgAnimation::AnimationManagerBase::_animations
AnimationList _animations
Definition AnimationManagerBase:75
osgAnimation::AnimationManagerBase::AnimationManagerBase
AnimationManagerBase()
osgAnimation::AnimationManagerBase::update
virtual void update(double t)=0
osgAnimation::AnimationManagerBase::setAutomaticLink
void setAutomaticLink(bool)
set a flag to define the behaviour
osgAnimation::AnimationManagerBase::getAnimationList
const AnimationList & getAnimationList() const
Definition AnimationManagerBase:42
osgAnimation::AnimationManagerBase::buildTargetReference
virtual void buildTargetReference()
osgAnimation::AnimationManagerBase::_targets
TargetSet _targets
Definition AnimationManagerBase:76
osgAnimation::AnimationManagerBase::_linker
osg::ref_ptr< LinkVisitor > _linker
Definition AnimationManagerBase:74
osgAnimation::AnimationManagerBase::needToLink
virtual bool needToLink() const
osgAnimation::AnimationManagerBase::getAnimationList
AnimationList & getAnimationList()
Definition AnimationManagerBase:43
osgAnimation::AnimationManagerBase::setLinkVisitor
void setLinkVisitor(LinkVisitor *)
osgAnimation::AnimationManagerBase::link
virtual void link(osg::Node *subgraph)
osgAnimation::AnimationManagerBase::unregisterAnimation
virtual void unregisterAnimation(Animation *)
osgAnimation::AnimationManagerBase::getNumRegisteredAnimations
unsigned int getNumRegisteredAnimations() const
Definition AnimationManagerBase:47
osgAnimation::AnimationManagerBase::getAutomaticLink
bool getAutomaticLink() const
osgAnimation::AnimationManagerBase::_needToLink
bool _needToLink
Definition AnimationManagerBase:77
osgAnimation::AnimationManagerBase::isAutomaticLink
bool isAutomaticLink() const
Definition AnimationManagerBase:69
osgAnimation::AnimationManagerBase::removeRegisteredAnimation
void removeRegisteredAnimation(Animation *animation)
osgAnimation::AnimationManagerBase::~AnimationManagerBase
virtual ~AnimationManagerBase()
osgAnimation::AnimationManagerBase::dirty
void dirty()
osgAnimation::AnimationManagerBase::registerAnimation
virtual void registerAnimation(Animation *)
osgAnimation::AnimationManagerBase::operator()
virtual void operator()(osg::Node *node, osg::NodeVisitor *nv)
osgAnimation::AnimationManagerBase::addRegisteredAnimation
void addRegisteredAnimation(Animation *animation)
Definition AnimationManagerBase:48
osgAnimation::AnimationManagerBase::clearTargets
void clearTargets()
osgAnimation::AnimationManagerBase::getOrCreateLinkVisitor
LinkVisitor * getOrCreateLinkVisitor()
osgAnimation::AnimationManagerBase::_automaticLink
bool _automaticLink
Definition AnimationManagerBase:78
osgAnimation::AnimationManagerBase::AnimationManagerBase
AnimationManagerBase(const AnimationManagerBase &b, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
osgAnimation::Animation
Definition Animation:29
osgAnimation::LinkVisitor
Definition LinkVisitor:29
osg::CopyOp
Definition CopyOp:41
osg::CopyOp::SHALLOW_COPY
@ SHALLOW_COPY
Definition CopyOp:47
osg::NodeCallback
Definition Callback:215
osg::NodeVisitor
Definition NodeVisitor:82
osg::Node
Definition Node:72
osg::ref_ptr
Definition ref_ptr:32
osgAnimation
Definition Action:34
osgAnimation::AnimationList
std::vector< osg::ref_ptr< osgAnimation::Animation > > AnimationList
Definition Animation:100
Export
OSGANIMATION_EXPORT
#define OSGANIMATION_EXPORT
Definition osgAnimation/Export:40