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) 2025 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 
49  virtual ~DtScriptVrfObject() override;
50 
51  bool operator==(const DtScriptVrfObject& orig) const;
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 
296  virtual DtLocation3D getIntersectionPointWithLine2D( const DtLocation3D& point1,
297  const DtLocation3D& point2, bool& hasIntersection ) const;
298 
300  virtual std::string getCallsign() const;
301 
303  virtual bool isActive() const;
304 
310  virtual bool hasStateProperty(const std::string& propertyName);
311  virtual bool hasParameterProperty( const std::string& propertyName );
313 
315  virtual std::string getDiGuyHandItem() const;
316 
318 
321  std::string diguyCharacterType() const;
322 
325  virtual bool isAnimationAvailable( const std::string& animationName ) const;
326 
329  virtual bool isCompatibleAnimationAvailable( const std::string& animationName ) const;
330 
334  virtual bool isCharacterAnimationAvailable( const std::string& animationName, bool checkCompatible ) const;
335 
336  //\return True if the specified DI-Guy appearance name is available for this object.
337  virtual bool isAppearanceAvailable( const std::string& appearanceName ) const;
338 
339  //\return True if the specified DI-Guy hand item name is available for this object.
340  virtual bool isHandItemAvailable( const std::string& handItemName ) const;
341 
342  //\return True if the specified DI-Guy head name is available for this object.
343  virtual bool isHeadAvailable( const std::string& headName ) const;
344 
345  //\return True if the specified DI-Guy gesture name is available for this object.
346  virtual bool isGestureAvailable( const std::string& gestureName ) const;
347 
348  //\return The time of animation to run (in seconds). If not available will return 0
349  virtual double animationDuration( const std::string& animationName ) const;
350 
351  //\return The speed of animation. If not available will return 0
352  virtual double animationSpeed( const std::string& animationName ) const;
353 
354  //\return The duration of the transition motion from the first animation to the second,
356  virtual double getAnimationTransitionInfo( const std::string& fromAnimation, const std::string& toAnimation,
357  DtVectorOffset3D& deltaPos, double& deltaHeading ) const;
358 
360 
362  virtual void setSimulationServices(const DtSimulationServices* simManager);
363 
364  virtual DtString objectType() const override;
365 
367  virtual DtString serialize() override;
368 
371  virtual bool deserialize(const DtString& data) override;
372 
374  static DtAsciiSerializable* creator();
375 
378  DtSimObjectReference simObjectReference() const { return mySimObjectReference; }
379 
381  void testValid() const;
382 
384  bool testAggregateSimObjectValid() const;
385 
388  {
389  return DtScriptVrfObject(0, DtUUID::nullUUID());
390  }
391 
393  const DtSimulationServices* simulationServices() const;
394 
395 protected:
400 
404 
405 public:
406  VRF4API_METHOD DtSimObjectReference vrfObject() const { return simObjectReference(); };
407 };
408 
410 
411 DT_DLL_vrfobjcore std::ostream& operator<<(std::ostream&, const DtScriptVrfObject&);
412 
419  : public DtScriptVrfObject
420 #ifdef DtObjectDebugger_Enable
421  , public DtObjectDebugger<DtScriptOwnshipObject>
422 #endif
423 {
424 public:
425  DtScriptOwnshipObject(DtLocalObject* const localObject);
427  virtual ~DtScriptOwnshipObject() override;
428 
431 
432  void setLocation3D(const DtLocation3D &newloc);
433  void setHeading(const double heading);
434  void setPitch(const double heading);
435 
436 
438  virtual std::string getResourceTypeFromResourceName(std::string resourceName);
439 
440  virtual void setLabel(const std::string&);
441  virtual void setExtendedLabel(int, const std::string&);
442  virtual void setNavigationEnabled(bool);
443 
445  DtLocalObject* ownshipObject();
446  const DtLocalObject* ownshipObject() const;
447 
448  virtual std::list<std::string> getResourceNames(void)const;
449  virtual std::list<std::string> getResourceNamesFromBin(int bin)const;
450 
458  virtual double getResourceAmounts(const std::string& resourceName, double* fullAmount) const;
459  virtual double getResourceAmountsFromBin(const std::string& resourceName, int bin, double* fullAmount) const;
460 
462  virtual void depleteResource(const std::string& resourceName, double amount);
463  virtual void depleteResourceFromBin(const std::string& resourceName, int bin, double amount);
464 
466  virtual void replenishResource(const std::string& resourceName, double amount);
467  virtual void replenishResourceFromBin(const std::string& resourceName, int bin, double amount);
468 
470  virtual int getNotifyLevel() const;
471 
473  virtual std::string getCurrentFormationName();
474 
476  virtual DtVectorOffset3D getFormationExtent();
477 
480  virtual std::string getMunitionType(const std::string& resourceName);
481 
485  virtual bool addResource(const std::string& resourceType, const std::string& resourceName,
486  double currentAmount, double fullAmount);
487  virtual bool addResourceToBin(const std::string& resourceName,
488  double currentAmount, double fullAmount, int bin);
489 
492  virtual void updateStateAndParameterProperties();
493 
495  virtual void removeResource(const std::string& resourceName);
496  virtual void removeResourceFromBin(const std::string& resourceName, int bin);
497 
499  virtual double getOrderedSpeed() const;
500 
502  virtual bool isUnderFire() const;
503 
507  virtual int suppressionLevel() const;
508 
510  virtual std::string nonLethalDamageEffect() const;
511 
516  virtual std::vector<DtScriptVrfObject> getAllHostileContacts(void) const;
517 
521  virtual std::list<DtScriptVrfObject> getAllContacts(void);
522 
526  virtual int targetPriority(const DtScriptVrfObject & otherEntity);
527 
529  virtual DtScriptVrfObject userTarget();
530 
533  virtual DtScriptVrfObject missileTarget();
534 
537  virtual bool registerDetonationInterest(double range,
538  const std::string& munitionType);
539 
541  virtual void setOperationInProgress(int, bool b);
542 
545  virtual bool registerFireInterest(double range,
546  const std::string& munitionType);
547 
552  virtual bool getLastDetonation(std::string& munitionType, DtLocation3D& location);
553 
555  virtual void clearLastDetonation();
556 
562  virtual bool getLastDetonationInformation(DtScriptDetonation& detonation);
563 
568  virtual bool getLastFire(std::string& munitionType, DtLocation3D& location);
569 
572  virtual void setDestroyed(bool destroyed);
573 
575  virtual std::string getRulesOfEngagement();
576 
578  virtual void setRulesOfEngagement(const std::string& rule);
579 
581  virtual bool isTargetAllowedByRulesOfEngagement(const DtScriptVrfObject& targetObj);
582 
584  virtual bool isInSectorOfResponsibility(const DtScriptVrfObject& targetObj);
585 
587  virtual std::list<std::string> embeddedEntityNames();
588 
591  virtual std::list<std::string> embeddedEntitiesOfType(std::string typeString);
592 
595  virtual std::list<std::string> embeddedEntitiesCapableOf(std::string taskSetName);
596 
600  virtual DtScriptVrfObject simObjectByEmbeddedEntityName(std::string eeName);
601 
605  virtual std::string embeddedEntityStatus(std::string eeName);
606 
618  virtual double normalizedSensorSignature(const DtScriptVrfObject & targetEntity,
619  std::string domain);
620 
625  virtual void changeAttachment(const std::string& parentUUID );
626 
628  virtual void setExtendedData(const std::string& key, const std::string& val);
629 
631  virtual bool canFireAt(const DtLocation3D& location);
632 
634  virtual std::shared_ptr<DtScriptComponentSystem> lookupSystem(const std::string& systemName);
635 
637  virtual std::list<std::string> getSystemNames();
638 
641  virtual std::string getSystemCategory(const std::string& systemName);
642 
644  virtual bool isCapableOfTask(std::string taskName);
645 
648 
651 
653  virtual bool isEmbarked() const override;
654 
656  virtual DtScriptVrfObject getEmbarkedOn() const override;
658 
661  virtual bool getNavigationEnabled() const;
663 
665  virtual void attachToParent(DtScriptVrfObject&) const;
666 
669  virtual void clearAssignedTransport() const;
670  virtual void setAssignedTransport(DtScriptVrfObject&) const;
672 
673 
677  virtual bool hasStateProperty(const std::string& propertyName) override;
678  virtual bool hasInternalStateProperty(const std::string& context, const std::string& propertyName);
679  virtual bool hasParameterProperty(const std::string& propertyName) override;
681 
683  virtual std::list<DtScriptVrfObject> getAllVrfSubordinates(bool isVrf) const override;
684 
687 
688  virtual bool isValid() const override;
689 
690 protected:
691 
694  static bool processDetonation(const DtDetonationContext& detonationContext, void* usr);
695  bool processDetonation(const DtDetonationContext& detonationContext);
697 
700  static bool processFire(const DtFireContext& fireContext, void* usr);
701  bool processFire(const DtFireContext& fireContext);
703 
704 protected:
707 
709  std::string myLastFireMunition;
710 
713 
715  std::map<std::string, DtScriptComponentSystem*> myScriptComponentSystems;
716 
718 };
719 
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:709
virtual bool isValid() const
DtPlatformSimObjectFacade myPlatformSimObjectFacade
Definition: scriptVrfObject.h:403
Definition: asciiSerializable.h:40
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: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:378
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:24
DtVrfSimulatedSimObjectFacade myVrfSimulatedSimObjectFacade
Definition: scriptVrfObject.h:399
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:428
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:398
DtLocalObject * myLocalObject
Definition: scriptVrfObject.h:717
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:161
VRF4API_METHOD DtSimObjectReference vrfObject() const
Definition: scriptVrfObject.h:406
const DtSimulationServices * mySimulationServices
Definition: scriptVrfObject.h:397
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
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:418
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:715
DtScriptDetonation myLastDetonation
Store information from last detonation in here.
Definition: scriptVrfObject.h:706
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:23
static DtScriptVrfObject nullObject()
Returns a null object.
Definition: scriptVrfObject.h:387
DtAggregateSimObjectFacade * myAggregateSimObjectFacade
Convenience classes that can be used if the object is of the given type.
Definition: scriptVrfObject.h:402
DtLocation3D myLastFireLocation
The location of the last fire.
Definition: scriptVrfObject.h:712
DtRwUUID myUUID
Definition: scriptVrfObject.h:396
A locally simulated VRF object.
Definition: localObject.h:98
Definition: scriptVrfObject.h:30
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)