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);
128 virtual void setAnimationFrame(
const std::string& animationName,
132 virtual void setAnimationRange(
const std::string& animationName,
133 int firstFrameIndex,
int lastFrameIndex);
136 virtual void setAnimationSpeed(
const std::string& animationName,
137 double framesPerSecond);
140 virtual void setAnimationState(
const std::string& animationName,
147 virtual void setUvOffset(
const std::string& annotation,
148 float uOffset,
float vOffset);
151 virtual void setDynamicSensorRegion(
const std::string& region,
bool state );
154 virtual bool dynamicSensorRegion(
const std::string& region );
164 virtual bool findPartPositionAndOrientation(
int partNumber,
169 DtVector partTranslation(
int partNumber);
173 DtTaitBryan partOrientation(
int partNumber);
177 int state(
int stateNumber);
181 int animationFrameCount(
const std::string& animationName);
185 int animationCurrentFrame(
const std::string& animationName);
189 int animationFirstFrame(
const std::string& animationName);
193 int animationLastFrame(
const std::string& animationName);
197 double animationSpeed(
const std::string& animationName);
207 virtual void getParts(
PartList& parts)
const;
216 virtual void addPart(
int partNumber,osgSim::DOFTransform* node);
219 virtual void addState(
int stateNumber,osgSim::MultiSwitch* node);
223 virtual void setStateValueExists(
int stateNumber,
int stateValue);
226 virtual void addAnimation(
const std::string& animationName,
227 osg::Sequence* node);
230 virtual void addAnnotationGroup(
const std::string& annotation, osg::Group* group);
233 virtual void setColor(
float r,
float g,
float b,
float a);
236 virtual void enableColorBlending(
bool b );
239 virtual void setBlendColor(
float r,
float g,
float b,
float a);
242 virtual void setPartVisibility(
int partNumber,
bool onOff);
247 virtual void setIsSupportModel(
bool isSupport);
250 virtual void getBoundingBoxComponents(
DtVector& minimum,
DtVector& maximum );
254 std::vector<DtVirtualBaseClass*>& modelAttachments();
261 virtual void slot_onShadowStateChanged(
bool on);
275 virtual void addToScene(
const DtUniqueID& sceneObjectId,
int modelSet,
276 int visualizerType );
277 virtual void removeFromScene();
279 virtual void disablePart(
int partNumber);
280 virtual void enablePart(
int partNumber);
282 virtual void modelInstanceToBeDeleted();
283 virtual void modelInstanceCreated(
bool castShadows);
285 void parseModel(osg::Node* root);
299 static const unsigned int theNodePathCacheSize = 4;