VR-Forces Development_Version 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) 2015 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 //#define VISUALIZE_DIGUY_VELOCITY
20 
21 class diguyCharacter;
22 class diguyCharacterGuide;
23 
24 namespace osg
25 {
26  class Group;
27 }
28 
29 namespace makVrv
30 {
31  class DtParticleSystemModelAgent;
32  class DtSceneObjectAgent;
33  class DtDiGuyScenario;
34 
36  {
37  float mySpeed;
39  std::string myName;
40  };
41 
42  class DtOsgSceneConnector;
43  class DtSceneObject;
44 
48  {
49  public:
52 
54  virtual ~DtDiGuyCharacterModel();
55 
56  virtual void setModelDefinition(const std::string& modelDefinition);
57 
59  virtual void addToScene( const DtUniqueID& sceneObjectId, int modelSet,
60  int visualizerType );
61 
63  virtual void removeFromScene();
64 
68  void setPositionAndVelocityState(const DtVector& vrvLoc, const DtTaitBryan& vrvOri, DtVector32 vrvVel, DtVector32 vrvAngularVel, bool needsTopoUpdate);
69 
71  virtual void setPosition( int vtx, const DtVector& position );
72 
74  virtual void setOrientation( int vtx, const DtTaitBryan& orientation );
75 
78  virtual std::string className() const;
79 
83  virtual void setCharacterModel(const std::string& characterType);
84 
88  virtual void setEnableAnimationSmoothing(bool);
89 
91  virtual bool enableAnimationSmoothing() const;
92 
94 
95  virtual void setDefaultAppearance(const std::string& appearanceName);
96  virtual void setAppearance(const std::string& appearanceName);
97  virtual void setHeadAppearance(const std::string& appearanceName);
98  virtual void setItemAppearance(const std::string& appearanceName);
100 
101  virtual void setFlamesPresent(bool val);
102  virtual void setEnginePlume(bool val);
103  virtual void setEngineSmoke(bool val);
104  virtual void setTrailState(bool val);
105  virtual void setLightState(unsigned int light, unsigned int lightState);
106 
107  virtual void fireWeapon();
108 
109  virtual void beginAppearanceEffect(const std::string& effect,const std::string& overrideLink,
110  float overrideScale,const DtVector& overrideOffset,float overrideDuration );
111  virtual void endAppearanceEffect(int instant, const std::string& effect,const std::string& overrideLink);
112 
113  virtual void executeGesture(const std::string& gestureName, int reps,
114  float overallDuration, float channelAWeight);
115  virtual void endGesture(const std::string& gestureName,float rampDown);
116 
118  virtual void setDesiredAction(const std::string& action,float speed);
119 
121  virtual void forceAction(const std::string& action, float speed, int autoChooseTransitionBehavior);
122 
124  virtual void forceTemporaryAction(const std::string& action, double duration);
125 
127  virtual void setSpeed(float speed);
128 
130  virtual bool weaponDeployed() const;
131 
133  virtual void setWeaponDeployed(bool deployed);
134 
137  void setFullUpdateNeeded(bool updated);
138 
140  bool fullUpdateNeeded() const;
141 
144  virtual void die(const std::string& deathAction);
145 
147  virtual void revive(const std::string& aliveAction);
148 
150  virtual void setPaused(bool paused);
151 
153  bool paused() const;
154 
156  diguyCharacter* character();
157 
159  virtual void setPosture(int posture);
160 
164  bool autoGenerateActions() const;
165 
169  bool autoGenerateActionSpeed() const;
170 
173  virtual void setModelScalingEnabled( bool b );
174 
175  virtual void setIsSupportModel(bool isSupport);
176 
177  static void setDiGuyAttachGroup(osg::Group* diguy_attach_pt) {DiguyAttachGroup = diguy_attach_pt;}
178 
180  virtual void setEmbarked( bool embarkedState );
181  virtual bool embarked() const;
182 
183  virtual void setScale(const DtVector & scale);
184  virtual void setPartOrientation(int partNumber,
185  const DtTaitBryan& orientation, const DtVector& rotationalVelocity);
186  virtual void setPartTranslation(int partNumber,
187  const DtVector& translation, const DtVector& velocity);
189  virtual void setPartVisibility(int partNumber, bool visible);
193  void updateAimingAndGaze();
194 
196  void setupGuides();
197  diguyCharacterGuide * getGuide(){return myGuide;}
198  void setGuide(diguyCharacterGuide * guide){myGuide = guide;}
199 
200  bool getVRForcesEntity(){return myVRForcesEntity;}
201 
202  void setupTopoConversion( const DtVector& location );
203  // If coordinate system is geocentric, will output orientation and velocity values
204  // That make sense in NED paradigm. Otherwise, output values will be the same
205  // as input ones.
206  void convertToLocalFrame(
207  const DtVector32 & velocity, const DtTaitBryan& orientation,
208  DtVector32 &outVelocity, DtTaitBryan & outOrientation );
209 
210  bool getIsVehicle(){return m_vehicle;}
211 
212  DtDiGuyScenario & getScenario();
213 
214  virtual void setSelected(bool value);
215 
216  protected:
217 
218  virtual void setSceneObjectIdOnCollisionBoxes();
219 
221  void slot_modelInstanceToBeDestroyed(DtModelInstance*, DtModel*);
222 
224  void slot_modelInstanceCreated(DtModelInstance*, DtModel*);
225 
226 
227 
228  protected:
229 
230  //void updateParticleSystem(const std::string& appearanceName);
231 
232  static osg::Group* DiguyAttachGroup;
233  DtTaitBryan myOrientation;
235 
236  diguyCharacter* myCharacter;
237  diguyCharacterGuide * myGuide;
238 
248 
250  bool m_vehicle;
251  float m_aim_az; // azimuth
252  float m_aim_el; // elevation
253  float m_gaze_az;
254  float m_gaze_el;
255 
257 
258  //particle support
259  DtParticleSystemModelAgent * myParticleAgent;
260  DtSceneObjectAgent * mySceneObjectParticle;
261 
262  public:
263  // For converting from geocentric frame of reference to topographic one
264  DtCoordTransform m_geocToTopo;
265  DtCoordTransform m_topoToGeoc;
266 
267 #ifdef VISUALIZE_DIGUY_VELOCITY
268  osg::ref_ptr<osg::Geometry> myDesiredPositionLine;
269  osg::ref_ptr<osg::Geometry> myDesiredVelocityLine;
270  osg::ref_ptr<osg::Geometry> myVelocityLine;
271  osg::ref_ptr<osg::Geometry> myCordSys;
272  osg::ref_ptr<osg::Geometry> myCurrentDesiredPositionLine;
273  osg::ref_ptr<osg::Geode> myVizualizers;
274  osg::ref_ptr<osg::MatrixTransform> myVizualizersTransform;
275 #endif
276  };
277 }

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)