VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtDiGuyCharacterModel.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvDiGuy/vrvDiGuy.h>
14 #include <osg/ref_ptr>
15 #include <osg/Geometry>
16 
17 #include <matrix/topoCoord.h>
18 
19 #include <boost/unordered_map.hpp>
20 
21 //#define VISUALIZE_DIGUY_VELOCITY
22 
23 class diguyCharacter;
24 class diguyCharacterGuide;
25 
26 namespace osg
27 {
28  class Group;
29 }
30 
31 namespace makVrv
32 {
33  class DtParticleSystemModelAgent;
34  class DtSceneObjectAgent;
35  class DtDiGuyScenario;
36 
37  DtTaitBryan vrvToDiGuyOrientationChar(const DtTaitBryan& hpr);
38 
40  {
42  mySpeed(0)
43  , myAutoTransition(0)
44  {
45  ;
46  }
47  float mySpeed;
49  std::string myName;
50  };
51 
52  class DtOsgSceneConnector;
53  class DtSceneObject;
54 
67  {
68  public:
71 
73  virtual ~DtDiGuyCharacterModel();
74 
75  virtual void setModelDefinition(const std::string& modelDefinition);
76 
78  virtual void addToScene( const DtUniqueID& sceneObjectId, int modelSet,
79  int visualizerType );
80 
82  virtual void removeFromScene();
83 
87  void setPositionAndVelocityState(const DtVector& vrvLoc, const DtTaitBryan& vrvOri, DtVector32 vrvVel, DtVector32 vrvAngularVel, bool needsTopoUpdate);
88 
90  virtual void setPosition( int vtx, const DtVector& position );
91  const DtVector& getPosition(){ return myPosition; }
92 
94  virtual void setOrientation( int vtx, const DtTaitBryan& orientation );
95 
98  virtual std::string className() const;
99 
103  virtual void setCharacterModel(const std::string& characterType);
104 
108  virtual void setEnableAnimationSmoothing(bool);
109 
111  virtual bool enableAnimationSmoothing() const;
112 
114 
115  virtual void setDefaultAppearance(const std::string& appearanceName);
116  virtual void setAppearance(const std::string& appearanceName);
117 
118  virtual void setHeadAppearance(const std::string& appearanceName);
119  virtual void setItemAppearance(const std::string& appearanceName);
121 
122  virtual void setFlamesPresent(bool val);
123  virtual void setEnginePlume(bool val);
124  virtual void setEngineSmoke(bool val);
125  virtual void setTrailState(bool val);
126  virtual void setLightState(unsigned int light, unsigned int lightState);
127 
128  virtual void fireWeapon();
129 
130  virtual void beginAppearanceEffect(const std::string& effect,const std::string& overrideLink,
131  float overrideScale,const DtVector& overrideOffset,float overrideDuration );
132  virtual void endAppearanceEffect(int instant, const std::string& effect,const std::string& overrideLink);
133 
134  virtual void executeGesture(const std::string& gestureName, int reps,
135  float overallDuration, float channelAWeight);
136  virtual void endGesture(const std::string& gestureName,float rampDown);
137 
139  virtual void setDesiredAction(const std::string& action,float speed);
140 
145  virtual void forceAction(const std::string& action, float speed, int autoChooseTransitionBehavior);
146 
148  virtual void forceTemporaryAction(const std::string& action, double duration);
149 
152  virtual void unforceAction();
153 
155  virtual void setSpeed(float speed);
156 
158  virtual bool weaponDeployed() const;
159 
161  virtual void setWeaponDeployed(bool deployed);
162 
165  void setFullUpdateNeeded(bool updated);
166 
168  bool fullUpdateNeeded() const;
169 
172  virtual void die(const std::string& deathAction);
173 
175  virtual void revive(const std::string& aliveAction);
176 
178  virtual void setPaused(bool paused);
179 
181  bool paused() const;
182 
184  diguyCharacter* character();
185 
187  virtual void setPosture(int posture);
188 
192  bool autoGenerateActions() const;
193 
197  bool autoGenerateActionSpeed() const;
198 
201  virtual void setModelScalingEnabled( bool b );
202 
203  virtual void setIsSupportModel(bool isSupport);
204 
205  static void setDiGuyAttachGroup(osg::Group* diguy_attach_pt) {DiguyAttachGroup = diguy_attach_pt;}
206 
208  virtual void setEmbarked( bool embarkedState );
209  virtual bool embarked() const;
210 
211  virtual void setScale(const DtVector & scale, float weightScale);
212  virtual void setPartOrientation(int partNumber,
213  const DtTaitBryan& orientation, const DtVector& rotationalVelocity);
214  virtual void setPartTranslation(int partNumber,
215  const DtVector& translation, const DtVector& velocity);
217  virtual void setPartVisibility(int partNumber, bool visible);
221  void updateAimingAndGaze();
222 
224  void setupGuides();
225  diguyCharacterGuide * getGuide(){return myGuide;}
226  void setGuide(diguyCharacterGuide * guide){myGuide = guide;}
227 
228  bool getVRForcesEntity(){return myVRForcesEntity;}
229 
230  void setupTopoConversion( const DtVector& location );
231  // If coordinate system is geocentric, will output orientation and velocity values
232  // That make sense in NED paradigm. Otherwise, output values will be the same
233  // as input ones.
234  void convertToLocalFrame(
235  const DtVector32 & velocity, const DtTaitBryan& orientation,
236  DtVector32 &outVelocity, DtTaitBryan & outOrientation );
237 
238  bool getIsVehicle(){return m_vehicle;}
239 
240  DtDiGuyScenario & getScenario();
241 
242  virtual void setSelected(bool value);
243  virtual void setTextureVariations(std::vector<DtCharacterTextureVariationInfo> & varationInfoArray, int force);
244 
246  virtual void setDynamicSensorRegion( const std::string& region, bool state );
247 
249  virtual bool dynamicSensorRegion( const std::string& region );
250 
251  protected:
252 
253  virtual void setSceneObjectIdOnCollisionBoxes();
254 
256  void slot_modelInstanceToBeDestroyed(DtModelInstance*, DtModel*);
257 
259  void slot_modelInstanceCreated(DtModelInstance*, DtModel*);
260 
261  //helper function to update model instance when appearance/model changes
262  virtual void updateModelInstance();
263 
264 
265  protected:
266 
267  //void updateParticleSystem(const std::string& appearanceName);
268 
269  static osg::Group* DiguyAttachGroup;
270  DtTaitBryan myOrientation;
272 
273  diguyCharacter* myCharacter;
274  diguyCharacterGuide * myGuide;
275 
285 
287  bool m_vehicle;
288  float m_aim_az; // azimuth
289  float m_aim_el; // elevation
290  float m_gaze_az;
291  float m_gaze_el;
292 
294 
295  //particle support
296  DtParticleSystemModelAgent * myParticleAgent;
297  DtSceneObjectAgent * mySceneObjectParticle;
298 
299  typedef boost::unordered_map<std::string, bool> SensorRegionStateMap;
301 
302  public:
303  // For converting from geocentric frame of reference to topographic one
304  DtCoordTransform m_geocToTopo;
305  DtCoordTransform m_topoToGeoc;
306 
307 #ifdef VISUALIZE_DIGUY_VELOCITY
308  osg::ref_ptr<osg::Geometry> myDesiredPositionLine;
309  osg::ref_ptr<osg::Geometry> myDesiredVelocityLine;
310  osg::ref_ptr<osg::Geometry> myVelocityLine;
311  osg::ref_ptr<osg::Geometry> myCordSys;
312  osg::ref_ptr<osg::Geometry> myCurrentDesiredPositionLine;
313  osg::ref_ptr<osg::Geode> myVizualizers;
314  osg::ref_ptr<osg::MatrixTransform> myVizualizersTransform;
315 #endif
316  };
317 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)