VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtArticulatedModelParser.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2018 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  class DtModelSemanticsMapper;
34 
38  {
39  public:
42  typedef std::vector<osg::ref_ptr<osgSim::DOFTransform> > PartTransformList;
43  typedef boost::unordered_map<int, PartTransformList > PartMap;
44  typedef std::vector< osg::ref_ptr<osgSim::MultiSwitch> > StateList;
45  typedef boost::unordered_map<int, StateList > StateMap;
46  typedef std::vector< osg::ref_ptr<osg::Sequence> > AnimationList;
47  typedef boost::unordered_map<std::string, AnimationList > AnimationMap;
48  typedef std::map<int, int > StateValueMap;
49  typedef std::vector<int> StateExistenceList;
50  typedef boost::unordered_map<int, StateExistenceList> StateExistenceMap;
51  typedef std::vector< osg::ref_ptr<osg::Group> > GroupList;
52  typedef boost::unordered_map<std::string, GroupList > AnnotationMap;
53  typedef std::vector<bool> ValueList;
54  typedef std::vector<ValueList> SwitchSetList;
55  typedef std::map<osgSim::MultiSwitch*, SwitchSetList> SwitchSetMap;
57 
59  DtArticulatedModelParser(DtDe& de, DtModelSemanticsMapper& modelSematicsMapper);
60 
62  virtual ~DtArticulatedModelParser();
63 
66  static std::string parserFormat();
67 
69  virtual void apply(osg::Group& group);
72  virtual void apply(osg::Sequence& sequence);
73  virtual void apply(osgSim::MultiSwitch& multiswitch);
74  virtual void apply(osgSim::DOFTransform& transform);
75  virtual void apply(osg::Transform& transform);
77 
78  protected:
79 
84  virtual bool parseSwitchDeclaration( const std::string& desc,
85  osgSim::MultiSwitch& multiswitch );
86 
89  virtual bool parseDefaultMultiSwitchValues(osgSim::MultiSwitch& multiswitch);
90 
93  const DtModelSemanticsMapper::States::Id* createCustomStateId(
94  const std::string& stateName, DtModelSemanticsMapper& mapper);
95 
100  virtual bool parseStateDeclaration( const std::string& desc,
101  osg::Group& group );
102 
107  virtual bool parseAnnotationDeclaration( const std::string& desc,
108  osg::Group& group );
109 
114  virtual bool parsePartDeclaration(const std::string& desc,
115  osgSim::DOFTransform& transform);
116 
121  virtual bool parseAnimationDeclaration(const std::string& desc,
122  osg::Sequence& sequence);
123 
125  std::vector<int> parseValueList(const std::string& valueList);
126 
129  void pushStateId(int idNumber, osgSim::MultiSwitch* lastStateId);
130 
133  void popStateId();
134 
136  osgSim::MultiSwitch* lastStateId() const;
137 
139  int lastStateIdNumber() const;
140 
143  void getParts( DtArticulatedModel::PartList& parts ) const;
144  const PartMap& parts() const;
145  const StateMap& states() const;
146  const AnimationMap& animations() const;
147  void addPart( int partNumber,osgSim::DOFTransform* node );
148  void addState( int stateNumber ,osgSim::MultiSwitch* node );
149  void addAnimation( const std::string& animationName,osg::Sequence* node );
150  void setStateValueExists( int stateNumber, int stateValue );
151  void addAnnotationGroup(const std::string& annotation, osg::Group* group);
152  void setDepthMask( osg::Group& parent );
154 
155  protected:
156 
157  std::string mySwitchTag;
158  std::string myStateTag;
159  std::string myPartTag;
160  std::string myAnimationTag;
161  std::string mySkipTag;
162  std::string myNoSkipTag;
163  std::string myAnnotationTag;
164  std::string myLoopCountTag;
165  std::string myLastFrameTimeTag;
166 
167  std::stack<osg::ref_ptr<osgSim::MultiSwitch> > myStateIds;
168  std::stack<int> myStateIdNumbers;
169 
171 
172  public:
181  };
182 
186  {
187  public:
188 
191  static void registerCreator(DtDe& de);
192 
195 
198 
200  virtual DtModelParser* create(DtDe& de);
201  };
202 
203 }
std::stack< int > myStateIdNumbers
Definition: DtArticulatedModelParser.h:168
std::string myAnimationTag
Definition: DtArticulatedModelParser.h:160
PartMap myPartMap
Definition: DtArticulatedModelParser.h:173
std::map< int, int > StateValueMap
Definition: DtArticulatedModelParser.h:48
std::string myAnnotationTag
Definition: DtArticulatedModelParser.h:163
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Abstract base class used to parse a model.
Definition: DtModelParser.h:22
std::string myNoSkipTag
Definition: DtArticulatedModelParser.h:162
std::vector< osg::ref_ptr< osg::Group > > GroupList
Definition: DtArticulatedModelParser.h:51
AnnotationMap myAnnotationMap
Definition: DtArticulatedModelParser.h:176
std::vector< osg::ref_ptr< osgSim::DOFTransform > > PartTransformList
Definition: DtArticulatedModelParser.h:42
boost::unordered_map< std::string, AnimationList > AnimationMap
Definition: DtArticulatedModelParser.h:47
std::string myPartTag
Definition: DtArticulatedModelParser.h:159
std::string myLastFrameTimeTag
Definition: DtArticulatedModelParser.h:165
std::map< osgSim::MultiSwitch *, SwitchSetList > SwitchSetMap
Definition: DtArticulatedModelParser.h:55
std::string myStateTag
Definition: DtArticulatedModelParser.h:158
boost::unordered_map< int, StateList > StateMap
Definition: DtArticulatedModelParser.h:45
boost::unordered_map< int, PartTransformList > PartMap
Definition: DtArticulatedModelParser.h:43
StateExistenceMap myStateExistenceMap
Definition: DtArticulatedModelParser.h:177
DtDe & myDe
Definition: DtArticulatedModelParser.h:170
std::stack< osg::ref_ptr< osgSim::MultiSwitch > > myStateIds
Definition: DtArticulatedModelParser.h:167
Contains makVrv::DtModelParser class.
Contains makVrv::DtModelSemanticsMapper class.
Contains makVrv::DtArticulatedModel class.
std::vector< int > StateExistenceList
Definition: DtArticulatedModelParser.h:49
StateValueMap myStateValueMap
Definition: DtArticulatedModelParser.h:178
std::vector< int > PartList
Definition: DtArticulatedModel.h:36
std::string mySkipTag
Definition: DtArticulatedModelParser.h:161
boost::unordered_map< std::string, GroupList > AnnotationMap
Definition: DtArticulatedModelParser.h:52
AnimationMap myAnimationMap
Definition: DtArticulatedModelParser.h:175
std::string myLoopCountTag
Definition: DtArticulatedModelParser.h:164
boost::unordered_map< int, StateExistenceList > StateExistenceMap
Definition: DtArticulatedModelParser.h:50
Create an articulated model parser.
Definition: DtArticulatedModelParser.h:185
DtModelSemanticsMapper & myModelSematicsMapper
Definition: DtArticulatedModelParser.h:180
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
StateMap myStateMap
Definition: DtArticulatedModelParser.h:174
std::string mySwitchTag
Definition: DtArticulatedModelParser.h:157
An abstract creator class for the model parser.
Definition: DtModelParser.h:35
std::vector< ValueList > SwitchSetList
Definition: DtArticulatedModelParser.h:54
std::vector< osg::ref_ptr< osgSim::MultiSwitch > > StateList
Definition: DtArticulatedModelParser.h:44
Id
Definition: DtModelSemanticsMapper.h:40
std::vector< osg::ref_ptr< osg::Sequence > > AnimationList
Definition: DtArticulatedModelParser.h:46
std::vector< bool > ValueList
Definition: DtArticulatedModelParser.h:53
SwitchSetMap myDefaultActiveSwitchState
Definition: DtArticulatedModelParser.h:179
The DtModelSemanticsMapper object is responsible for mapping Names of model semantics declarations (f...
Definition: DtModelSemanticsMapper.h:27
Default implementation of the model parser for Articulated models.
Definition: DtArticulatedModelParser.h:37

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)