19 #include <boost/unordered_map.hpp>
24 #include <matrix/vlTaitBryan.h>
25 #include <matrix/vlVector.h>
27 #include <osg/ref_ptr>
46 class DtInstanceManager;
47 class DtOsgSceneConnector;
48 class DtModelDefinition;
70 virtual void setModelDefinition(
const std::string& str);
74 virtual std::string className()
const;
78 virtual void setModelScalingEnabled(
bool b);
81 virtual bool modelScalingEnabled();
86 virtual void setLocalModelScalingEnabled(
bool enabled);
90 virtual void setLocalModelScalingAmount(
float localScl);
95 virtual void setPosition(
int vtx,
const DtVector& position);
100 virtual void setOrientation(
int vtx,
const DtTaitBryan& orientation);
105 virtual void setVisible(
bool isVisible);
110 virtual void setPartTranslation(
int partNumber,
114 virtual void setPartOrientation(
int partNumber,
115 const DtTaitBryan& orientation,
const DtVector& rotationalVelocity);
118 virtual void setState(
int stateNumber,
int stateValue);
122 int state(
int stateNumber)
const;
126 virtual void setLightpointMaxDistance(
float distance );
131 virtual void setDepthMask(osg::Group& parent);
135 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,
154 virtual void setAnimationLastFrameTime(
const std::string& animationName,
double animationLastFrameTime);
159 virtual void setAnimationLoopCount(
const std::string& animationName,
int loopCount);
165 virtual void setUvOffset(
const std::string& annotation,
166 float uOffset,
float vOffset);
169 virtual void setDynamicSensorRegion(
const std::string& region,
bool state);
172 virtual bool dynamicSensorRegion(
const std::string& region);
180 virtual void setLinkageConfigPair(
const std::string& linkageName,
const std::string& configName);
190 virtual bool findPartPositionAndOrientation(
int partNumber,
195 DtVector partTranslation(
int partNumber);
199 DtTaitBryan partOrientation(
int partNumber);
203 int state(
int stateNumber);
207 int animationFrameCount(
const std::string& animationName);
211 int animationCurrentFrame(
const std::string& animationName);
216 int animationFirstFrame(
const std::string& animationName);
221 int animationLastFrame(
const std::string& animationName);
225 double animationSpeed(
const std::string& animationName);
234 double animationLastFrameTime(
const std::string& animationName);
239 int animationLoopCount(
const std::string& animationName);
245 virtual void getParts(
PartList& parts)
const;
254 virtual void addPart(
int partNumber, osgSim::DOFTransform* node);
257 virtual void addState(
int stateNumber, osgSim::MultiSwitch* node);
261 virtual void setStateValueExists(
int stateNumber,
int stateValue);
264 virtual void addAnimation(
const std::string& animationName,
265 osg::Sequence* node);
268 virtual void addAnnotationGroup(
const std::string& annotation, osg::Group* group);
271 virtual void setColor(
float r,
float g,
float b,
float a);
274 virtual void enableColorBlending(
bool b);
277 virtual void setBlendColor(
float r,
float g,
float b,
float a);
280 virtual void setPartVisibility(
int partNumber,
bool onOff);
285 virtual void setIsSupportModel(
bool isSupport);
288 virtual void getBoundingBoxComponents(
DtVector& minimum,
DtVector& maximum);
292 std::vector<DtVirtualBaseClass*>& modelAttachments();
299 virtual void slot_onShadowStateChanged(
bool on);
302 virtual void slot_atcModeEnableChanged(
bool state);
315 virtual void setLightPointGroup(
const std::string &groupName);
318 virtual std::string lightPointGroup();
328 virtual void addToScene(
const DtUniqueID& sceneObjectId,
int modelSet,
330 virtual void removeFromScene();
332 virtual void disablePart(
int partNumber);
333 virtual void enablePart(
int partNumber);
335 virtual void modelInstanceToBeDeleted();
338 virtual void modelInstanceCreated(
bool castShadows,
bool daylightControlledLights,
float scale);
340 void parseModel(osg::Node* root);
354 static const unsigned int theNodePathCacheSize = 4;