5eb65f65cc
the osgGA::AnimationPathManipulator to handle it. Added a new Drawable::ConstAttributeFunctor and make the accept(PrimitiveFunctor) be a const method so can disallows modification. Added Drawable::supports(...) methods for each of the AttributeFunctor, ConstAttributeFunctor and PrimitiveFunctor so that programs can querry whether it is possible to use functors with that object type.
64 lines
1.8 KiB
Plaintext
64 lines
1.8 KiB
Plaintext
//C++ header - Open Scene Graph - Copyright (C) 1998-2002 Robert Osfield
|
|
//Distributed under the terms of the GNU Library General Public License (LGPL)
|
|
//as published by the Free Software Foundation.
|
|
|
|
#ifndef OSGGA_ANIMATION_PATH_MANIPULATOR
|
|
#define OSGGA_ANIMATION_PATH_MANIPULATOR 1
|
|
|
|
#include <osg/AnimationPath>
|
|
#include <osg/Notify>
|
|
#include <osgGA/CameraManipulator>
|
|
|
|
namespace osgGA{
|
|
|
|
//
|
|
// The AnimationPathManipulator is a Camera Manipulator that reads an
|
|
// animation path from a file and plays it back. The file is expected
|
|
// to be ascii and a succession of lines with 8 floating point values
|
|
// per line. The succession of values are:
|
|
// time px py pz ax ay az aw
|
|
// where:
|
|
// time = elapsed time in seconds from the begining of the animation
|
|
// px py pz = World position in catesian coordinates
|
|
// ax ay az aw = Orientation (attitude) defined as a quaternion
|
|
|
|
class OSGGA_EXPORT AnimationPathManipulator : public CameraManipulator
|
|
{
|
|
public:
|
|
|
|
AnimationPathManipulator( osg::AnimationPath* animationPath=0 );
|
|
|
|
AnimationPathManipulator( const std::string& filename );
|
|
|
|
|
|
void setAnimationPath( osg::AnimationPath* animationPath ) { _animationPath=animationPath; }
|
|
|
|
osg::AnimationPath* getAnimationPath() { return _animationPath.get(); }
|
|
|
|
const osg::AnimationPath* getAnimationPath() const { return _animationPath.get(); }
|
|
|
|
bool valid() const { return _animationPath.valid(); }
|
|
|
|
void init(const GUIEventAdapter& ea,GUIActionAdapter& us);
|
|
|
|
void home(const GUIEventAdapter& ea,GUIActionAdapter& us);
|
|
|
|
virtual bool handle(const GUIEventAdapter& ea,GUIActionAdapter& us);
|
|
|
|
private:
|
|
|
|
bool _valid;
|
|
|
|
void handleFrame( double time );
|
|
|
|
osg::ref_ptr<osg::AnimationPath> _animationPath;
|
|
|
|
double _timeOffset;
|
|
double _timeScale;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|