VR-Forces 4.1.1 Class Documentation
DtOsgArticulatedModel.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2012 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
13 
15 
16 #include <boost/unordered_map.hpp>
17 
18 #include <matrix/vlTaitBryan.h>
19 #include <matrix/vlVector.h>
20 
21 #include <osg/ref_ptr>
22 
23 namespace osg
24 {
25  class Matrixd;
26  class Sequence;
27  class Node;
28 }
29 
30 namespace osgSim
31 {
32  class DOFTransform;
33  class MultiSwitch;
34 }
35 
36 namespace makVrv
37 {
38 
39  class DtOsgSceneConnector;
40 
45  {
46  public:
47 
48  typedef std::vector<osg::Node*> NodeList;
49  typedef boost::unordered_map<int, NodeList> NodePathCache;
50 
51  typedef std::vector<osg::ref_ptr<osgSim::DOFTransform> > PartTransformList;
52  typedef boost::unordered_map<int, PartTransformList > PartMap;
53 
54  typedef std::vector< osg::ref_ptr<osgSim::MultiSwitch> > StateList;
55  typedef boost::unordered_map<int, StateList > StateMap;
56 
57  typedef std::vector< osg::ref_ptr<osg::Sequence> > AnimationList;
58  typedef boost::unordered_map<std::string, AnimationList > AnimationMap;
59 
62 
64  virtual ~DtOsgArticulatedModel();
65 
66 
69  virtual void setModelDefinition(const std::string& str);
70 
73  virtual std::string className() const;
74 
77  virtual void setModelScalingEnabled( bool b );
78 
82  virtual void setLocalModelScalingEnabled( bool enabled );
83 
86  virtual void setLocalModelScalingAmount( float localScl );
87 
88  virtual void setPosition( int vtx, const DtVector& position );
89  virtual void setOrientation( int vtx, const DtTaitBryan& orientation );
90 
94  virtual void setVisible(bool isVisible);
95 
97 
99  virtual void setPartTranslation(int partNumber,
100  const DtVector& transform, const DtVector& velocity);
101 
103  virtual void setPartOrientation(int partNumber,
104  const DtTaitBryan& orientation, const DtVector& rotationalVelocity);
105 
107  virtual void setState(int stateNumber, int stateValue);
108 
110  virtual void setAnimationFrame(const std::string& animationName,
111  int frameIndex);
112 
114  virtual void setAnimationRange(const std::string& animationName,
115  int firstFrameIndex, int lastFrameIndex);
116 
118  virtual void setAnimationSpeed(const std::string& animationName,
119  double framesPerSecond);
120 
122 
123  //@name Non-distributed functions
125 
129  virtual bool findPartPositionAndOrientation(int partNumber,
130  DtVector& position, DtQuat& ori);
131 
134  DtVector partTranslation(int partNumber);
135 
138  DtTaitBryan partOrientation(int partNumber);
139 
142  int state(int stateNumber);
143 
146  int animationFrameCount(const std::string& animationName);
147 
150  int animationCurrentFrame(const std::string& animationName);
151 
154  int animationFirstFrame(const std::string& animationName);
155 
158  int animationLastFrame(const std::string& animationName);
159 
162  double animationSpeed(const std::string& animationName);
163 
165  const PartMap& parts() const;
166 
168  virtual void getParts(PartList& parts) const;
169 
171  const StateMap& states() const;
172 
174  const AnimationMap& animations() const;
175 
177  virtual void addPart(int partNumber,osgSim::DOFTransform* node);
178 
180  virtual void addState(int stateNumber,osgSim::MultiSwitch* node);
181 
184  virtual void setStateValueExists(int stateNumber, int stateValue);
185 
187  virtual void addAnimation(const std::string& animationName,
188  osg::Sequence* node);
189 
190  virtual void setColor(float r, float g, float b, float a);
191 
192  virtual void setPartVisibility(int partNumber, bool onOff);
193 
195  virtual void setSolid(bool isSolid);
196 
198 
199  protected:
200 
201  virtual void addToScene( const DtUniqueID& sceneObjectId, int modelSet,
202  int visualizerType );
203  virtual void removeFromScene();
204 
205  virtual void disablePart(int partNumber);
206  virtual void enablePart(int partNumber);
207 
208  virtual void modelInstanceToBeDeleted();
209  virtual void modelInstanceCreated(bool castShadows);
210 
211  static void matrixdToTaitBryan( const osg::Matrixd& rotation, DtTaitBryan& tb );
212  static double clampUnity( double x );
213 
214  protected:
215 
216  typedef std::vector<bool> StateExistenceList;
217  typedef boost::unordered_map<int, StateExistenceList> StateExistenceMap;
219 
225  static const unsigned int theNodePathCacheSize = 4;
227  };
228 }

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)