VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtDiGuyCharacterModel.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2021 MAK Technologies, Inc.
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvDiGuy/vrvDiGuy.h>
14 #include <osg/Geometry>
15 #include <osg/ref_ptr>
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 class diguyGraphicsLink;
26 
27 namespace osg
28 {
29  class Group;
30 }
31 
32 namespace makVrv
33 {
34  class DtDeadReckonUpdater;
35 
36  class DtDiGuyOsgGraphicsLink;
37  class DtDiGuyScenario;
38  class DtDiGuyMotionModel;
39 
40  class DtOsgSceneConnector;
41  class DtSceneObject;
42  class DtSceneObjectAgent;
43  class DtSceneObjectUpdater;
44  class DtOsgGizmoRenderer;
45  struct DtDiguyLightConfig;
46 
47 
50  {
52  : myName()
53  , mySpeed( 0 )
54  , myUsePositioning( false )
55  , myOffset( 0, 0, 0 )
56  , myAutoTransition( 0 )
57  , myTransitionSpeed( 0 )
58  {
59  }
60 
61  std::string myName;
62  float mySpeed;
67 
68  };
69 
72  {
73  DtDiGuyLightRtInfo() : myDesc(nullptr), myLink(nullptr), myIndex(-1), myActive(false) {; }
74 
77 
78  // runtime data
79 
83  int myIndex;
85  bool myActive;
86  };
87 
88 
101  {
102  public:
103 
106 
108  virtual ~DtDiGuyCharacterModel();
109 
110  private:
114  DtDiGuyCharacterModel& operator=(const DtDiGuyCharacterModel&) = delete;
115 
116  public:
117 
118  virtual void setModelDefinition(const std::string& modelDefinition);
119 
121  diguyCharacter* character();
122 
124  DtDiGuyScenario& getScenario();
125 
128  virtual const std::string& className() const;
129 
131  virtual void addToScene(const DtUniqueID& sceneObjectId, int modelSet,
132  int visualizerType);
133 
135  virtual void removeFromScene();
136 
140  void setPositionAndVelocityState(const DtVector& vrvLoc, const DtTaitBryan& vrvOri, const DtVector32& vrvVel,
141  const DtVector32& vrvAngularVel, bool needsTopoUpdate);
142 
145  virtual void setPosition(int vtx, const DtVector& position);
146  const DtVector& getPosition() { return myWorldPosition; }
147 
150  virtual void setPositionOffset(const DtVector& position);
151 
155  virtual void setOrientation(int vtx, const DtTaitBryan& orientation);
156  const DtTaitBryan& getOrientation() { return myWorldOrientation; }
157 
160  virtual void setOrientationOffset(const DtTaitBryan& orientationOffset);
161 
165  virtual void setPositionAndOrientation(int vtx, const DtVector& position, const DtTaitBryan& orientation);
166 
167 
171  virtual void setCharacterModel(const std::string& characterType);
172 
176  virtual void setDefaultAppearance( const std::string& appearanceName );
178  virtual void setAppearance( const std::string& appearanceName );
179 
181  virtual void setHeadAppearance( const std::string& appearanceName );
183  virtual void setItemAppearance( const std::string& appearanceName );
185  virtual void setCharacterEquipment( const std::string& appearanceName );
186 
188  virtual void setCharacterName( const std::string& name );
190  virtual void setUnit( unsigned int unit, unsigned int personalUnit );
192  virtual void setRank( unsigned int rank );
193 
195 
197  virtual void setFlamesPresent(bool val);
199  virtual void setEnginePlume(bool val);
201  virtual void setEngineSmoke(bool val);
203  virtual void setTrailState(bool val);
205  virtual void setLightState(unsigned int light, unsigned int lightState);
206 
207 
209  virtual void beginAppearanceEffect(const std::string& effect, const std::string& overrideLink,
210  float overrideScale, const DtVector& overrideOffset, float overrideDuration);
212  virtual void endAppearanceEffect(int instant, const std::string& effect, const std::string& overrideLink);
213 
215  virtual void executeGesture(const std::string& gestureName, int reps,
216  float overallDuration, float channelAWeight);
218  virtual void endGesture(const std::string& gestureName, float rampDown);
219 
220 
224  virtual void setEnableAnimationSmoothing(bool);
225 
227  virtual bool enableAnimationSmoothing() const;
229  virtual void setDesiredAction(const std::string& action, float speed);
230 
232  virtual void fireWeapon();
233 
240  virtual void forceAction( const std::string& action, float speed, bool usePositioning,
241  const DtVector& offset, int autoChooseTransitionBehavior, float transitionSpeedScale );
242 
244  virtual int currentArcChangeCb(diguyCharacter* character);
245 
247  virtual void forceTemporaryAction(const std::string& action, double duration);
248 
251  virtual void unforceAction();
252 
254  virtual void setSpeed(float speed);
255 
257  virtual void setPosture(int posture);
258 
260  virtual bool weaponDeployed() const;
261 
263  virtual void setWeaponDeployed(bool deployed);
264 
267  void setFullUpdateNeeded(bool updated);
268 
270  bool fullUpdateNeeded() const;
271 
274  virtual void die(const std::string& deathAction);
275 
277  virtual void revive(const std::string& aliveAction);
278 
280  virtual void setPaused(bool paused);
281 
283  bool paused() const;
284 
285  virtual bool getVRForcesEntity() { return myVRForcesEntity; }
286 
290  bool autoGenerateActions() const;
291 
295  bool autoGenerateActionSpeed() const;
296 
299  virtual void setModelScalingEnabled(bool b);
300 
301  virtual void setIsSupportModel(bool isSupport);
302 
304  virtual void setEmbarked(bool embarkedState);
305  virtual bool embarked() const;
306 
307  virtual void setScale(const DtVector& scale);
308  virtual void setWeight(float weightScale);
309 
310  virtual void setPartOrientation(int partNumber,
311  const DtTaitBryan& orientation, const DtVector& rotationalVelocity);
312 
313  virtual void setPartTranslation(int partNumber,
314  const DtVector& translation, const DtVector& velocity);
315 
317  virtual void setLinkRotationOverride(const std::string& linkName, const DtTaitBryan& rotation,
318  float rampTime);
319 
321  virtual void setLinkTranslationOverride(const std::string& linkName, const DtVector& offsets,
322  float rampTime);
323 
325  virtual void setPartVisibility(int partNumber, bool visible);
329  void updateAimingAndGaze();
330 
332  void setupGuides();
333  virtual diguyCharacterGuide* getGuide();
334  virtual void setGuide(diguyCharacterGuide* guide);
335 
337  virtual void setupCoordSystem(const DtVector& vrvLoc, bool overrideEmbarked = false);
338 
340  virtual bool getAndResetTerrainHasChangedBit();
341 
343  virtual void setTerrainHasChanged();
344 
345  // If coordinate system is geocentric, will output orientation and velocity values
346  // That make sense in NED paradigm. Otherwise, output values will be the same
347  // as input ones.
348  void convertToLocalFrame(
349  const DtVector32& velocity, const DtTaitBryan& orientation,
350  DtVector32& outVelocity, DtTaitBryan& outOrientation);
351 
352  bool getIsVehicle() { return m_vehicle; }
353 
354  virtual void setSelected(bool value);
355  virtual void setTextureVariations(std::vector<DtCharacterTextureVariationInfo>& varationInfoArray, int force) override;
356 
358  virtual void setDynamicSensorRegion(const std::string& region, bool state);
359 
361  virtual bool dynamicSensorRegion(const std::string& region);
362 
364  virtual DtVector positionOffsetWorld();
365 
367  virtual bool hasPositionOffset();
368 
372  virtual DtTaitBryan orientationOffsetWithBase(const DtTaitBryan& baseOri);
373 
375  virtual bool hasOrientationOffset();
376 
380  virtual void setUseTransitions(bool use);
381 
383  virtual bool useTransitions();
384 
386  virtual void setEnabled(bool enabled);
387 
389  virtual bool enabled();
390 
392  virtual void setIsOccupant(bool occupant);
393 
395  virtual bool occupant();
396 
397  virtual DtSceneObject* sceneObject() { return mySceneObject; }
398 
400  virtual bool isPostureTransitioning();
401 
404  virtual bool usingActionPositioningFlag();
405 
407  virtual void updateLights();
408 
410  virtual void resetLightsWithLink(DtDiGuyOsgGraphicsLink* link);
411 
413  virtual void draw_character_skeleton(DtOsgGizmoRenderer* renderer);
414 
416  std::vector<DtDiGuyLightRtInfo>& lights();
417 
418  public:
420  static void setDiGuyAttachGroup(osg::Group* diguy_attach_pt) { DiguyAttachGroup = diguy_attach_pt; }
421 
422  protected:
423 
424  virtual void setSceneObjectIdOnCollisionBoxes();
425 
427  void slot_modelInstanceToBeDestroyed(DtModelInstance*, DtModel*);
428 
430  void slot_modelInstanceCreated(DtModelInstance*, DtModel*);
431 
432  //helper function to update model instance when appearance/model changes
433  virtual void updateModelInstance();
434 
437  virtual void setMotionModelByName(const std::string& modelName);
438 
441  virtual void updateVisibility();
442 
444  virtual void createLights(int id);
445 
446 
447  protected:
448 
450 
451  DtTaitBryan myWorldOrientation;
453 
454  diguyCharacter* myCharacter;
455  diguyCharacterGuide* myGuide;
456 
465  bool m_vehicle;
468 
469  // For positionOffset so that it can
470  // get a good initial orientation
472 
473  float m_aim_az; // azimuth
474  float m_aim_el; // elevation
475  float m_gaze_az;
476  float m_gaze_el;
478 
481 
482  // Perform transitions and ramp downs
483  // between animations (for occupants / drivers)
485 
486  // Is this DI-Guy an occupant / driver
488 
489  bool myEnabled;
490  //bool myUseGeocentricCoords;
491 
493 
494  typedef boost::unordered_map<std::string, bool> SensorRegionStateMap;
496 
497  std::vector<DtDiGuyLightRtInfo> myLights;
498 
499  // For converting from geocentric frame of reference to topographic one
500  DtCoordTransform m_geocToTopo;
501  DtCoordTransform m_topoToGeoc;
502 
503 #ifdef VISUALIZE_DIGUY_VELOCITY
504  osg::ref_ptr<osg::Geometry> myDesiredPositionLine;
505  osg::ref_ptr<osg::Geometry> myDesiredVelocityLine;
506  osg::ref_ptr<osg::Geometry> myVelocityLine;
507  osg::ref_ptr<osg::Geometry> myCordSys;
508  osg::ref_ptr<osg::Geometry> myCurrentDesiredPositionLine;
509  osg::ref_ptr<osg::Geode> myVizualizers;
510  osg::ref_ptr<osg::MatrixTransform> myVizualizersTransform;
511 #endif
512 
513  protected:
514  static osg::Group* DiguyAttachGroup;
515 
516  };
517 
518 }
float m_gaze_el
Definition: DtDiGuyCharacterModel.h:476
The base class for all model instances.
Definition: DtModelInstance.h:39
DtDiGuyLightRtInfo()
Definition: DtDiGuyCharacterModel.h:73
const DtDiguyLightConfig * myDesc
config data
Definition: DtDiGuyCharacterModel.h:76
bool myGenerateActionSpeedFlag
Definition: DtDiGuyCharacterModel.h:459
helper struct for data loaded from light config file
Definition: DtDiGuyScenario.h:68
static osg::Group * DiguyAttachGroup
Definition: DtDiGuyCharacterModel.h:514
bool myCouldBePostureTransitioning
Definition: DtDiGuyCharacterModel.h:492
boost::unordered_map< std::string, bool > SensorRegionStateMap
Definition: DtDiGuyCharacterModel.h:494
float m_gaze_az
Definition: DtDiGuyCharacterModel.h:475
bool myWeaponDeployedFlag
Definition: DtDiGuyCharacterModel.h:460
bool myEnabled
Definition: DtDiGuyCharacterModel.h:489
float m_aim_az
Definition: DtDiGuyCharacterModel.h:473
DtLastForceActionParams()
Definition: DtDiGuyCharacterModel.h:51
diguyCharacter * myCharacter
Definition: DtDiGuyCharacterModel.h:454
DtDiGuyScenario * myDtScenario
Definition: DtDiGuyCharacterModel.h:449
static void setDiGuyAttachGroup(osg::Group *diguy_attach_pt)
where diguys attach to the scene graph
Definition: DtDiGuyCharacterModel.h:420
std::string myName
Definition: DtDiGuyCharacterModel.h:61
DtVector myWorldPosition
Definition: DtDiGuyCharacterModel.h:452
bool myIsOccupant
Definition: DtDiGuyCharacterModel.h:487
diguyCharacterGuide * myGuide
Definition: DtDiGuyCharacterModel.h:455
Contains the makVrv::DtCharacterModel class declaration.
DI-Guy Character model.
Definition: DtDiGuyCharacterModel.h:100
a class to quickly render a bunch of basic primitives as debugging aids basic overview, create an adapter that inherits from DtDebugDrawCallbackInterface then call DtOsgGizmoRenderer::addDebugDrawerCallback() to register it with the system.
Definition: DtOsgGizmoRenderer.h:136
float mySpeed
Definition: DtDiGuyCharacterModel.h:62
bool m_vehicle
Definition: DtDiGuyCharacterModel.h:465
bool m_turreted_vehicle
Definition: DtDiGuyCharacterModel.h:464
A special human character model.
Definition: DtCharacterModel.h:20
Contains DLL export macros.
int myIndex
index of light in light point drawable
Definition: DtDiGuyCharacterModel.h:83
helper struct for tracking an added light
Definition: DtDiGuyCharacterModel.h:71
SensorRegionStateMap mySensorRegionMap
Definition: DtDiGuyCharacterModel.h:495
float m_aim_el
Definition: DtDiGuyCharacterModel.h:474
bool myActive
is it on
Definition: DtDiGuyCharacterModel.h:85
virtual DtSceneObject * sceneObject()
Definition: DtDiGuyCharacterModel.h:397
bool myEnableAnimationSmoothing
Definition: DtDiGuyCharacterModel.h:479
bool myVRForcesEntity
Definition: DtDiGuyCharacterModel.h:463
bool m_character_can_aim
Definition: DtDiGuyCharacterModel.h:477
std::vector< DtDiGuyLightRtInfo > myLights
Definition: DtDiGuyCharacterModel.h:497
bool myUsingActionPositioningFlag
Definition: DtDiGuyCharacterModel.h:457
diguyGraphicsLink * myLink
pointer to light link
Definition: DtDiGuyCharacterModel.h:81
DtVector myOffset
Definition: DtDiGuyCharacterModel.h:64
DtUniqueID mySceneObjectId
Definition: DtDiGuyCharacterModel.h:466
int myAutoTransition
Definition: DtDiGuyCharacterModel.h:65
const DtTaitBryan & getOrientation()
Definition: DtDiGuyCharacterModel.h:156
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
bool myUsePositioning
Definition: DtDiGuyCharacterModel.h:63
DtTaitBryan myWorldOrientation
Definition: DtDiGuyCharacterModel.h:451
struct for the last action that happened
Definition: DtDiGuyCharacterModel.h:49
DtCoordTransform m_topoToGeoc
Definition: DtDiGuyCharacterModel.h:501
virtual bool getVRForcesEntity()
Definition: DtDiGuyCharacterModel.h:285
bool myTerrainHasChanged
Definition: DtDiGuyCharacterModel.h:480
A DtSceneObject represents an object that can be positioned in the scene by (possibly) attaching it t...
Definition: DtSceneObject.h:41
float myTransitionSpeed
Definition: DtDiGuyCharacterModel.h:66
A model which owns a single model instance.
Definition: DtModel.h:55
bool myUseTransitions
Definition: DtDiGuyCharacterModel.h:484
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
bool myGenerateAutomaticActionFlag
Definition: DtDiGuyCharacterModel.h:458
bool getIsVehicle()
Definition: DtDiGuyCharacterModel.h:352
#define DT_DLL_VRVDIGUY
Definition: vrvDiGuy.h:21
bool myFullUpdateFlag
Definition: DtDiGuyCharacterModel.h:461
voidpf uLong offset
Definition: ioapi.h:42
const DtVector & getPosition()
Definition: DtDiGuyCharacterModel.h:146
DtLastForceActionParams myLastForceAction
Definition: DtDiGuyCharacterModel.h:467
bool myEmbarkedFlag
Definition: DtDiGuyCharacterModel.h:462
Owns a DiGuy scenario for the application.
Definition: DtDiGuyScenario.h:77
DtSceneObject * mySceneObject
Definition: DtDiGuyCharacterModel.h:471
DtCoordTransform m_geocToTopo
Definition: DtDiGuyCharacterModel.h:500

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)