VR-Forces Developer's Guide
 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 
13 
14 #include "vrfobjcore/simObject.h"
15 #include <vrfutil/rwUUID.h>
16 #include <vrfutil/scriptGeometry.h>
17 #include <string>
19 #include <vrfutil/objectCounter.h>
20 #include <stdexcept>
21 #include <vrfutil/rwUUID.h>
22 #include <tbb/spin_rw_mutex.h>
23 
25 class DtFireContext;
28 class DtLocalObject;
29 
31  : public DtAsciiSerializable
32 #ifdef DtObjectDebugger_Enable
33  , public DtObjectDebugger<DtScriptVrfObject>
34 #endif
35 {
36 public:
37  DtScriptVrfObject(const DtSimulationServices*, const DtUUID& name);
40 
46 
47  DtScriptVrfObject& operator=(const DtScriptVrfObject &orig);
48 
50 
51  bool operator==(const DtScriptVrfObject& orig);
52 
55 
57  virtual DtScriptVrfObject getAssignedTransport();
58 
61  virtual DtLocation3D getLocation3D() const;
62  virtual DtLocation3D getLocation3dAllSubordinates(bool bIncludeDestroyedSubordinates) const;
63 
65  virtual double getDistanceBehind(DtScriptVrfObject) const;
66 
68  virtual double getSpeed() const;
69 
71  virtual std::string getUUID() const;
72 
79  virtual DtVector3D getDirection3D() const;
80 
83  virtual DtVector3D getVelocity3D() const;
85 
87  virtual std::list<std::string> getFormationNames();
88 
90  virtual std::list<int> getFormationPromotionOrder(const std::string& formationName);
91 
93  virtual std::list<std::string> formationSubFormations(
94  const std::string& formationName);
95 
98  virtual double getHeightAboveTerrain(bool& available) const;
99 
104  virtual bool hasLosToObject(const DtScriptVrfObject &target,
105  bool & dataAvailable) const;
106 
114  virtual bool isPointInside(const DtLocation3D &point) const;
115 
117  virtual bool independentlyTasked() const;
118 
123  virtual bool hasLosToLocation(DtLocation3D &targetLoc,
124  bool &dataAvailable) const;
125 
127  virtual std::string getEntityType() const;
128 
131  virtual bool isAggregate() const;
132 
135  virtual bool isPseudoAggregate() const;
136 
139  virtual std::string getEchelonLevel() const;
140 
142  virtual std::string getForceType() const;
143 
145  virtual int getForceEnumeration() const;
146 
152  virtual std::string getDamageState() const;
153 
155  virtual unsigned getLifeformPosture() const;
156 
158  virtual unsigned getAppearance() const;
159 
161  virtual bool isDestroyed() const;
162 
164  virtual bool isFirePowerKilled() const;
165 
167  virtual bool isMobilityKilled() const;
168 
170  virtual bool isSensorKilled() const;
171 
173  virtual bool isInvisible() const;
174 
176  virtual bool isEmbarked() const;
177 
180  virtual bool isOnTopOf(DtScriptVrfObject&) const;
181  virtual bool isOnTopOfWithDistance(DtScriptVrfObject&, double) const;
182 
184  virtual DtScriptVrfObject getEmbarkedOn() const;
185 
186  virtual std::list<DtScriptVrfObject> getEmbarkedObjects(void)const;
187 
188  virtual DtVectorOffset3D getOffsetFromParent() const;
189 
190  virtual DtVectorOffset3D getOffsetOfLocation(const DtLocation3D& location) const;
191 
193  virtual std::list<DtScriptVrfObject> getSubordinates(void) const;
194 
196  virtual std::list<DtScriptVrfObject> getVrfSubordinates(bool isVrf) const;
197 
199  virtual DtScriptVrfObject getSuperior() const;
200 
202  virtual double getGroundAltitude(bool& isWater, bool& dataAvailable);
203 
205  virtual double recalculatePhysicalFootprintFromSubordinates(const std::list<DtScriptVrfObject>&) const;
206 
210  virtual DtVectorOffset3D getPartParentPosition(int) const;
211  virtual DtLocation3D getPartWorldPosition(int) const;
212  virtual double getPartPitch(int) const;
213  virtual double getPartPitchIncludingParent(int, bool includeParent = false) const;
214  virtual double getPartHeading(int) const;
215  virtual double getPartHeadingIncludingParent(int, bool includeParent = false) const;
216  virtual double getPartTranslationForward(int) const;
217  virtual double getPartTranslationRight(int) const;
218  virtual double getPartTranslationUp(int) const;
219  virtual double getPartExtension(int) const;
221 
225  virtual std::list<DtScriptVrfObject> getAllSubordinates(void) const;
226 
227  virtual std::list<DtScriptVrfObject> getAllVrfSubordinates(bool isVrf) const;
228 
229  virtual std::list<DtScriptVrfObject> getCapableSubordinates(void) const;
230  virtual std::list<DtScriptVrfObject> getCapableVrfSubordinates(bool isVrf) const;
231 
232  virtual std::list<DtScriptVrfObject> getAllCapableSubordinates(void) const;
233  virtual std::list<DtScriptVrfObject> getAllCapableVrfSubordinates(bool isVrf) const;
234 
236  virtual bool isVrfSimulated() const;
237 
238  virtual std::list<DtLocation3D> getLocations3D(void)const;
239 
240  virtual std::string getName() const;
241  virtual std::string getLabel() const;
242  virtual std::string getExtendedLabel(int) const;
243 
244  virtual int getAirTurbulence() const;
245 
246  virtual std::string getGlobalId() const;
247  virtual std::string getObjectId() const;
248 
249  virtual double getHeading() const;
250  virtual double getPitch() const;
251  virtual double getRoll() const;
252 
253  virtual double getDraft() const;
254 
256  void terrainSurfaceDebug();
257 
259  void deleteObject();
260 
262  bool isDeleted() const;
263  virtual bool isValid() const;
264 
266  virtual bool isLocal() const;
267 
271  virtual DtVectorOffset3D getBoundingVolume(DtVectorOffset3D& offset) const;
272 
274  virtual DtVectorOffset3D getBoundingVolumeAllSubordinates(bool bIncludeDestroyedSubordinates, DtVectorOffset3D& offset) const;
275 
278  virtual std::string getNbcDamage(int& dmgPerSec, int& moppLvl) const;
279 
281  virtual std::string getNbcAgent() const;
282 
284  virtual bool isBreached() const;
285 
287  virtual std::string getExtendedData(const std::string& key) const;
288 
291  virtual DtLocation3D getClosestPointToLocation2D(const DtLocation3D& location,
292  double& distance) const;
293 
297  virtual DtLocation3D getIntersectionPointWithLine2D(const DtLocation3D& point1,
298  const DtLocation3D& point2, bool& hasIntersection) const;
299 
301  virtual std::string getCallsign() const;
302 
304  virtual bool isActive() const;
305 
311  virtual bool hasStateProperty(const std::string& propertyName);
312  virtual bool hasParameterProperty(const std::string& propertyName);
314 
316  virtual std::string getDiGuyHandItem() const;
317 
319 
320  //\return True if the specified DI-Guy animation name is available for this object.
321  virtual bool isAnimationAvailable(const std::string& animationName) const;
322 
323  //\return True if the specified DI-Guy appearance name is available for this object.
324  virtual bool isAppearanceAvailable(const std::string& appearanceName) const;
325 
326  //\return True if the specified DI-Guy hand item name is available for this object.
327  virtual bool isHandItemAvailable(const std::string& handItemName) const;
328 
329  //\return True if the specified DI-Guy head name is available for this object.
330  virtual bool isHeadAvailable(const std::string& headName) const;
331 
332  //\return True if the specified DI-Guy gesture name is available for this object.
333  virtual bool isGestureAvailable(const std::string& gestureName) const;
334 
335  //\return The time of animation to run (in seconds). If not available will return 0
336  virtual double animationDuration(const std::string& animationName) const;
337 
338  //\return The speed of animation. If not available will return 0
339  virtual double animationSpeed(const std::string& animationName) const;
340 
341  //\return The duration of the transition motion from the first animation to the second,
343  virtual double getAnimationTransitionInfo(const std::string& fromAnimation, const std::string& toAnimation,
344  DtVectorOffset3D& deltaPos, double& deltaHeading) const;
345 
347 
349  virtual void setSimulationServices(const DtSimulationServices* simManager);
350 
351  virtual DtString objectType() const;
352 
355 
358  virtual bool deserialize(const DtString& data);
359 
361  static DtAsciiSerializable* creator();
362 
365  DtSimObjectReference simObjectReference() const { return mySimObjectReference; }
366 
368  void testValid() const;
369 
371  bool testAggregateSimObjectValid() const;
372 
375  {
376  return DtScriptVrfObject(0, DtUUID::nullUUID());
377  }
378 
380  const DtSimulationServices* simulationServices() const;
381 
382 protected:
387 
391 
392 public:
393  VRF4API_METHOD DtSimObjectReference vrfObject() const { return simObjectReference(); };
394 };
395 
397 
398 DT_DLL_vrfobjcore std::ostream& operator<<(std::ostream&, const DtScriptVrfObject&);
399 
406  : public DtScriptVrfObject
407 #ifdef DtObjectDebugger_Enable
408  , public DtObjectDebugger<DtScriptOwnshipObject>
409 #endif
410 {
411 public:
412  DtScriptOwnshipObject(DtLocalObject* const localObject);
415 
418 
419  void setLocation3D(const DtLocation3D &newloc);
420  void setHeading(const double heading);
421  void setPitch(const double heading);
422 
423  virtual void setLabel(const std::string&);
424  virtual void setExtendedLabel(int, const std::string&);
425  virtual void setNavigationEnabled(bool);
426 
428  DtLocalObject* ownshipObject();
429  const DtLocalObject* ownshipObject() const;
430 
431  virtual std::list<std::string> getResourceNames(void)const;
432 
440  virtual double getResourceAmounts(const std::string& resourceName, double* fullAmount) const;
441 
443  virtual void depleteResource(const std::string& resourceName, double amount);
444 
446  virtual void replenishResource(const std::string& resourceName, double amount);
447 
449  virtual int getNotifyLevel() const;
450 
452  virtual std::string getCurrentFormationName();
453 
455  virtual DtVectorOffset3D getFormationExtent();
456 
459  virtual std::string getMunitionType(const std::string& resourceName);
460 
464  virtual bool addResource(const std::string& resourceType, const std::string& resourceName,
465  double currentAmount, double fullAmount);
466 
469  virtual void updateStateAndParameterProperties();
470 
472  virtual void removeResource(const std::string& resourceName);
473 
475  virtual double getOrderedSpeed() const;
476 
478  virtual bool isUnderFire() const;
479 
483  virtual int suppressionLevel() const;
484 
486  virtual std::string nonLethalDamageEffect() const;
487 
490  virtual std::list<DtScriptVrfObject> getObservedHostileContacts(void);
491 
496  virtual std::list<DtScriptVrfObject> getAllHostileContacts(void);
497 
501  virtual std::list<DtScriptVrfObject> getAllContacts(void);
502 
506  virtual int targetPriority(const DtScriptVrfObject & otherEntity);
507 
509  virtual DtScriptVrfObject userTarget();
510 
513  virtual bool registerDetonationInterest(double range,
514  const std::string& munitionType);
515 
517  virtual void setOperationInProgress(int, bool b);
518 
521  virtual bool registerFireInterest(double range,
522  const std::string& munitionType);
523 
528  virtual bool getLastDetonation(std::string& munitionType, DtLocation3D& location);
529 
531  virtual void clearLastDetonation();
532 
538  virtual bool getLastDetonationInformation(DtScriptDetonation& detonation);
539 
544  virtual bool getLastFire(std::string& munitionType, DtLocation3D& location);
545 
548  virtual void setDestroyed(bool destroyed);
549 
551  virtual std::string getRulesOfEngagement();
552 
554  virtual void setRulesOfEngagement(const std::string& rule);
555 
557  virtual bool isTargetAllowedByRulesOfEngagement(const DtScriptVrfObject& targetObj);
558 
560  virtual bool isInSectorOfResponsibility(const DtScriptVrfObject& targetObj);
561 
563  virtual std::list<std::string> embeddedEntityNames();
564 
567  virtual std::list<std::string> embeddedEntitiesOfType(std::string typeString);
568 
571  virtual std::list<std::string> embeddedEntitiesCapableOf(std::string taskSetName);
572 
576  virtual DtScriptVrfObject simObjectByEmbeddedEntityName(std::string eeName);
577 
581  virtual std::string embeddedEntityStatus(std::string eeName);
582 
594  virtual double normalizedSensorSignature(const DtScriptVrfObject & targetEntity,
595  std::string domain);
596 
601  virtual void changeAttachment(const std::string& parentUUID );
602 
604  virtual void setExtendedData(const std::string& key, const std::string& val);
605 
607  virtual bool canFireAt(const DtLocation3D& location);
608 
610  virtual boost::shared_ptr<DtScriptComponentSystem> lookupSystem(const std::string& systemName);
611 
613  virtual std::list<std::string> getSystemNames();
614 
617  virtual std::string getSystemCategory(const std::string& systemName);
618 
620  virtual bool isCapableOfTask(std::string taskName);
621 
624 
627 
629  virtual bool isEmbarked() const;
630 
632  virtual DtScriptVrfObject getEmbarkedOn() const;
634 
637  virtual bool getNavigationEnabled() const;
639 
641  virtual void attachToParent(DtScriptVrfObject&) const;
642 
645  virtual void clearAssignedTransport() const;
646  virtual void setAssignedTransport(DtScriptVrfObject&) const;
648 
649 
653  virtual bool hasStateProperty(const std::string& propertyName);
654  virtual bool hasParameterProperty(const std::string& propertyName);
656 
658  virtual std::list<DtScriptVrfObject> getAllVrfSubordinates(bool isVrf) const;
659 
662 
663  virtual bool isValid() const;
664 
665 protected:
666 
669  static bool processDetonation(const DtDetonationContext& detonationContext, void* usr);
670  bool processDetonation(const DtDetonationContext& detonationContext);
672 
675  static bool processFire(const DtFireContext& fireContext, void* usr);
676  bool processFire(const DtFireContext& fireContext);
678 
679 protected:
682 
684  std::string myLastFireMunition;
685 
688 
690  std::map<std::string, DtScriptComponentSystem*> myScriptComponentSystems;
691 
693 };
694 
UUID is a unique ID wrapper class.
Definition: uuid.h:59
virtual bool hasStateProperty(const std::string &propertyName)
Checks to see if the property exists. It is OK to call the get... Lua API functions when the property...
std::string myLastFireMunition
The munition type of the last fire.
Definition: scriptVrfObject.h:684
virtual bool isValid() const
DtPlatformSimObjectFacade myPlatformSimObjectFacade
Definition: scriptVrfObject.h:390
Definition: asciiSerializable.h:38
virtual bool deserialize(const DtString &)=0
This function should take the string that was serialized via serialize() and fill this object with th...
The DtSimObjectReference is a shared pointer that can be used amongst many object for access to the u...
Definition: simObjectReference.h:26
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
#define DT_DEFINE_OBJECT_DEBUGGER_NAME(type)
Definition: objectCounter.h:31
Default on in debug, off in release.
Definition: objectCounter.h:27
DtSimObjectReference simObjectReference() const
For use by C++ side methods. Call testValid() to try and fill in object pointer (if does not exist) o...
Definition: scriptVrfObject.h:365
DT_DLL_features std::ostream & operator<<(std::ostream &, const DtFeatureTransform &)
std::ostream output.
const DtSimulationServices * simulationServices() const
Simulation services associated with this object.
Contains the DtUUID class declaration.
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
DtVrfSimulatedSimObjectFacade myVrfSimulatedSimObjectFacade
Definition: scriptVrfObject.h:386
uuid class
Definition: rwUUID.h:26
virtual bool hasParameterProperty(const std::string &propertyName)
Checks to see if the property exists. It is OK to call the get... Lua API functions when the property...
This class is a wrapper for a DtScriptDetonation for use by scripts. It derives from DtAsciiSerializa...
Definition: scriptDetonation.h:18
VectorOffset3D is a direction vector that is relative to some direction specified by a Vector3D...
Definition: scriptGeometry.h:424
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. Coordinates are in local database coordinates The coordinat...
virtual DtScriptVrfObject getEmbarkedOn() const
Parent this object is embarked on.
The DtDetonationContext contains all the information necessary for processing a Detonation Interactio...
Definition: detonationContext.h:23
DtSimObjectReference mySimObjectReference
Definition: scriptVrfObject.h:385
DtLocalObject * myLocalObject
Definition: scriptVrfObject.h:692
virtual DtString objectType() const =0
Should return the string name of this object. The object name should not be part of the serialization...
DtVector3D is a vector in earth-relative coordinates, e.g. east-north or heading-range. Its direction in space depends on where on the earth it is attached (like topocentric coordinates).
Definition: scriptGeometry.h:157
VRF4API_METHOD DtSimObjectReference vrfObject() const
Definition: scriptVrfObject.h:393
const DtSimulationServices * mySimulationServices
Definition: scriptVrfObject.h:384
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:95
virtual bool isEmbarked() const
Returns whether or not this item is embarked on any other item.
The &quot;this&quot; version is the own-ship object. It is separated to allow special functions for the ownshi...
Definition: scriptVrfObject.h:405
This class is a wrapper for a DtCompSystem for use by scripts. It derives from DtAsciiSerializable so...
Definition: scriptComponentSystem.h:18
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:690
DtScriptDetonation myLastDetonation
Store information from last detonation in here.
Definition: scriptVrfObject.h:681
virtual std::list< DtScriptVrfObject > getAllVrfSubordinates(bool isVrf) const
#define VRF4API_METHOD
Include this header file to allow for the definition/usage of the ability to mark something as deprec...
Definition: vrf4XAPI.h:22
static DtScriptVrfObject nullObject()
Returns a null object.
Definition: scriptVrfObject.h:374
DtAggregateSimObjectFacade * myAggregateSimObjectFacade
Convenience classes that can be used if the object is of the given type.
Definition: scriptVrfObject.h:389
DtLocation3D myLastFireLocation
The location of the last fire.
Definition: scriptVrfObject.h:687
DtRwUUID myUUID
Definition: scriptVrfObject.h:383
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86
Definition: scriptVrfObject.h:30
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)