StackedScaleElement 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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_SCALE_ELEMENT
  15. #define OSGANIMATION_STACKED_SCALE_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 StackedScaleElement : public StackedTransformElement
  23. {
  24. public:
  25. META_Object(osgAnimation, StackedScaleElement)
  26. StackedScaleElement();
  27. StackedScaleElement(const StackedScaleElement&, const osg::CopyOp&);
  28. StackedScaleElement(const std::string& name, const osg::Vec3& scale = osg::Vec3(1,1,1));
  29. StackedScaleElement(const osg::Vec3& scale);
  30. void applyToMatrix(osg::Matrix& matrix) const;
  31. osg::Matrix getAsMatrix() const;
  32. bool isIdentity() const;
  33. void update(float t = 0.0);
  34. const osg::Vec3& getScale() const;
  35. void setScale(const osg::Vec3& scale);
  36. virtual Target* getOrCreateTarget();
  37. virtual Target* getTarget();
  38. virtual const Target* getTarget() const;
  39. protected:
  40. osg::Vec3 _scale;
  41. osg::ref_ptr<Vec3Target> _target;
  42. };
  43. }
  44. #endif