/* -*-c++-*- * Copyright (C) 2008 Cedric Pinson * * 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_H #define OSGANIMATION_ANIMATION_MANAGER_BASE_H #include #include #include #include namespace osgAnimation { class OSGANIMATION_EXPORT AnimationManagerBase : public osg::NodeCallback { public: typedef std::set > TargetSet; AnimationManagerBase(); AnimationManagerBase(const AnimationManagerBase& b, const osg::CopyOp& copyop= osg::CopyOp::SHALLOW_COPY); virtual ~AnimationManagerBase(); virtual void buildTargetReference(); virtual void registerAnimation (Animation* animation); virtual void link(osg::Node* subgraph); virtual void update(double t) = 0; virtual bool needToLink() const; const AnimationList& getAnimationList() const { return _animations;} /** Callback method called by the NodeVisitor when visiting a node.*/ virtual void operator()(osg::Node* node, osg::NodeVisitor* nv); /// Operation that must be done each frame void clearTargets(); void normalizeTargets(); protected: AnimationList _animations; TargetSet _targets; bool _needToLink; }; } #endif