18 #include <osg/Sequence>
19 #include <osgSim/DOFTransform>
20 #include <osgSim/MultiSwitch>
24 #include <boost/unordered_map.hpp>
34 class DtOsgArticulatedModel;
44 typedef boost::unordered_map<int, PartTransformList >
PartMap;
45 typedef std::vector< osg::ref_ptr<osgSim::MultiSwitch> >
StateList;
46 typedef boost::unordered_map<int, StateList >
StateMap;
48 typedef boost::unordered_map<std::string, AnimationList >
AnimationMap;
52 typedef std::vector< osg::ref_ptr<osg::Group> >
GroupList;
64 static std::string parserFormat();
69 virtual void apply(osg::Group& group);
70 virtual void apply(osg::Sequence& sequence);
71 virtual void apply(osgSim::MultiSwitch& multiswitch);
72 virtual void apply(osgSim::DOFTransform& transform);
73 virtual void apply(osg::Transform& transform);
82 virtual bool parseSwitchDeclaration(
const std::string& desc,
83 osgSim::MultiSwitch& multiswitch );
94 virtual bool parseStateDeclaration(
const std::string& desc,
101 virtual bool parseAnnotationDeclaration(
const std::string& desc,
108 virtual bool parsePartDeclaration(
const std::string& desc,
109 osgSim::DOFTransform& transform);
115 virtual bool parseAnimationDeclaration(
const std::string& desc,
116 osg::Sequence& sequence);
119 std::vector<int> parseValueList(
const std::string& valueList);
123 void pushStateId(
int idNumber, osgSim::MultiSwitch* lastStateId);
130 osgSim::MultiSwitch* lastStateId()
const;
133 int lastStateIdNumber()
const;
141 void addPart(
int partNumber,osgSim::DOFTransform* node );
142 void addState(
int stateNumber ,osgSim::MultiSwitch* node );
143 void addAnimation(
const std::string& animationName,osg::Sequence* node );
144 void setStateValueExists(
int stateNumber,
int stateValue );
145 void addAnnotationGroup(
const std::string& annotation, osg::Group* group);
146 void setDepthMask( osg::Group& parent );
181 static void registerCreator(
DtDe& de);