OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DOFTransform.h
Go to the documentation of this file.
1 /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2  *
3  * This library is open source and may be redistributed and/or modified under
4  * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5  * (at your option) any later version. The full license is in LICENSE file
6  * included with this distribution, and on the openscenegraph.org website.
7  *
8  * This library is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * OpenSceneGraph Public License for more details.
12 */
13 
14 #ifndef OSGSIM_DOFTRANSFORM
15 #define OSGSIM_DOFTRANSFORM 1
16 
17 //base class:
18 #include <osg/Transform>
19 
20 #include <osgSim/Export>
21 
22 namespace osgSim {
23 
26 {
27  public:
29  DOFTransform();
30 
33 
35 
36  virtual void traverse(osg::NodeVisitor& nv);
37 
38 
39  void setMinHPR(const osg::Vec3& hpr) { _minHPR = hpr;}
40  const osg::Vec3& getMinHPR() const { return _minHPR;}
41 
42  void setMaxHPR(const osg::Vec3& hpr) {_maxHPR = hpr;}
43  const osg::Vec3& getMaxHPR() const { return _maxHPR;}
44 
45  void setIncrementHPR(const osg::Vec3& hpr) {_incrementHPR = hpr;}
46  const osg::Vec3& getIncrementHPR() const { return _incrementHPR;}
47 
48  void setCurrentHPR(const osg::Vec3& hpr) {_currentHPR = hpr; dirtyBound(); }
49  const osg::Vec3& getCurrentHPR() const {return _currentHPR;}
50 
51  void updateCurrentHPR(const osg::Vec3& hpr);
52 
53 
54  void setMinTranslate(const osg::Vec3& translate) {_minTranslate = translate; }
55  const osg::Vec3& getMinTranslate() const { return _minTranslate;}
56 
57  void setMaxTranslate(const osg::Vec3& translate) {_maxTranslate = translate; }
58  const osg::Vec3& getMaxTranslate() const { return _maxTranslate;}
59 
60  void setIncrementTranslate(const osg::Vec3& translate) { _incrementTranslate = translate; }
61  const osg::Vec3& getIncrementTranslate() const { return _incrementTranslate;}
62 
63  void setCurrentTranslate(const osg::Vec3& translate){ _currentTranslate = translate; dirtyBound(); }
64  inline const osg::Vec3& getCurrentTranslate() const { return _currentTranslate;}
65 
66  void updateCurrentTranslate(const osg::Vec3& translate);
67 
68 
69  void setMinScale(const osg::Vec3& scale) { _minScale = scale;}
70  const osg::Vec3& getMinScale() const { return _minScale;}
71 
72  void setMaxScale(const osg::Vec3& scale) { _maxScale = scale;}
73  const osg::Vec3& getMaxScale() const { return _maxScale;}
74 
75  void setIncrementScale(const osg::Vec3& scale) { _incrementScale = scale;}
76  const osg::Vec3& getIncrementScale() const { return _incrementScale;}
77 
78  void setCurrentScale(const osg::Vec3& scale) { _currentScale = scale; dirtyBound(); }
79  inline const osg::Vec3& getCurrentScale() const { return _currentScale;}
80 
81  void updateCurrentScale(const osg::Vec3& scale);
82 
83 
84  void setPutMatrix(const osg::Matrix& put) { _Put = put; dirtyBound(); }
85  inline const osg::Matrix& getPutMatrix() const {return _Put;}
86 
87  void setInversePutMatrix(const osg::Matrix& inversePut) { _inversePut = inversePut; dirtyBound(); }
88  inline const osg::Matrix& getInversePutMatrix() const {return _inversePut;}
89 
90  void setLimitationFlags(unsigned long flags) { _limitationFlags = flags;}
91  inline unsigned long getLimitationFlags() const {return _limitationFlags;}
92 
93  enum MultOrder
94  {
95  PRH,
96  PHR,
97  HPR,
98  HRP,
99  RPH,
100  RHP
101  };
102 
103  void setHPRMultOrder(MultOrder order) { _multOrder = order; }
104  inline MultOrder getHPRMultOrder() const { return _multOrder;}
105 
106  void setAnimationOn(bool do_animate);
107  inline bool getAnimationOn() const { return _animationOn; }
108 
109  void animate(float deltaTime);
110 
111  virtual bool computeLocalToWorldMatrix(osg::Matrix& matrix,osg::NodeVisitor* nv) const;
112 
113  virtual bool computeWorldToLocalMatrix(osg::Matrix& matrix,osg::NodeVisitor* nv) const;
114 
115  protected:
116 
117  virtual ~DOFTransform() {}
118 
121 
126 
131 
136 
139 
140  unsigned long _limitationFlags;
141  /* bits from left to right
142  0 = x translation limited (2^31)
143  1 = y translation limited (2^30)
144  2 = z translation limited (2^29)
145  3 = pitch limited (2^28)
146  4 = roll limited (2^27)
147  5 = yaw limited (2^26)
148  6 = x scale limited (2^25)
149  7 = y scale limited (2^24)
150  8 = z scale limited (2^23)
151 
152  else reserved
153  */
154 
168  unsigned short _increasingFlags;
169 
171 
172  };
173 
174 }
175 #endif
osg::Vec3 _incrementScale
Definition: DOFTransform.h:135
#define OSGSIM_EXPORT
Definition: Export.h:38
void setCurrentHPR(const osg::Vec3 &hpr)
Definition: DOFTransform.h:48
osg::Vec3 _incrementTranslate
Definition: DOFTransform.h:130
bool getAnimationOn() const
Definition: DOFTransform.h:107
unsigned short _increasingFlags
Definition: DOFTransform.h:168
void setIncrementScale(const osg::Vec3 &scale)
Definition: DOFTransform.h:75
void setCurrentTranslate(const osg::Vec3 &translate)
Definition: DOFTransform.h:63
const osg::Matrix & getPutMatrix() const
Definition: DOFTransform.h:85
void setLimitationFlags(unsigned long flags)
Definition: DOFTransform.h:90
const osg::Vec3 & getCurrentTranslate() const
Definition: DOFTransform.h:64
void setMinTranslate(const osg::Vec3 &translate)
Definition: DOFTransform.h:54
#define META_Node(library, name)
Definition: Node.h:59
const osg::Vec3 & getMinScale() const
Definition: DOFTransform.h:70
const osg::Vec3 & getMaxTranslate() const
Definition: DOFTransform.h:58
osg::Matrix _inversePut
Definition: DOFTransform.h:138
const osg::Vec3 & getMaxScale() const
Definition: DOFTransform.h:73
void setInversePutMatrix(const osg::Matrix &inversePut)
Definition: DOFTransform.h:87
const osg::Vec3 & getMinHPR() const
Definition: DOFTransform.h:40
void setMaxScale(const osg::Vec3 &scale)
Definition: DOFTransform.h:72
const osg::Vec3 & getIncrementTranslate() const
Definition: DOFTransform.h:61
void setMaxTranslate(const osg::Vec3 &translate)
Definition: DOFTransform.h:57
void setHPRMultOrder(MultOrder order)
Definition: DOFTransform.h:103
void setPutMatrix(const osg::Matrix &put)
Definition: DOFTransform.h:84
const osg::Vec3 & getCurrentScale() const
Definition: DOFTransform.h:79
const osg::Vec3 & getMaxHPR() const
Definition: DOFTransform.h:43
void setIncrementTranslate(const osg::Vec3 &translate)
Definition: DOFTransform.h:60
const osg::Vec3 & getIncrementHPR() const
Definition: DOFTransform.h:46
void setIncrementHPR(const osg::Vec3 &hpr)
Definition: DOFTransform.h:45
const osg::Vec3 & getCurrentHPR() const
Definition: DOFTransform.h:49
const osg::Matrix & getInversePutMatrix() const
Definition: DOFTransform.h:88
unsigned int _previousTraversalNumber
Definition: DOFTransform.h:119
const osg::Vec3 & getMinTranslate() const
Definition: DOFTransform.h:55
void setMinScale(const osg::Vec3 &scale)
Definition: DOFTransform.h:69
void setCurrentScale(const osg::Vec3 &scale)
Definition: DOFTransform.h:78
void setMaxHPR(const osg::Vec3 &hpr)
Definition: DOFTransform.h:42
unsigned long getLimitationFlags() const
Definition: DOFTransform.h:91
const osg::Vec3 & getIncrementScale() const
Definition: DOFTransform.h:76
MultOrder getHPRMultOrder() const
Definition: DOFTransform.h:104
osg::Vec3 _currentTranslate
Definition: DOFTransform.h:129
unsigned long _limitationFlags
Definition: DOFTransform.h:140
void setMinHPR(const osg::Vec3 &hpr)
Definition: DOFTransform.h:39