StackedMatrixElement 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. #ifndef OSGANIMATION_STACKED_MATRIX_ELEMENT
  15. #define OSGANIMATION_STACKED_MATRIX_ELEMENT 1
  16. #include <osg/Object>
  17. #include <osgAnimation/Export>
  18. #include <osgAnimation/StackedTransformElement>
  19. #include <osgAnimation/Target>
  20. namespace osgAnimation
  21. {
  22. class OSGANIMATION_EXPORT StackedMatrixElement : public StackedTransformElement
  23. {
  24. public:
  25. META_Object(osgAnimation, StackedMatrixElement);
  26. StackedMatrixElement();
  27. StackedMatrixElement(const StackedMatrixElement&, const osg::CopyOp&);
  28. StackedMatrixElement(const std::string& name, const osg::Matrix& matrix);
  29. StackedMatrixElement(const osg::Matrix& matrix);
  30. void applyToMatrix(osg::Matrix& matrix) const { matrix = _matrix * matrix; }
  31. osg::Matrix getAsMatrix() const { return _matrix; }
  32. const osg::Matrix& getMatrix() const { return _matrix;}
  33. void setMatrix(const osg::Matrix& matrix) { _matrix = matrix;}
  34. bool isIdentity() const { return _matrix.isIdentity(); }
  35. void update(float t = 0.0);
  36. virtual Target* getOrCreateTarget();
  37. virtual Target* getTarget() {return _target.get();}
  38. virtual const Target* getTarget() const {return _target.get();}
  39. protected:
  40. osg::Matrix _matrix;
  41. osg::ref_ptr<MatrixTarget> _target;
  42. };
  43. }
  44. #endif