19 #include <boost/unordered_map.hpp>
24 #include <matrix/vlTaitBryan.h>
25 #include <matrix/vlVector.h>
27 #include <osg/ref_ptr>
45 class DtInstanceManager;
46 class DtOsgSceneConnector;
47 class DtModelDefinition;
68 virtual void setModelDefinition(
const std::string& str);
72 virtual std::string className()
const;
76 virtual void setModelScalingEnabled(
bool b );
79 virtual bool modelScalingEnabled();
84 virtual void setLocalModelScalingEnabled(
bool enabled );
88 virtual void setLocalModelScalingAmount(
float localScl );
93 virtual void setPosition(
int vtx,
const DtVector& position );
98 virtual void setOrientation(
int vtx,
const DtTaitBryan& orientation );
103 virtual void setVisible(
bool isVisible);
108 virtual void setPartTranslation(
int partNumber,
112 virtual void setPartOrientation(
int partNumber,
113 const DtTaitBryan& orientation,
const DtVector& rotationalVelocity);
116 virtual void setState(
int stateNumber,
int stateValue);
120 int state(
int stateNumber )
const;
125 virtual void setDepthMask(osg::Group& parent);
129 virtual void setAnimationFrame(
const std::string& animationName,
134 virtual void setAnimationRange(
const std::string& animationName,
135 int firstFrameIndex,
int lastFrameIndex);
138 virtual void setAnimationSpeed(
const std::string& animationName,
139 double framesPerSecond);
142 virtual void setAnimationState(
const std::string& animationName,
148 virtual void setAnimationLastFrameTime(
const std::string& animationName,
double animationLastFrameTime);
153 virtual void setAnimationLoopCount(
const std::string& animationName,
int loopCount);
159 virtual void setUvOffset(
const std::string& annotation,
160 float uOffset,
float vOffset);
163 virtual void setDynamicSensorRegion(
const std::string& region,
bool state );
166 virtual bool dynamicSensorRegion(
const std::string& region );
176 virtual bool findPartPositionAndOrientation(
int partNumber,
181 DtVector partTranslation(
int partNumber);
185 DtTaitBryan partOrientation(
int partNumber);
189 int state(
int stateNumber);
193 int animationFrameCount(
const std::string& animationName);
197 int animationCurrentFrame(
const std::string& animationName);
202 int animationFirstFrame(
const std::string& animationName);
207 int animationLastFrame(
const std::string& animationName);
211 double animationSpeed(
const std::string& animationName);
220 double animationLastFrameTime(
const std::string& animationName);
225 int animationLoopCount(
const std::string& animationName);
231 virtual void getParts(
PartList& parts)
const;
240 virtual void addPart(
int partNumber,osgSim::DOFTransform* node);
243 virtual void addState(
int stateNumber,osgSim::MultiSwitch* node);
247 virtual void setStateValueExists(
int stateNumber,
int stateValue);
250 virtual void addAnimation(
const std::string& animationName,
251 osg::Sequence* node);
254 virtual void addAnnotationGroup(
const std::string& annotation, osg::Group* group);
257 virtual void setColor(
float r,
float g,
float b,
float a);
260 virtual void enableColorBlending(
bool b );
263 virtual void setBlendColor(
float r,
float g,
float b,
float a);
266 virtual void setPartVisibility(
int partNumber,
bool onOff);
271 virtual void setIsSupportModel(
bool isSupport);
274 virtual void getBoundingBoxComponents(
DtVector& minimum,
DtVector& maximum );
278 std::vector<DtVirtualBaseClass*>& modelAttachments();
285 virtual void slot_onShadowStateChanged(
bool on);
299 virtual void addToScene(
const DtUniqueID& sceneObjectId,
int modelSet,
300 int visualizerType );
301 virtual void removeFromScene();
303 virtual void disablePart(
int partNumber);
304 virtual void enablePart(
int partNumber);
306 virtual void modelInstanceToBeDeleted();
307 virtual void modelInstanceCreated(
bool castShadows,
bool daylightControlledLights,
float scale);
309 void parseModel(osg::Node* root);
323 static const unsigned int theNodePathCacheSize = 4;