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 );
81 virtual void setLocalModelScalingEnabled(
bool enabled );
85 virtual void setLocalModelScalingAmount(
float localScl );
90 virtual void setPosition(
int vtx,
const DtVector& position );
95 virtual void setOrientation(
int vtx,
const DtTaitBryan& orientation );
100 virtual void setVisible(
bool isVisible);
105 virtual void setPartTranslation(
int partNumber,
109 virtual void setPartOrientation(
int partNumber,
110 const DtTaitBryan& orientation,
const DtVector& rotationalVelocity);
113 virtual void setState(
int stateNumber,
int stateValue);
117 int state(
int stateNumber )
const;
122 virtual void setDepthMask(osg::Group& parent);
125 virtual void setAnimationFrame(
const std::string& animationName,
129 virtual void setAnimationRange(
const std::string& animationName,
130 int firstFrameIndex,
int lastFrameIndex);
133 virtual void setAnimationSpeed(
const std::string& animationName,
134 double framesPerSecond);
137 virtual void setAnimationState(
const std::string& animationName,
144 virtual void setUvOffset(
const std::string& annotation,
145 float uOffset,
float vOffset);
148 virtual void setDynamicSensorRegion(
const std::string& region,
bool state );
151 virtual bool dynamicSensorRegion(
const std::string& region );
161 virtual bool findPartPositionAndOrientation(
int partNumber,
166 DtVector partTranslation(
int partNumber);
170 DtTaitBryan partOrientation(
int partNumber);
174 int state(
int stateNumber);
178 int animationFrameCount(
const std::string& animationName);
182 int animationCurrentFrame(
const std::string& animationName);
186 int animationFirstFrame(
const std::string& animationName);
190 int animationLastFrame(
const std::string& animationName);
194 double animationSpeed(
const std::string& animationName);
204 virtual void getParts(
PartList& parts)
const;
213 virtual void addPart(
int partNumber,osgSim::DOFTransform* node);
216 virtual void addState(
int stateNumber,osgSim::MultiSwitch* node);
220 virtual void setStateValueExists(
int stateNumber,
int stateValue);
223 virtual void addAnimation(
const std::string& animationName,
224 osg::Sequence* node);
227 virtual void addAnnotationGroup(
const std::string& annotation, osg::Group* group);
230 virtual void setColor(
float r,
float g,
float b,
float a);
233 virtual void enableColorBlending(
bool b );
236 virtual void setBlendColor(
float r,
float g,
float b,
float a);
239 virtual void setPartVisibility(
int partNumber,
bool onOff);
244 virtual void setIsSupportModel(
bool isSupport);
247 virtual void getBoundingBoxComponents(
DtVector& minimum,
DtVector& maximum );
251 std::vector<DtVirtualBaseClass*>& modelAttachments();
258 virtual void slot_onShadowStateChanged(
bool on);
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);
282 void parseModel(osg::Node* root);
286 virtual void calculateInstancedBounds(
double& radius,
DtVector& center );
288 static void matrixdToTaitBryan(
const osg::Matrixd& rotation, DtTaitBryan& tb );
289 static double clampUnity(
double x );
304 static const unsigned int theNodePathCacheSize = 4;