18 #include <boost/unordered_map.hpp>
23 #include <matrix/vlTaitBryan.h>
24 #include <matrix/vlVector.h>
26 #include <osg/ref_ptr>
44 class DtInstanceManager;
45 class DtOsgSceneConnector;
46 class DtModelDefinition;
59 typedef boost::unordered_map<int, PartTransformList >
PartMap;
61 typedef std::vector< osg::ref_ptr<osgSim::MultiSwitch> >
StateList;
62 typedef boost::unordered_map<int, StateList >
StateMap;
65 typedef boost::unordered_map<std::string, AnimationList >
AnimationMap;
67 typedef std::vector< osg::ref_ptr<osg::Group> >
GroupList;
79 virtual void setModelDefinition(
const std::string& str);
83 virtual std::string className()
const;
87 virtual void setModelScalingEnabled(
bool b );
92 virtual void setLocalModelScalingEnabled(
bool enabled );
96 virtual void setLocalModelScalingAmount(
float localScl );
101 virtual void setPosition(
int vtx,
const DtVector& position );
106 virtual void setOrientation(
int vtx,
const DtTaitBryan& orientation );
111 virtual void setVisible(
bool isVisible);
116 virtual void setPartTranslation(
int partNumber,
120 virtual void setPartOrientation(
int partNumber,
121 const DtTaitBryan& orientation,
const DtVector& rotationalVelocity);
124 virtual void setState(
int stateNumber,
int stateValue);
128 int state(
int stateNumber )
const;
133 virtual void setDepthMask(osg::Group& parent);
136 virtual void setAnimationFrame(
const std::string& animationName,
140 virtual void setAnimationRange(
const std::string& animationName,
141 int firstFrameIndex,
int lastFrameIndex);
144 virtual void setAnimationSpeed(
const std::string& animationName,
145 double framesPerSecond);
148 virtual void setAnimationState(
const std::string& animationName,
155 virtual void setUvOffset(
const std::string& annotation,
156 float uOffset,
float vOffset);
159 virtual void setDynamicSensorRegion(
const std::string& region,
bool state );
162 virtual bool dynamicSensorRegion(
const std::string& region );
172 virtual bool findPartPositionAndOrientation(
int partNumber,
177 DtVector partTranslation(
int partNumber);
181 DtTaitBryan partOrientation(
int partNumber);
185 int state(
int stateNumber);
189 int animationFrameCount(
const std::string& animationName);
193 int animationCurrentFrame(
const std::string& animationName);
197 int animationFirstFrame(
const std::string& animationName);
201 int animationLastFrame(
const std::string& animationName);
205 double animationSpeed(
const std::string& animationName);
215 virtual void getParts(
PartList& parts)
const;
224 virtual void addPart(
int partNumber,osgSim::DOFTransform* node);
227 virtual void addState(
int stateNumber,osgSim::MultiSwitch* node);
231 virtual void setStateValueExists(
int stateNumber,
int stateValue);
234 virtual void addAnimation(
const std::string& animationName,
235 osg::Sequence* node);
238 virtual void addAnnotationGroup(
const std::string& annotation, osg::Group* group);
241 virtual void setColor(
float r,
float g,
float b,
float a);
244 virtual void setBlendColor(
float r,
float g,
float b,
float a);
247 virtual void setPartVisibility(
int partNumber,
bool onOff);
250 virtual void setSolid(
bool isSolid);
253 virtual void getBoundingBoxComponents(
DtVector& minimum,
DtVector& maximum );
257 std::vector<DtVirtualBaseClass*>& modelAttachments();
272 virtual void addToScene(
const DtUniqueID& sceneObjectId,
int modelSet,
273 int visualizerType );
274 virtual void removeFromScene();
276 virtual void disablePart(
int partNumber);
277 virtual void enablePart(
int partNumber);
279 virtual void modelInstanceToBeDeleted();
280 virtual void modelInstanceCreated(
bool castShadows);
284 virtual void calculateInstancedBounds(
double& radius,
DtVector& center );
286 static void matrixdToTaitBryan(
const osg::Matrixd& rotation, DtTaitBryan& tb );
287 static double clampUnity(
double x );
314 static const unsigned int theNodePathCacheSize = 4;