16 #include <boost/unordered_map.hpp>
18 #include <matrix/vlTaitBryan.h>
19 #include <matrix/vlVector.h>
21 #include <osg/ref_ptr>
39 class DtOsgSceneConnector;
52 typedef boost::unordered_map<int, PartTransformList >
PartMap;
54 typedef std::vector< osg::ref_ptr<osgSim::MultiSwitch> >
StateList;
55 typedef boost::unordered_map<int, StateList >
StateMap;
58 typedef boost::unordered_map<std::string, AnimationList >
AnimationMap;
69 virtual void setModelDefinition(
const std::string& str);
73 virtual std::string className()
const;
77 virtual void setModelScalingEnabled(
bool b );
82 virtual void setLocalModelScalingEnabled(
bool enabled );
86 virtual void setLocalModelScalingAmount(
float localScl );
88 virtual void setPosition(
int vtx,
const DtVector& position );
89 virtual void setOrientation(
int vtx,
const DtTaitBryan& orientation );
94 virtual void setVisible(
bool isVisible);
99 virtual void setPartTranslation(
int partNumber,
103 virtual void setPartOrientation(
int partNumber,
104 const DtTaitBryan& orientation,
const DtVector& rotationalVelocity);
107 virtual void setState(
int stateNumber,
int stateValue);
110 virtual void setAnimationFrame(
const std::string& animationName,
114 virtual void setAnimationRange(
const std::string& animationName,
115 int firstFrameIndex,
int lastFrameIndex);
118 virtual void setAnimationSpeed(
const std::string& animationName,
119 double framesPerSecond);
129 virtual bool findPartPositionAndOrientation(
int partNumber,
134 DtVector partTranslation(
int partNumber);
138 DtTaitBryan partOrientation(
int partNumber);
142 int state(
int stateNumber);
146 int animationFrameCount(
const std::string& animationName);
150 int animationCurrentFrame(
const std::string& animationName);
154 int animationFirstFrame(
const std::string& animationName);
158 int animationLastFrame(
const std::string& animationName);
162 double animationSpeed(
const std::string& animationName);
168 virtual void getParts(
PartList& parts)
const;
177 virtual void addPart(
int partNumber,osgSim::DOFTransform* node);
180 virtual void addState(
int stateNumber,osgSim::MultiSwitch* node);
184 virtual void setStateValueExists(
int stateNumber,
int stateValue);
187 virtual void addAnimation(
const std::string& animationName,
188 osg::Sequence* node);
190 virtual void setColor(
float r,
float g,
float b,
float a);
192 virtual void setPartVisibility(
int partNumber,
bool onOff);
195 virtual void setSolid(
bool isSolid);
201 virtual void addToScene(
const DtUniqueID& sceneObjectId,
int modelSet,
202 int visualizerType );
203 virtual void removeFromScene();
205 virtual void disablePart(
int partNumber);
206 virtual void enablePart(
int partNumber);
208 virtual void modelInstanceToBeDeleted();
209 virtual void modelInstanceCreated(
bool castShadows);
211 static void matrixdToTaitBryan(
const osg::Matrixd& rotation, DtTaitBryan& tb );
212 static double clampUnity(
double x );
225 static const unsigned int theNodePathCacheSize = 4;