VR-Forces 4.10 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) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
8 
9 #pragma once
12 
13 #include <vrvOsg/DtModelParser.h>
14 
16 
17 #include <osg/Group>
18 #include <osg/Sequence>
19 #include <osgSim/DOFTransform>
20 #include <osgSim/MultiSwitch>
21 
22 #include <stack>
23 #include <unordered_map>
24 
25 namespace osg
26 {
27  class Group;
28  class Sequence;
29 }
30 
31 namespace makVrv
32 {
33  class DtOsgArticulatedModel;
34  class DtModelSemanticsMapper;
35 
39  {
40  public:
43  typedef std::vector<osg::ref_ptr<osgSim::DOFTransform> > PartTransformList;
44  typedef std::unordered_map<int, PartTransformList > PartMap;
45 
46  typedef std::vector< osg::ref_ptr<osgSim::MultiSwitch> > MultiSwitchList;
47  typedef std::unordered_map<int, MultiSwitchList > MapStateNumberToMultiSwitchList;
48 
49  typedef std::vector< osg::ref_ptr<osg::Sequence> > AnimationList;
50  typedef std::unordered_map<std::string, AnimationList > AnimationMap;
51 
52  typedef std::map<int, int > MapStateNumberToStateValue;
53  typedef std::vector<bool> StateExistenceList;
54  typedef std::unordered_map<int, StateExistenceList> MapStateNumberToStateExistenceList;
55 
56  typedef std::vector< osg::ref_ptr<osg::Group> > GroupList;
57  typedef std::unordered_map<std::string, GroupList > AnnotationMap;
58 
59  typedef std::vector<bool> ValueList;
60  typedef std::vector<ValueList> SwitchSetList;
61  typedef std::map<osgSim::MultiSwitch*, SwitchSetList> MapMultiSwitchToSwitchSetList;
62 
65  {
66  public:
67  SequenceAndParams(osg::Sequence* sequence, float multiplier, float duration, float defaultSpeed)
68  : mySequence(sequence)
69  , myMuliplier(multiplier)
70  , myDuration(duration)
71  , myDefaultSpeed(defaultSpeed)
72  {
73  // nothing else
74  }
76  : myMuliplier(-1)
77  , myDuration(0)
78  , myDefaultSpeed(0)
79  {
80  // nothing else
81  }
82  public:
85 
90  float myMuliplier;
91 
94  float myDuration;
95 
99  };
100 
101  typedef std::vector< SequenceAndParams> VectorSequenceAndMultipliers;
102  typedef std::unordered_map<std::string, VectorSequenceAndMultipliers> FlipBookAnimationMap;
103 
107  {
108  ScrollableTextureGroupAndParams(osg::Group* group, Vector2_32 uvMultiplier)
109  : myGroup(group)
110  , myMultiplier(uvMultiplier)
111  {
112  // nothing else
113  }
114 
116  : myMultiplier(Vector2_32::theZeroVector)
117  {
118  // nothing else
119  }
120  public:
123 
126  };
127 
128  typedef std::vector< ScrollableTextureGroupAndParams> VectorScrollableTextureGroupAndParams;
129  typedef std::map<std::string, VectorScrollableTextureGroupAndParams> ScrollableTextureGroupMap;
130 
132 
134  DtArticulatedModelParser(DtDe& de, DtModelSemanticsMapper& modelSematicsMapper);
135 
137  virtual ~DtArticulatedModelParser();
138 
141  static std::string parserFormat();
142 
144  virtual void apply(osg::Group& group);
147  virtual void apply(osg::Sequence& sequence);
148  virtual void apply(osgSim::MultiSwitch& multiswitch);
149  virtual void apply(osgSim::DOFTransform& transform);
150  virtual void apply(osg::Transform& transform);
152 
153  protected:
154 
159  virtual bool parseSwitchDeclaration( const std::string& desc,
160  osgSim::MultiSwitch& multiswitch );
161 
164  virtual bool parseDefaultMultiSwitchValues(osgSim::MultiSwitch& multiswitch);
165 
168  const DtModelSemanticsMapper::States::Id* createCustomStateId(const std::string& stateName);
169 
174  virtual bool parseStateDeclaration( const std::string& desc,
175  osg::Group& group );
176 
181  virtual bool parseAnnotationDeclaration( const std::string& desc,
182  osg::Group& group );
183 
187  virtual bool parseScrollableTextureDeclaration(const std::string& desc,
188  osg::Group& group);
189 
194  virtual bool parsePartDeclaration(const std::string& desc,
195  osgSim::DOFTransform& transform);
196 
201  virtual bool parseAnimationDeclaration(const std::string& desc, osg::Sequence& sequence);
202 
204  virtual bool parseFlipBookAnimationDeclaration(const std::string& desc, osg::Sequence& sequence);
205 
207  std::vector<int> parseValueList(const std::string& valueList);
208 
211  void pushStateId(int idNumber, osgSim::MultiSwitch* lastStateId);
212 
215  void popStateId();
216 
218  osgSim::MultiSwitch* lastStateId() const;
219 
221  int lastStateIdNumber() const;
222 
225  void getParts( DtArticulatedModel::PartList& parts ) const;
226  const PartMap& parts() const;
227  const MapStateNumberToMultiSwitchList& states() const;
228  const AnimationMap& animations() const;
229  const FlipBookAnimationMap& flipBookAnimations(void) const;
230  const FlipBookAnimationMap& flipBookAnimationsWithVelocityControl(void) const;
231  void addPart( int partNumber,osgSim::DOFTransform* node );
232  void addState( int stateNumber ,osgSim::MultiSwitch* node );
233  void addAnimation( const std::string& animationName,osg::Sequence* node );
234  void setStateValueExists( int stateNumber, int stateValue );
235  void addAnnotationGroup(const std::string& annotation, osg::Group* group);
236  void addScrollableTextureGroup(osg::Group* group);
237  void setDepthMask( osg::Group& parent );
239 
240  protected:
241 
242  const std::string mySwitchTag;
243  const std::string myStateTag;
244  const std::string myPartTag;
245  const std::string myAnimationTag;
246  const std::string mySkipTag;
247  const std::string myNoSkipTag;
248  const std::string myAnnotationTag;
249  const std::string myLoopCountTag;
250  const std::string myScrollableTextureTag;
251  const std::string myLastFrameTimeTag;
252 
253  const std::string myFlipBookAnimationTag;
254  const std::string myLoopDurationMultiplierTag;
255 
256  std::stack<osg::ref_ptr<osgSim::MultiSwitch> > myStateIds;
257  std::stack<int> myStateIdNumbers;
258 
260 
261  public:
268 
273 
275  };
276 
280  {
281  public:
282 
285  static void registerCreator(DtDe& de);
286 
289 
292 
294  virtual DtModelParser* create(DtDe& de);
295  };
296 
297 }
SequenceAndParams(osg::Sequence *sequence, float multiplier, float duration, float defaultSpeed)
Definition: DtArticulatedModelParser.h:67
std::stack< int > myStateIdNumbers
Definition: DtArticulatedModelParser.h:257
PartMap myPartMap
Definition: DtArticulatedModelParser.h:262
FlipBookAnimationMap myFlipBookAnimationMap
Definition: DtArticulatedModelParser.h:264
float myDuration
default loop duration that is computed from the sequence while parsing
Definition: DtArticulatedModelParser.h:94
structure for holding a parsed sequence and information about it.
Definition: DtArticulatedModelParser.h:64
float myMuliplier
loop duration multiplier (from the comments in art/model) Per Petr: Tanks - flipbook_animation loopd...
Definition: DtArticulatedModelParser.h:90
2 dimensional vector
const std::string myAnnotationTag
Definition: DtArticulatedModelParser.h:248
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
Abstract base class used to parse a model.
Definition: DtModelParser.h:22
std::vector< osg::ref_ptr< osg::Group > > GroupList
Definition: DtArticulatedModelParser.h:56
const std::string myStateTag
Definition: DtArticulatedModelParser.h:243
AnnotationMap myAnnotationMap
Definition: DtArticulatedModelParser.h:266
osg::ref_ptr< osg::Group > myGroup
group
Definition: DtArticulatedModelParser.h:122
ScrollableTextureGroupAndParams(osg::Group *group, Vector2_32 uvMultiplier)
Definition: DtArticulatedModelParser.h:108
std::vector< osg::ref_ptr< osgSim::DOFTransform > > PartTransformList
Definition: DtArticulatedModelParser.h:43
float myDefaultSpeed
default speed that is gotten from sequence while parsing
Definition: DtArticulatedModelParser.h:98
std::unordered_map< int, MultiSwitchList > MapStateNumberToMultiSwitchList
Definition: DtArticulatedModelParser.h:47
std::unordered_map< std::string, VectorSequenceAndMultipliers > FlipBookAnimationMap
Definition: DtArticulatedModelParser.h:102
osg::ref_ptr< osg::Sequence > mySequence
sequence
Definition: DtArticulatedModelParser.h:84
MapStateNumberToStateValue myMapStateNumberToStateValue
Definition: DtArticulatedModelParser.h:270
MapMultiSwitchToSwitchSetList myDefaultActiveSwitchState
Definition: DtArticulatedModelParser.h:272
std::map< int, int > MapStateNumberToStateValue
Definition: DtArticulatedModelParser.h:52
std::vector< bool > StateExistenceList
Definition: DtArticulatedModelParser.h:53
std::unordered_map< std::string, AnimationList > AnimationMap
Definition: DtArticulatedModelParser.h:50
std::vector< osg::ref_ptr< osgSim::MultiSwitch > > MultiSwitchList
Definition: DtArticulatedModelParser.h:46
Vector2_32 myMultiplier
speed multiplier (from the comments in art/model)
Definition: DtArticulatedModelParser.h:125
DtDe & myDe
Definition: DtArticulatedModelParser.h:259
std::unordered_map< std::string, GroupList > AnnotationMap
Definition: DtArticulatedModelParser.h:57
std::stack< osg::ref_ptr< osgSim::MultiSwitch > > myStateIds
Definition: DtArticulatedModelParser.h:256
const std::string mySkipTag
Definition: DtArticulatedModelParser.h:246
MapStateNumberToStateExistenceList myMapStateNumberToStateExistenceList
Definition: DtArticulatedModelParser.h:269
const std::string myFlipBookAnimationTag
Definition: DtArticulatedModelParser.h:253
Contains makVrv::DtModelParser class.
const std::string myScrollableTextureTag
Definition: DtArticulatedModelParser.h:250
Contains makVrv::DtModelSemanticsMapper class.
Contains makVrv::DtArticulatedModel class.
FlipBookAnimationMap myFlipBookAnimationMapWithVelocityControl
Definition: DtArticulatedModelParser.h:265
const std::string myAnimationTag
Definition: DtArticulatedModelParser.h:245
const std::string myPartTag
Definition: DtArticulatedModelParser.h:244
std::vector< ScrollableTextureGroupAndParams > VectorScrollableTextureGroupAndParams
Definition: DtArticulatedModelParser.h:128
structure for holding a parsed group that has scrollable textures underneath it and some information ...
Definition: DtArticulatedModelParser.h:106
const std::string myNoSkipTag
Definition: DtArticulatedModelParser.h:247
ScrollableTextureGroupMap myScrollableTextureGroupMap
Definition: DtArticulatedModelParser.h:267
MapStateNumberToMultiSwitchList myMapStateNumberToMultiSwitchList
Definition: DtArticulatedModelParser.h:271
const std::string myLoopCountTag
Definition: DtArticulatedModelParser.h:249
const std::string mySwitchTag
Definition: DtArticulatedModelParser.h:242
ScrollableTextureGroupAndParams()
Definition: DtArticulatedModelParser.h:115
std::vector< int > PartList
Definition: DtArticulatedModel.h:36
std::unordered_map< int, PartTransformList > PartMap
Definition: DtArticulatedModelParser.h:44
AnimationMap myAnimationMap
Definition: DtArticulatedModelParser.h:263
Create an articulated model parser.
Definition: DtArticulatedModelParser.h:279
DtModelSemanticsMapper & myModelSematicsMapper
Definition: DtArticulatedModelParser.h:274
const std::string myLastFrameTimeTag
Definition: DtArticulatedModelParser.h:251
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
std::map< osgSim::MultiSwitch *, SwitchSetList > MapMultiSwitchToSwitchSetList
Definition: DtArticulatedModelParser.h:61
const std::string myLoopDurationMultiplierTag
Definition: DtArticulatedModelParser.h:254
An abstract creator class for the model parser.
Definition: DtModelParser.h:35
std::vector< ValueList > SwitchSetList
Definition: DtArticulatedModelParser.h:60
Id
Definition: DtModelSemanticsMapper.h:40
std::vector< osg::ref_ptr< osg::Sequence > > AnimationList
Definition: DtArticulatedModelParser.h:49
std::vector< bool > ValueList
Definition: DtArticulatedModelParser.h:59
std::map< std::string, VectorScrollableTextureGroupAndParams > ScrollableTextureGroupMap
Definition: DtArticulatedModelParser.h:129
The DtModelSemanticsMapper object is responsible for mapping Names of model semantics declarations (f...
Definition: DtModelSemanticsMapper.h:27
SequenceAndParams()
Definition: DtArticulatedModelParser.h:75
Default implementation of the model parser for Articulated models.
Definition: DtArticulatedModelParser.h:38
std::unordered_map< int, StateExistenceList > MapStateNumberToStateExistenceList
Definition: DtArticulatedModelParser.h:54
std::vector< SequenceAndParams > VectorSequenceAndMultipliers
Definition: DtArticulatedModelParser.h:101

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)