VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptVrfObject.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
9 
10 #include "vrfobjcore/vrfObject.h"
11 #include <vrfutil/rwUUID.h>
12 #include <vrfutil/scriptGeometry.h>
13 #include <string>
15 #include <vrfutil/objectCounter.h>
16 #include "vrfcore/simManager.h"
17 #include <stdexcept>
18 #include <vrfutil/rwUUID.h>
19 
21 class DtFireContext;
23 
25  : public DtAsciiSerializable
26 #ifdef DtObjectDebugger_Enable
27  , public DtObjectDebugger<DtScriptVrfObject>
28 #endif
29 {
30 public:
31  DtScriptVrfObject(const DtUUID& name, const DtVrfObject* const vrfObject);
32  DtScriptVrfObject(const DtUUID& name, const DtSimManager* simManager,
33  const DtVrfObject* const vrfObject);
35 
36  DtScriptVrfObject& operator=(const DtScriptVrfObject &orig);
37 
39 
40  bool operator==(const DtScriptVrfObject& orig);
41 
44 
46  virtual DtLocation3D getLocation3D() const;
47 
49  virtual double getSpeed() const;
50 
52  virtual std::string getUUID() const;
53 
60  virtual DtVector3D getDirection3D() const;
61 
64  virtual DtVector3D getVelocity3D() const;
66 
69  virtual double getHeightAboveTerrain(bool& available) const;
70 
75  virtual bool hasLosToObject(const DtScriptVrfObject &target,
76  bool & dataAvailable) const;
77 
85  virtual bool isPointInside(const DtLocation3D &point) const;
86 
88  virtual bool independentlyTasked() const;
89 
94  virtual bool hasLosToLocation(DtLocation3D &targetLoc,
95  bool &dataAvailable) const;
96 
98  virtual std::string getEntityType() const;
99 
102  virtual bool isAggregate() const;
103 
106  virtual bool isPseudoAggregate() const;
107 
110  virtual std::string getEchelonLevel() const;
111 
113  virtual std::string getForceType() const;
114 
116  virtual int getForceEnumeration() const;
117 
120  virtual bool getNavigationEnabled() const;
122 
128  virtual std::string getDamageState() const;
129 
131  virtual unsigned getLifeformPosture() const;
132 
134  virtual unsigned getAppearance() const;
135 
137  virtual bool isDestroyed() const;
138 
140  virtual bool isFirePowerKilled() const;
141 
143  virtual bool isMobilityKilled() const;
144 
146  virtual bool isSensorKilled() const;
147 
149  virtual bool isInvisible() const;
150 
152  virtual bool isEmbarked() const;
153 
155  virtual void attachToParent(DtScriptVrfObject&) const;
156 
159  virtual bool isOnTopOf(DtScriptVrfObject&) const;
160  virtual bool isOnTopOfWithDistance(DtScriptVrfObject&, double) const;
161 
163  virtual DtScriptVrfObject getEmbarkedOn() const;
164 
165  virtual std::list<DtScriptVrfObject> getEmbarkedObjects(void)const;
166 
167  virtual DtVectorOffset3D getOffsetFromParent() const;
168 
169  virtual DtVectorOffset3D getOffsetOfLocation(const DtLocation3D& location) const;
170 
172  virtual std::list<DtScriptVrfObject> getSubordinates(void) const;
173 
175  virtual std::list<DtScriptVrfObject> getVrfSubordinates(bool isVrf) const;
176 
178  virtual DtScriptVrfObject getSuperior() const;
179 
181  virtual double recalculatePhysicalFootprintFromSubordinates(const std::list<DtScriptVrfObject>&) const;
182 
186  virtual DtVectorOffset3D getPartParentPosition(int) const;
187  virtual DtLocation3D getPartWorldPosition(int) const;
188  virtual double getPartPitch(int) const;
189  virtual double getPartPitchIncludingParent(int, bool includeParent = false) const;
190  virtual double getPartHeading(int) const;
191  virtual double getPartHeadingIncludingParent(int, bool includeParent = false) const;
192  virtual double getPartTranslationForward(int) const;
193  virtual double getPartTranslationRight(int) const;
194  virtual double getPartTranslationUp(int) const;
196 
200  virtual std::list<DtScriptVrfObject> getAllSubordinates(void) const;
201 
202  virtual std::list<DtScriptVrfObject> getAllVrfSubordinates(bool isVrf) const;
203 
204  virtual std::list<DtScriptVrfObject> getCapableSubordinates(void) const;
205  virtual std::list<DtScriptVrfObject> getCapableVrfSubordinates(bool isVrf) const;
206 
208  virtual bool isVrfSimulated() const;
209 
210  virtual std::list<DtLocation3D> getLocations3D(void)const;
211 
212  virtual std::string getName() const;
213  virtual std::string getLabel() const;
214  virtual std::string getExtendedLabel(int) const;
215 
216  virtual std::string getAirTurbulence() const;
217 
218  virtual std::string getGlobalId() const;
219  virtual std::string getObjectId() const;
220 
221  virtual double getHeading() const;
222  virtual double getPitch() const;
223  virtual double getRoll() const;
224 
225  virtual double getDraft() const;
226 
228  void terrainSurfaceDebug();
229 
231  void deleteObject();
232 
234  bool isDeleted() const;
235  virtual bool isValid() const;
236 
238  virtual bool isLocal() const;
239 
241  virtual DtVectorOffset3D getBoundingVolume(DtVectorOffset3D& offset) const;
242 
245  virtual std::string getNbcDamage(int& dmgPerSec, int& moppLvl) const;
246 
248  virtual std::string getNbcAgent() const;
249 
251  virtual bool isBreached() const;
252 
254  virtual std::string getExtendedData(const std::string& key) const;
255 
258  virtual DtLocation3D getClosestPointToLocation2D(const DtLocation3D& location,
259  double& distance) const;
260 
264  virtual DtLocation3D getIntersectionPointWithLine2D(const DtLocation3D& point1,
265  const DtLocation3D& point2, bool& hasIntersection) const;
266 
268  virtual bool isActive() const;
269 
275  bool hasStateProperty(const std::string& propertyName);
276  bool hasParameterProperty(const std::string& propertyName);
278 
280  virtual std::string getDiGuyHandItem() const;
281 
283 
284  //\return True if the specified DI-Guy animation name is available for this object.
285  virtual bool isAnimationAvailable(const std::string& animationName) const;
286 
287  //\return True if the specified DI-Guy appearance name is available for this object.
288  virtual bool isAppearanceAvailable(const std::string& appearanceName) const;
289 
290  //\return True if the specified DI-Guy hand item name is available for this object.
291  virtual bool isHandItemAvailable(const std::string& handItemName) const;
292 
293  //\return True if the specified DI-Guy head name is available for this object.
294  virtual bool isHeadAvailable(const std::string& headName) const;
295 
296  //\return True if the specified DI-Guy gesture name is available for this object.
297  virtual bool isGestureAvailable(const std::string& gestureName) const;
298 
299  //\return The time of animation to run (in seconds). If not available will return 0
300  virtual double animationDuration(const std::string& animationName) const;
301 
302  //\return The speed of animation. If not available will return 0
303  virtual double animationSpeed(const std::string& animationName) const;
304 
305  //\return The duration of the transition motion from the first animation to the second,
307  virtual double getAnimationTransitionInfo(const std::string& fromAnimation, const std::string& toAnimation,
308  DtVectorOffset3D& deltaPos, double& deltaHeading) const;
309 
311  virtual boost::shared_ptr<DtScriptComponentSystem> lookupSystem(const std::string& systemName);
312 
314  virtual std::list<std::string> getSystemNames();
315 
318  virtual std::string getSystemCategory(const std::string& systemName);
319 
321  virtual std::list<std::string> getFormationNames();
322 
324  virtual std::list<DtVectorOffset3D> getFormationPositions(const std::string& formationName);
325 
327 
329  virtual void setSimManager(DtSimManager* simManager);
330 
331  virtual DtString objectType() const;
332 
335 
338  bool deserialize(const DtString& data);
339 
341  static DtAsciiSerializable* creator();
342 
345  const DtVrfObject* vrfObject() const { return myObjectDeletionHandle->object(); }
346 
348  void testValid() const;
349 
352  {
353  return DtScriptVrfObject(DtUUID::nullUUID(), 0);
354  }
355 
356 protected:
360 };
361 
363 
364 DT_DLL_vrfobjcore std::ostream& operator<<(std::ostream&, const DtScriptVrfObject&);
365 
370  : public DtScriptVrfObject
371 #ifdef DtObjectDebugger_Enable
372  , public DtObjectDebugger<DtScriptOwnshipObject>
373 #endif
374 {
375 public:
376  DtScriptOwnshipObject(const DtUUID& name, DtVrfObject* const vrfObject);
377  DtScriptOwnshipObject(const DtUUID& name, DtSimManager* simManager,
378  DtVrfObject* const vrfobject);
381 
384 
385  void setLocation3D(const DtLocation3D &newloc);
386  void setHeading(const double heading);
387  void setPitch(const double heading);
388 
389  virtual void setLabel(const std::string&);
390  virtual void setExtendedLabel(int, const std::string&);
391  virtual void setNavigationEnabled(bool);
392 
394  DtVrfObject* ownshipObject();
395 
396  virtual std::list<std::string> getResourceNames(void)const;
397 
405  virtual double getResourceAmounts(const std::string& resourceName, double* fullAmount) const;
406 
408  virtual void depleteResource(const std::string& resourceName, double amount);
409 
411  virtual void replenishResource(const std::string& resourceName, double amount);
412 
414  virtual int getNotifyLevel() const;
415 
418  virtual std::string getMunitionType(const std::string& resourceName);
419 
423  virtual bool addResource(const std::string& resourceType, const std::string& resourceName,
424  double currentAmount, double fullAmount);
425 
428  virtual void updateStateAndParameterProperties();
429 
431  virtual void removeResource(const std::string& resourceName);
432 
434  virtual bool isUnderFire() const;
435 
439  virtual int suppressionLevel() const;
440 
442  virtual std::string nonLethalDamageEffect() const;
443 
446  virtual std::list<DtScriptVrfObject> getObservedHostileContacts(void);
447 
452  virtual std::list<DtScriptVrfObject> getAllHostileContacts(void);
453 
457  virtual std::list<DtScriptVrfObject> getAllContacts(void);
458 
462  virtual int targetPriority(const DtScriptVrfObject & otherEntity);
463 
466  virtual bool registerDetonationInterest(double range,
467  const std::string& munitionType);
468 
471  virtual bool registerFireInterest(double range,
472  const std::string& munitionType);
473 
478  virtual bool getLastDetonation(std::string& munitionType, DtLocation3D& location);
479 
484  virtual bool getLastFire(std::string& munitionType, DtLocation3D& location);
485 
488  virtual void setDestroyed(bool destroyed);
489 
491  virtual std::string getRulesOfEngagement();
492 
494  virtual void setRulesOfEngagement(const std::string& rule);
495 
497  virtual std::list<std::string> embeddedEntityNames();
498 
501  virtual std::list<std::string> embeddedEntitiesOfType(std::string typeString);
502 
505  virtual std::list<std::string> embeddedEntitiesCapableOf(std::string taskSetName);
506 
510  virtual DtScriptVrfObject simObjectByEmbeddedEntityName(std::string eeName);
511 
515  virtual std::string embeddedEntityStatus(std::string eeName);
516 
528  virtual double normalizedSensorSignature(const DtScriptVrfObject & targetEntity,
529  std::string domain);
530 
535  virtual void changeAttachment(const std::string& parentUUID );
536 
538  virtual void setExtendedData(const std::string& key, const std::string& val);
539 
541  virtual bool canFireAt(const DtLocation3D& location);
542 
545 
546 protected:
547 
550  static bool processDetonation(const DtDetonationContext& detonationContext, void* usr);
551  bool processDetonation(const DtDetonationContext& detonationContext);
553 
556  static bool processFire(const DtFireContext& fireContext, void* usr);
557  bool processFire(const DtFireContext& fireContext);
559 
562 
565 
567  std::string myLastFireMunition;
568 
571 
573  std::map<std::string, DtScriptComponentSystem*> myScriptComponentSystems;
574 };
575 
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
std::string myLastFireMunition
The munition type of the last fire.
Definition: scriptVrfObject.h:567
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
const DtSimManager * mySimManager
Definition: scriptVrfObject.h:358
DtVrfObjectDeletionHandle myObjectDeletionHandle
Definition: scriptVrfObject.h:359
std::string myLastDetonationMunition
The munition type of the last detonation.
Definition: scriptVrfObject.h:561
Definition: asciiSerializable.h:33
virtual bool deserialize(const DtString &)=0
This function should take the string that was serialized via serialize() and fill this object with th...
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
#define DT_DEFINE_OBJECT_DEBUGGER_NAME(type)
Definition: objectCounter.h:265
Default on in debug, off in release.
Definition: objectCounter.h:31
DT_DLL_features std::ostream & operator<<(std::ostream &, const DtFeatureTransform &)
std::ostream output.
virtual DtString serialize()=0
The following characters are reserved and cannot be used in serialization: &#39;|&#39;, &#39;:&#39;.
The DtFireContext class exists to contain all the relevent information necessary for an entity to pro...
Definition: fireContext.h:23
Description: Readable, Writable uuid string.
Definition: rwUUID.h:419
! VectorOffset3D is a direction vector that is relative to some direction specified by a Vector3D...
Definition: scriptGeometry.h:424
const DtVrfObject * vrfObject() const
For use by C++ side methods.
Definition: scriptVrfObject.h:345
static const DtUUID & nullUUID()
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
The DtDetonationContext contains all the information necessary for processing a Detonation Interactio...
Definition: detonationContext.h:27
boost::shared_ptr< DtVrfObjectDeletionTracker > DtVrfObjectDeletionHandle
Definition: vrfObject.h:146
virtual DtString objectType() const =0
Should return the string name of this object.
! DtVector3D is a vector in earth-relative coordinates, e.g.
Definition: scriptGeometry.h:157
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103
The &quot;this&quot; version is the own-ship object.
Definition: scriptVrfObject.h:369
This class is a wrapper for a DtCompSystem for use by scripts.
Definition: scriptComponentSystem.h:19
voidpf uLong offset
Definition: ioapi.h:42
std::map< std::string, DtScriptComponentSystem * > myScriptComponentSystems
List of systems which we have previously looked up, by name.
Definition: scriptVrfObject.h:573
static DtScriptVrfObject nullObject()
Returns a null object.
Definition: scriptVrfObject.h:351
DtLocation3D myLastFireLocation
The location of the last fire.
Definition: scriptVrfObject.h:570
DtRwUUID myUUID
Definition: scriptVrfObject.h:357
DtLocation3D myLastDetonationLocation
The location of the last detonation.
Definition: scriptVrfObject.h:564
Definition: scriptVrfObject.h:24
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22

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)