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 bool isActive() const;
302 
308  virtual bool hasStateProperty(const std::string& propertyName);
309  virtual bool hasParameterProperty(const std::string& propertyName);
311 
313  virtual std::string getDiGuyHandItem() const;
314 
316 
317  //\return True if the specified DI-Guy animation name is available for this object.
318  virtual bool isAnimationAvailable(const std::string& animationName) const;
319 
320  //\return True if the specified DI-Guy appearance name is available for this object.
321  virtual bool isAppearanceAvailable(const std::string& appearanceName) const;
322 
323  //\return True if the specified DI-Guy hand item name is available for this object.
324  virtual bool isHandItemAvailable(const std::string& handItemName) const;
325 
326  //\return True if the specified DI-Guy head name is available for this object.
327  virtual bool isHeadAvailable(const std::string& headName) const;
328 
329  //\return True if the specified DI-Guy gesture name is available for this object.
330  virtual bool isGestureAvailable(const std::string& gestureName) const;
331 
332  //\return The time of animation to run (in seconds). If not available will return 0
333  virtual double animationDuration(const std::string& animationName) const;
334 
335  //\return The speed of animation. If not available will return 0
336  virtual double animationSpeed(const std::string& animationName) const;
337 
338  //\return The duration of the transition motion from the first animation to the second,
340  virtual double getAnimationTransitionInfo(const std::string& fromAnimation, const std::string& toAnimation,
341  DtVectorOffset3D& deltaPos, double& deltaHeading) const;
342 
344 
346  virtual void setSimulationServices(const DtSimulationServices* simManager);
347 
348  virtual DtString objectType() const;
349 
352 
355  virtual bool deserialize(const DtString& data);
356 
358  static DtAsciiSerializable* creator();
359 
362  DtSimObjectReference simObjectReference() const { return mySimObjectReference; }
363 
365  void testValid() const;
366 
368  bool testAggregateSimObjectValid() const;
369 
372  {
373  return DtScriptVrfObject(0, DtUUID::nullUUID());
374  }
375 
377  const DtSimulationServices* simulationServices() const;
378 
379 protected:
384 
388 
389 public:
390  VRF4API_METHOD DtSimObjectReference vrfObject() const { return simObjectReference(); };
391 };
392 
394 
395 DT_DLL_vrfobjcore std::ostream& operator<<(std::ostream&, const DtScriptVrfObject&);
396 
403  : public DtScriptVrfObject
404 #ifdef DtObjectDebugger_Enable
405  , public DtObjectDebugger<DtScriptOwnshipObject>
406 #endif
407 {
408 public:
409  DtScriptOwnshipObject(DtLocalObject* const localObject);
412 
415 
416  void setLocation3D(const DtLocation3D &newloc);
417  void setHeading(const double heading);
418  void setPitch(const double heading);
419 
420  virtual void setLabel(const std::string&);
421  virtual void setExtendedLabel(int, const std::string&);
422  virtual void setNavigationEnabled(bool);
423 
425  DtLocalObject* ownshipObject();
426  const DtLocalObject* ownshipObject() const;
427 
428  virtual std::list<std::string> getResourceNames(void)const;
429 
437  virtual double getResourceAmounts(const std::string& resourceName, double* fullAmount) const;
438 
440  virtual void depleteResource(const std::string& resourceName, double amount);
441 
443  virtual void replenishResource(const std::string& resourceName, double amount);
444 
446  virtual int getNotifyLevel() const;
447 
449  virtual std::string getCurrentFormationName();
450 
452  virtual DtVectorOffset3D getFormationExtent();
453 
456  virtual std::string getMunitionType(const std::string& resourceName);
457 
461  virtual bool addResource(const std::string& resourceType, const std::string& resourceName,
462  double currentAmount, double fullAmount);
463 
466  virtual void updateStateAndParameterProperties();
467 
469  virtual void removeResource(const std::string& resourceName);
470 
472  virtual double getOrderedSpeed() const;
473 
475  virtual bool isUnderFire() const;
476 
480  virtual int suppressionLevel() const;
481 
483  virtual std::string nonLethalDamageEffect() const;
484 
487  virtual std::list<DtScriptVrfObject> getObservedHostileContacts(void);
488 
493  virtual std::list<DtScriptVrfObject> getAllHostileContacts(void);
494 
498  virtual std::list<DtScriptVrfObject> getAllContacts(void);
499 
503  virtual int targetPriority(const DtScriptVrfObject & otherEntity);
504 
506  virtual DtScriptVrfObject userTarget();
507 
510  virtual bool registerDetonationInterest(double range,
511  const std::string& munitionType);
512 
514  virtual void setOperationInProgress(int, bool b);
515 
518  virtual bool registerFireInterest(double range,
519  const std::string& munitionType);
520 
525  virtual bool getLastDetonation(std::string& munitionType, DtLocation3D& location);
526 
528  virtual void clearLastDetonation();
529 
535  virtual bool getLastDetonationInformation(DtScriptDetonation& detonation);
536 
541  virtual bool getLastFire(std::string& munitionType, DtLocation3D& location);
542 
545  virtual void setDestroyed(bool destroyed);
546 
548  virtual std::string getRulesOfEngagement();
549 
551  virtual void setRulesOfEngagement(const std::string& rule);
552 
554  virtual bool isTargetAllowedByRulesOfEngagement(const DtScriptVrfObject& targetObj);
555 
557  virtual bool isInSectorOfResponsibility(const DtScriptVrfObject& targetObj);
558 
560  virtual std::list<std::string> embeddedEntityNames();
561 
564  virtual std::list<std::string> embeddedEntitiesOfType(std::string typeString);
565 
568  virtual std::list<std::string> embeddedEntitiesCapableOf(std::string taskSetName);
569 
573  virtual DtScriptVrfObject simObjectByEmbeddedEntityName(std::string eeName);
574 
578  virtual std::string embeddedEntityStatus(std::string eeName);
579 
591  virtual double normalizedSensorSignature(const DtScriptVrfObject & targetEntity,
592  std::string domain);
593 
598  virtual void changeAttachment(const std::string& parentUUID );
599 
601  virtual void setExtendedData(const std::string& key, const std::string& val);
602 
604  virtual bool canFireAt(const DtLocation3D& location);
605 
607  virtual boost::shared_ptr<DtScriptComponentSystem> lookupSystem(const std::string& systemName);
608 
610  virtual std::list<std::string> getSystemNames();
611 
614  virtual std::string getSystemCategory(const std::string& systemName);
615 
617  virtual bool isCapableOfTask(std::string taskName);
618 
621 
624 
626  virtual bool isEmbarked() const;
627 
629  virtual DtScriptVrfObject getEmbarkedOn() const;
631 
634  virtual bool getNavigationEnabled() const;
636 
638  virtual void attachToParent(DtScriptVrfObject&) const;
639 
642  virtual void clearAssignedTransport() const;
643  virtual void setAssignedTransport(DtScriptVrfObject&) const;
645 
646 
650  virtual bool hasStateProperty(const std::string& propertyName);
651  virtual bool hasParameterProperty(const std::string& propertyName);
653 
655  virtual std::list<DtScriptVrfObject> getAllVrfSubordinates(bool isVrf) const;
656 
659 
660  virtual bool isValid() const;
661 
662 protected:
663 
666  static bool processDetonation(const DtDetonationContext& detonationContext, void* usr);
667  bool processDetonation(const DtDetonationContext& detonationContext);
669 
672  static bool processFire(const DtFireContext& fireContext, void* usr);
673  bool processFire(const DtFireContext& fireContext);
675 
676 protected:
679 
681  std::string myLastFireMunition;
682 
685 
687  std::map<std::string, DtScriptComponentSystem*> myScriptComponentSystems;
688 
690 };
691 
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:681
virtual bool isValid() const
DtPlatformSimObjectFacade myPlatformSimObjectFacade
Definition: scriptVrfObject.h:387
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:362
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:383
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:382
DtLocalObject * myLocalObject
Definition: scriptVrfObject.h:689
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:390
const DtSimulationServices * mySimulationServices
Definition: scriptVrfObject.h:381
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:94
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:402
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:687
DtScriptDetonation myLastDetonation
Store information from last detonation in here.
Definition: scriptVrfObject.h:678
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:371
DtAggregateSimObjectFacade * myAggregateSimObjectFacade
Convenience classes that can be used if the object is of the given type.
Definition: scriptVrfObject.h:386
DtLocation3D myLastFireLocation
The location of the last fire.
Definition: scriptVrfObject.h:684
DtRwUUID myUUID
Definition: scriptVrfObject.h:380
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 Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)