VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtArticulatedModelParser.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
8 
9 #pragma once
12 
13 #include <vrvOsg/DtModelParser.h>
14 
15 #include <osg/Group>
16 #include <osg/Sequence>
17 #include <osgSim/DOFTransform>
18 #include <osgSim/MultiSwitch>
19 
20 #include <stack>
21 
22 #include <boost/unordered_map.hpp>
23 
24 namespace osg
25 {
26  class Group;
27  class Sequence;
28 }
29 
30 namespace makVrv
31 {
32  class DtOsgArticulatedModel;
33 
37  {
38  public:
41  typedef std::vector<osg::ref_ptr<osgSim::DOFTransform> > PartTransformList;
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;
45  typedef std::vector< osg::ref_ptr<osg::Sequence> > AnimationList;
46  typedef boost::unordered_map<std::string, AnimationList > AnimationMap;
47  typedef std::map<int, int > StateValueMap;
48  typedef std::vector<bool> StateExistenceList;
49  typedef boost::unordered_map<int, StateExistenceList> StateExistenceMap;
50  typedef std::vector< osg::ref_ptr<osg::Group> > GroupList;
51  typedef boost::unordered_map<std::string, GroupList > AnnotationMap;
53 
56 
58  virtual ~DtArticulatedModelParser();
59 
62  static std::string parserFormat();
63 
65 
66 
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);
73 
74  protected:
75 
80  virtual bool parseSwitchDeclaration( const std::string& desc,
81  osgSim::MultiSwitch& multiswitch );
82 
85  const DtModelSemanticsMapper::States::Id* createCustomStateId(
86  const std::string& stateName, DtModelSemanticsMapper& mapper);
87 
92  virtual bool parseStateDeclaration( const std::string& desc,
93  osg::Group& group );
94 
99  virtual bool parseAnnotationDeclaration( const std::string& desc,
100  osg::Group& group );
101 
106  virtual bool parsePartDeclaration(const std::string& desc,
107  osgSim::DOFTransform& transform);
108 
113  virtual bool parseAnimationDeclaration(const std::string& desc,
114  osg::Sequence& sequence);
115 
117  std::vector<int> parseValueList(const std::string& valueList);
118 
121  void pushStateId(int idNumber, osgSim::MultiSwitch* lastStateId);
122 
125  void popStateId();
126 
128  osgSim::MultiSwitch* lastStateId() const;
129 
131  int lastStateIdNumber() const;
132 
135  void getParts( DtArticulatedModel::PartList& parts ) const;
136  const PartMap& parts() const;
137  const StateMap& states() const;
138  const AnimationMap& animations() 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 );
146 
147  protected:
148 
149  std::string mySwitchTag;
150  std::string myStateTag;
151  std::string myPartTag;
152  std::string myAnimationTag;
153  std::string mySkipTag;
154  std::string myNoSkipTag;
155  std::string myAnnotationTag;
156 
157  std::stack<osg::ref_ptr<osgSim::MultiSwitch> > myStateIds;
158  std::stack<int> myStateIdNumbers;
159 
161 
162  public:
169  };
170 
174  {
175  public:
176 
179  static void registerCreator(DtDe& de);
180 
183 
186 
188  virtual DtModelParser* create(DtDe& de);
189  };
190 
191 }

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)