16 #include <osg/Sequence>
17 #include <osgSim/DOFTransform>
18 #include <osgSim/MultiSwitch>
22 #include <boost/unordered_map.hpp>
32 class DtOsgArticulatedModel;
42 typedef boost::unordered_map<int, PartTransformList >
PartMap;
43 typedef std::vector< osg::ref_ptr<osgSim::MultiSwitch> >
StateList;
44 typedef boost::unordered_map<int, StateList >
StateMap;
46 typedef boost::unordered_map<std::string, AnimationList >
AnimationMap;
50 typedef std::vector< osg::ref_ptr<osg::Group> >
GroupList;
62 static std::string parserFormat();
67 virtual void apply(osg::Group& group);
68 virtual void apply(osg::Sequence& sequence);
69 virtual void apply(osgSim::MultiSwitch& multiswitch);
70 virtual void apply(osgSim::DOFTransform& transform);
71 virtual void apply(osg::Transform& transform);
80 virtual bool parseSwitchDeclaration(
const std::string& desc,
81 osgSim::MultiSwitch& multiswitch );
92 virtual bool parseStateDeclaration(
const std::string& desc,
99 virtual bool parseAnnotationDeclaration(
const std::string& desc,
106 virtual bool parsePartDeclaration(
const std::string& desc,
107 osgSim::DOFTransform& transform);
113 virtual bool parseAnimationDeclaration(
const std::string& desc,
114 osg::Sequence& sequence);
117 std::vector<int> parseValueList(
const std::string& valueList);
121 void pushStateId(
int idNumber, osgSim::MultiSwitch* lastStateId);
128 osgSim::MultiSwitch* lastStateId()
const;
131 int lastStateIdNumber()
const;
139 void addPart(
int partNumber,osgSim::DOFTransform* node );
140 void addState(
int stateNumber ,osgSim::MultiSwitch* node );
141 void addAnimation(
const std::string& animationName,osg::Sequence* node );
142 void setStateValueExists(
int stateNumber,
int stateValue );
143 void addAnnotationGroup(
const std::string& annotation, osg::Group* group);
144 void setDepthMask( osg::Group& parent );
179 static void registerCreator(
DtDe& de);