AnimationPathManipulator
Go to the documentation of this file.
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
*
* 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 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 Matrix 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 beginning of the animation
// px py pz = World position in cartesian 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 );
virtual const char* className() const { return "AnimationPath"; }
void setTimeScale(double s) { _timeScale = s; }
double getTimeScale() const { return _timeScale; }
void setTimeOffset(double o) { _timeOffset = o; }
double getTimeOffset() const { return _timeOffset; }
struct AnimationCompletedCallback : public virtual osg::Referenced
{
virtual void completed(const AnimationPathManipulator* apm) = 0;
};
void setAnimationCompletedCallback(AnimationCompletedCallback* acc) { _animationCompletedCallback = acc; }
AnimationCompletedCallback* getAnimationCompletedCallback() { return _animationCompletedCallback.get(); }
const AnimationCompletedCallback* getAnimationCompletedCallback() const { return _animationCompletedCallback.get(); }
void setPrintOutTimingInfo(bool printOutTimingInfo) { _printOutTimingInfo=printOutTimingInfo; }
bool getPrintOutTimingInfo() const { return _printOutTimingInfo; }
virtual void setByMatrix(const osg::Matrixd& matrix) { _matrix = matrix; }
virtual void setByInverseMatrix(const osg::Matrixd& matrix) { _matrix.invert(matrix); }
virtual osg::Matrixd getMatrix() const { return _matrix; }
virtual osg::Matrixd getInverseMatrix() const { return osg::Matrixd::inverse(_matrix); }
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);
void home(double currentTime);
virtual bool handle(const GUIEventAdapter& ea,GUIActionAdapter& us);
virtual void getUsage(osg::ApplicationUsage& usage) const;
protected:
bool _valid;
bool _printOutTimingInfo;
void handleFrame( double time );
osg::ref_ptr<osg::AnimationPath> _animationPath;
double _timeOffset;
double _timeScale;
osg::ref_ptr<AnimationCompletedCallback> _animationCompletedCallback;
double _pauseTime;
bool _isPaused;
double _realStartOfTimedPeriod;
double _animStartOfTimedPeriod;
int _numOfFramesSinceStartOfTimedPeriod;
osg::Matrixd _matrix;
};
}
#endif
AnimationPath
CameraManipulator
Notify
osgGA::AnimationPathManipulator::valid
bool valid() const
Definition AnimationPathManipulator:81
osgGA::AnimationPathManipulator::setTimeOffset
void setTimeOffset(double o)
Definition AnimationPathManipulator:47
osgGA::AnimationPathManipulator::AnimationPathManipulator
AnimationPathManipulator(const std::string &filename)
osgGA::AnimationPathManipulator::_matrix
osg::Matrixd _matrix
Definition AnimationPathManipulator:115
osgGA::AnimationPathManipulator::setAnimationPath
void setAnimationPath(osg::AnimationPath *animationPath)
Definition AnimationPathManipulator:75
osgGA::AnimationPathManipulator::getAnimationCompletedCallback
AnimationCompletedCallback * getAnimationCompletedCallback()
Definition AnimationPathManipulator:56
osgGA::AnimationPathManipulator::home
void home(const GUIEventAdapter &ea, GUIActionAdapter &us)
osgGA::AnimationPathManipulator::_timeScale
double _timeScale
Definition AnimationPathManipulator:104
osgGA::AnimationPathManipulator::getTimeOffset
double getTimeOffset() const
Definition AnimationPathManipulator:48
osgGA::AnimationPathManipulator::className
virtual const char * className() const
Definition AnimationPathManipulator:42
osgGA::AnimationPathManipulator::_animationPath
osg::ref_ptr< osg::AnimationPath > _animationPath
Definition AnimationPathManipulator:101
osgGA::AnimationPathManipulator::setPrintOutTimingInfo
void setPrintOutTimingInfo(bool printOutTimingInfo)
Definition AnimationPathManipulator:59
osgGA::AnimationPathManipulator::_pauseTime
double _pauseTime
Definition AnimationPathManipulator:108
osgGA::AnimationPathManipulator::_valid
bool _valid
Definition AnimationPathManipulator:95
osgGA::AnimationPathManipulator::_realStartOfTimedPeriod
double _realStartOfTimedPeriod
Definition AnimationPathManipulator:111
osgGA::AnimationPathManipulator::handleFrame
void handleFrame(double time)
osgGA::AnimationPathManipulator::AnimationPathManipulator
AnimationPathManipulator(osg::AnimationPath *animationPath=0)
osgGA::AnimationPathManipulator::getPrintOutTimingInfo
bool getPrintOutTimingInfo() const
Definition AnimationPathManipulator:60
osgGA::AnimationPathManipulator::setTimeScale
void setTimeScale(double s)
Definition AnimationPathManipulator:44
osgGA::AnimationPathManipulator::handle
virtual bool handle(const GUIEventAdapter &ea, GUIActionAdapter &us)
osgGA::AnimationPathManipulator::getAnimationCompletedCallback
const AnimationCompletedCallback * getAnimationCompletedCallback() const
Definition AnimationPathManipulator:57
osgGA::AnimationPathManipulator::_printOutTimingInfo
bool _printOutTimingInfo
Definition AnimationPathManipulator:97
osgGA::AnimationPathManipulator::getTimeScale
double getTimeScale() const
Definition AnimationPathManipulator:45
osgGA::AnimationPathManipulator::setAnimationCompletedCallback
void setAnimationCompletedCallback(AnimationCompletedCallback *acc)
Definition AnimationPathManipulator:55
osgGA::AnimationPathManipulator::_timeOffset
double _timeOffset
Definition AnimationPathManipulator:103
osgGA::AnimationPathManipulator::setByInverseMatrix
virtual void setByInverseMatrix(const osg::Matrixd &matrix)
Definition AnimationPathManipulator:66
osgGA::AnimationPathManipulator::_isPaused
bool _isPaused
Definition AnimationPathManipulator:109
osgGA::AnimationPathManipulator::_animationCompletedCallback
osg::ref_ptr< AnimationCompletedCallback > _animationCompletedCallback
Definition AnimationPathManipulator:106
osgGA::AnimationPathManipulator::home
void home(double currentTime)
osgGA::AnimationPathManipulator::getUsage
virtual void getUsage(osg::ApplicationUsage &usage) const
osgGA::AnimationPathManipulator::setByMatrix
virtual void setByMatrix(const osg::Matrixd &matrix)
Definition AnimationPathManipulator:63
osgGA::AnimationPathManipulator::getAnimationPath
osg::AnimationPath * getAnimationPath()
Definition AnimationPathManipulator:77
osgGA::AnimationPathManipulator::getAnimationPath
const osg::AnimationPath * getAnimationPath() const
Definition AnimationPathManipulator:79
osgGA::AnimationPathManipulator::_animStartOfTimedPeriod
double _animStartOfTimedPeriod
Definition AnimationPathManipulator:112
osgGA::AnimationPathManipulator::getInverseMatrix
virtual osg::Matrixd getInverseMatrix() const
Definition AnimationPathManipulator:72
osgGA::AnimationPathManipulator::getMatrix
virtual osg::Matrixd getMatrix() const
Definition AnimationPathManipulator:69
osgGA::AnimationPathManipulator::init
void init(const GUIEventAdapter &ea, GUIActionAdapter &us)
osgGA::AnimationPathManipulator::_numOfFramesSinceStartOfTimedPeriod
int _numOfFramesSinceStartOfTimedPeriod
Definition AnimationPathManipulator:113
osgGA::CameraManipulator::CameraManipulator
CameraManipulator()
osgGA::GUIActionAdapter
Definition GUIActionAdapter:62
osgGA::GUIEventAdapter
Definition GUIEventAdapter:82
osg::AnimationPath
Definition AnimationPath:34
osg::ApplicationUsage
Definition ApplicationUsage:26
osg::Matrixd
Definition Matrixd:27
osg::Matrixd::inverse
static Matrixd inverse(const Matrixd &matrix)
Definition Matrixd:536
osg::Referenced
Definition Referenced:44
osg::ref_ptr
Definition ref_ptr:32
osgGA
Definition Callback:21
OSGGA_EXPORT
#define OSGGA_EXPORT
Definition osgGA/Export:40
osgGA::AnimationPathManipulator::AnimationCompletedCallback
Definition AnimationPathManipulator:51
osgGA::AnimationPathManipulator::AnimationCompletedCallback::completed
virtual void completed(const AnimationPathManipulator *apm)=0