1/* -*-c++-*- 2 * Copyright (C) 2009 Cedric Pinson <cedric.pinson@plopbyte.net> 3 * 4 * This library is open source and may be redistributed and/or modified under 5 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or 6 * (at your option) any later version. The full license is in LICENSE file 7 * included with this distribution, and on the openscenegraph.org website. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * OpenSceneGraph Public License for more details. 13 */ 14 15 16#ifndef OSGANIMATION_STACKED_QUATERNION_ELEMENT 17#define OSGANIMATION_STACKED_QUATERNION_ELEMENT 1 18 19#include <osgAnimation/Export> 20#include <osgAnimation/StackedTransformElement> 21#include <osgAnimation/Target> 22 23namespace osgAnimation 24{ 25 26 class OSGANIMATION_EXPORT StackedQuaternionElement : public StackedTransformElement 27 { 28 public: 29 META_Object(osgAnimation, StackedQuaternionElement); 30 31 StackedQuaternionElement(); 32 StackedQuaternionElement(const StackedQuaternionElement&, const osg::CopyOp&); 33 StackedQuaternionElement(const std::string&, const osg::Quat& q = osg::Quat(0,0,0,1)); 34 StackedQuaternionElement(const osg::Quat&); 35 36 void applyToMatrix(osg::Matrix& matrix) const; 37 osg::Matrix getAsMatrix() const; 38 bool isIdentity() const; 39 void update(float t = 0.0); 40 41 const osg::Quat& getQuaternion() const; 42 void setQuaternion(const osg::Quat&); 43 virtual Target* getOrCreateTarget(); 44 virtual Target* getTarget(); 45 virtual const Target* getTarget() const; 46 47 protected: 48 osg::Quat _quaternion; 49 osg::ref_ptr<QuatTarget> _target; 50 }; 51 52} 53 54#endif 55