VR-Forces 5.0.2 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 
12 
13 #include "vrfobjcore/simObject.h"
14 #include <vrfutil/rwUUID.h>
15 #include <vrfutil/scriptGeometry.h>
16 #include <string>
18 #include <vrfutil/objectCounter.h>
19 #include <stdexcept>
20 #include <vrfutil/rwUUID.h>
21 #include <tbb/spin_rw_mutex.h>
22 
24 class DtFireContext;
27 class DtLocalObject;
28 
30  : public DtAsciiSerializable
31 #ifdef DtObjectDebugger_Enable
32  , public DtObjectDebugger<DtScriptVrfObject>
33 #endif
34 {
35 public:
36  DtScriptVrfObject(const DtSimulationServices*, const DtUUID& name);
39 
45 
46  DtScriptVrfObject& operator=(const DtScriptVrfObject &orig);
47 
49 
50  bool operator==(const DtScriptVrfObject& orig);
51 
54 
57  virtual DtLocation3D getLocation3D() const;
58  virtual DtLocation3D getLocation3dAllSubordinates(bool bIncludeDestroyedSubordinates) const;
59 
61  virtual double getSpeed() const;
62 
64  virtual std::string getUUID() const;
65 
72  virtual DtVector3D getDirection3D() const;
73 
76  virtual DtVector3D getVelocity3D() const;
78 
80  virtual std::list<std::string> getFormationNames();
81 
83  virtual std::list<int> getFormationPromotionOrder(const std::string& formationName);
84 
86  virtual std::list<std::string> formationSubFormations(
87  const std::string& formationName);
88 
91  virtual double getHeightAboveTerrain(bool& available) const;
92 
97  virtual bool hasLosToObject(const DtScriptVrfObject &target,
98  bool & dataAvailable) const;
99 
107  virtual bool isPointInside(const DtLocation3D &point) const;
108 
110  virtual bool independentlyTasked() const;
111 
116  virtual bool hasLosToLocation(DtLocation3D &targetLoc,
117  bool &dataAvailable) const;
118 
120  virtual std::string getEntityType() const;
121 
124  virtual bool isAggregate() const;
125 
128  virtual bool isPseudoAggregate() const;
129 
132  virtual std::string getEchelonLevel() const;
133 
135  virtual std::string getForceType() const;
136 
138  virtual int getForceEnumeration() const;
139 
145  virtual std::string getDamageState() const;
146 
148  virtual unsigned getLifeformPosture() const;
149 
151  virtual unsigned getAppearance() const;
152 
154  virtual bool isDestroyed() const;
155 
157  virtual bool isFirePowerKilled() const;
158 
160  virtual bool isMobilityKilled() const;
161 
163  virtual bool isSensorKilled() const;
164 
166  virtual bool isInvisible() const;
167 
169  virtual bool isEmbarked() const;
170 
173  virtual bool isOnTopOf(DtScriptVrfObject&) const;
174  virtual bool isOnTopOfWithDistance(DtScriptVrfObject&, double) const;
175 
177  virtual DtScriptVrfObject getEmbarkedOn() const;
178 
179  virtual std::list<DtScriptVrfObject> getEmbarkedObjects(void)const;
180 
181  virtual DtVectorOffset3D getOffsetFromParent() const;
182 
183  virtual DtVectorOffset3D getOffsetOfLocation(const DtLocation3D& location) const;
184 
186  virtual std::list<DtScriptVrfObject> getSubordinates(void) const;
187 
189  virtual std::list<DtScriptVrfObject> getVrfSubordinates(bool isVrf) const;
190 
192  virtual DtScriptVrfObject getSuperior() const;
193 
195  virtual double recalculatePhysicalFootprintFromSubordinates(const std::list<DtScriptVrfObject>&) const;
196 
200  virtual DtVectorOffset3D getPartParentPosition(int) const;
201  virtual DtLocation3D getPartWorldPosition(int) const;
202  virtual double getPartPitch(int) const;
203  virtual double getPartPitchIncludingParent(int, bool includeParent = false) const;
204  virtual double getPartHeading(int) const;
205  virtual double getPartHeadingIncludingParent(int, bool includeParent = false) const;
206  virtual double getPartTranslationForward(int) const;
207  virtual double getPartTranslationRight(int) const;
208  virtual double getPartTranslationUp(int) const;
210 
214  virtual std::list<DtScriptVrfObject> getAllSubordinates(void) const;
215 
216  virtual std::list<DtScriptVrfObject> getAllVrfSubordinates(bool isVrf) const;
217 
218  virtual std::list<DtScriptVrfObject> getCapableSubordinates(void) const;
219  virtual std::list<DtScriptVrfObject> getCapableVrfSubordinates(bool isVrf) const;
220 
222  virtual bool isVrfSimulated() const;
223 
224  virtual std::list<DtLocation3D> getLocations3D(void)const;
225 
226  virtual std::string getName() const;
227  virtual std::string getLabel() const;
228  virtual std::string getExtendedLabel(int) const;
229 
230  virtual int getAirTurbulence() const;
231 
232  virtual std::string getGlobalId() const;
233  virtual std::string getObjectId() const;
234 
235  virtual double getHeading() const;
236  virtual double getPitch() const;
237  virtual double getRoll() const;
238 
239  virtual double getDraft() const;
240 
242  void terrainSurfaceDebug();
243 
245  void deleteObject();
246 
248  bool isDeleted() const;
249  virtual bool isValid() const;
250 
252  virtual bool isLocal() const;
253 
257  virtual DtVectorOffset3D getBoundingVolume(DtVectorOffset3D& offset) const;
258 
260  virtual DtVectorOffset3D getBoundingVolumeAllSubordinates(bool bIncludeDestroyedSubordinates, DtVectorOffset3D& offset) const;
261 
264  virtual std::string getNbcDamage(int& dmgPerSec, int& moppLvl) const;
265 
267  virtual std::string getNbcAgent() const;
268 
270  virtual bool isBreached() const;
271 
273  virtual std::string getExtendedData(const std::string& key) const;
274 
277  virtual DtLocation3D getClosestPointToLocation2D(const DtLocation3D& location,
278  double& distance) const;
279 
283  virtual DtLocation3D getIntersectionPointWithLine2D(const DtLocation3D& point1,
284  const DtLocation3D& point2, bool& hasIntersection) const;
285 
287  virtual bool isActive() const;
288 
294  virtual bool hasStateProperty(const std::string& propertyName);
295  virtual bool hasParameterProperty(const std::string& propertyName);
297 
299  virtual std::string getDiGuyHandItem() const;
300 
302 
303  //\return True if the specified DI-Guy animation name is available for this object.
304  virtual bool isAnimationAvailable(const std::string& animationName) const;
305 
306  //\return True if the specified DI-Guy appearance name is available for this object.
307  virtual bool isAppearanceAvailable(const std::string& appearanceName) const;
308 
309  //\return True if the specified DI-Guy hand item name is available for this object.
310  virtual bool isHandItemAvailable(const std::string& handItemName) const;
311 
312  //\return True if the specified DI-Guy head name is available for this object.
313  virtual bool isHeadAvailable(const std::string& headName) const;
314 
315  //\return True if the specified DI-Guy gesture name is available for this object.
316  virtual bool isGestureAvailable(const std::string& gestureName) const;
317 
318  //\return The time of animation to run (in seconds). If not available will return 0
319  virtual double animationDuration(const std::string& animationName) const;
320 
321  //\return The speed of animation. If not available will return 0
322  virtual double animationSpeed(const std::string& animationName) const;
323 
324  //\return The duration of the transition motion from the first animation to the second,
326  virtual double getAnimationTransitionInfo(const std::string& fromAnimation, const std::string& toAnimation,
327  DtVectorOffset3D& deltaPos, double& deltaHeading) const;
328 
330 
332  virtual void setSimulationServices(const DtSimulationServices* simManager);
333 
334  virtual DtString objectType() const;
335 
338 
341  virtual bool deserialize(const DtString& data);
342 
344  static DtAsciiSerializable* creator();
345 
348  DtSimObjectReference vrfObject() const { return mySimObjectReference; }
349 
351  void testValid() const;
352 
354  bool testAggregateSimObjectValid() const;
355 
358  {
359  return DtScriptVrfObject(0, DtUUID::nullUUID());
360  }
361 
363  const DtSimulationServices* simulationServices() const;
364 
365 protected:
370 
374 };
375 
377 
378 DT_DLL_vrfobjcore std::ostream& operator<<(std::ostream&, const DtScriptVrfObject&);
379 
386  : public DtScriptVrfObject
387 #ifdef DtObjectDebugger_Enable
388  , public DtObjectDebugger<DtScriptOwnshipObject>
389 #endif
390 {
391 public:
392  DtScriptOwnshipObject(DtLocalObject* const localObject);
395 
398 
399  void setLocation3D(const DtLocation3D &newloc);
400  void setHeading(const double heading);
401  void setPitch(const double heading);
402 
403  virtual void setLabel(const std::string&);
404  virtual void setExtendedLabel(int, const std::string&);
405  virtual void setNavigationEnabled(bool);
406 
408  DtLocalObject* ownshipObject();
409  const DtLocalObject* ownshipObject() const;
410 
411  virtual std::list<std::string> getResourceNames(void)const;
412 
420  virtual double getResourceAmounts(const std::string& resourceName, double* fullAmount) const;
421 
423  virtual void depleteResource(const std::string& resourceName, double amount);
424 
426  virtual void replenishResource(const std::string& resourceName, double amount);
427 
429  virtual int getNotifyLevel() const;
430 
432  virtual std::string getCurrentFormationName();
433 
435  virtual DtVectorOffset3D getFormationExtent();
436 
439  virtual std::string getMunitionType(const std::string& resourceName);
440 
444  virtual bool addResource(const std::string& resourceType, const std::string& resourceName,
445  double currentAmount, double fullAmount);
446 
449  virtual void updateStateAndParameterProperties();
450 
452  virtual void removeResource(const std::string& resourceName);
453 
455  virtual double getOrderedSpeed() const;
456 
458  virtual bool isUnderFire() const;
459 
463  virtual int suppressionLevel() const;
464 
466  virtual std::string nonLethalDamageEffect() const;
467 
470  virtual std::list<DtScriptVrfObject> getObservedHostileContacts(void);
471 
476  virtual std::list<DtScriptVrfObject> getAllHostileContacts(void);
477 
481  virtual std::list<DtScriptVrfObject> getAllContacts(void);
482 
486  virtual int targetPriority(const DtScriptVrfObject & otherEntity);
487 
490  virtual bool registerDetonationInterest(double range,
491  const std::string& munitionType);
492 
495  virtual bool registerFireInterest(double range,
496  const std::string& munitionType);
497 
502  virtual bool getLastDetonation(std::string& munitionType, DtLocation3D& location);
503 
508  virtual bool getLastFire(std::string& munitionType, DtLocation3D& location);
509 
512  virtual void setDestroyed(bool destroyed);
513 
515  virtual std::string getRulesOfEngagement();
516 
518  virtual void setRulesOfEngagement(const std::string& rule);
519 
521  virtual std::list<std::string> embeddedEntityNames();
522 
525  virtual std::list<std::string> embeddedEntitiesOfType(std::string typeString);
526 
529  virtual std::list<std::string> embeddedEntitiesCapableOf(std::string taskSetName);
530 
534  virtual DtScriptVrfObject simObjectByEmbeddedEntityName(std::string eeName);
535 
539  virtual std::string embeddedEntityStatus(std::string eeName);
540 
552  virtual double normalizedSensorSignature(const DtScriptVrfObject & targetEntity,
553  std::string domain);
554 
559  virtual void changeAttachment(const std::string& parentUUID );
560 
562  virtual void setExtendedData(const std::string& key, const std::string& val);
563 
565  virtual bool canFireAt(const DtLocation3D& location);
566 
568  virtual boost::shared_ptr<DtScriptComponentSystem> lookupSystem(const std::string& systemName);
569 
571  virtual std::list<std::string> getSystemNames();
572 
575  virtual std::string getSystemCategory(const std::string& systemName);
576 
579 
582 
584  virtual bool isEmbarked() const;
585 
587  virtual DtScriptVrfObject getEmbarkedOn() const;
589 
592  virtual bool getNavigationEnabled() const;
594 
596  virtual void attachToParent(DtScriptVrfObject&) const;
597 
600  virtual void clearAssignedTransport() const;
601  virtual DtScriptVrfObject getAssignedTransport();
602  virtual void setAssignedTransport(DtScriptVrfObject&) const;
604 
605 
609  virtual bool hasStateProperty(const std::string& propertyName);
610  virtual bool hasParameterProperty(const std::string& propertyName);
612 
614  virtual std::list<DtScriptVrfObject> getAllVrfSubordinates(bool isVrf) const;
615 
618 
619  virtual bool isValid() const;
620 
621 protected:
622 
625  static bool processDetonation(const DtDetonationContext& detonationContext, void* usr);
626  bool processDetonation(const DtDetonationContext& detonationContext);
628 
631  static bool processFire(const DtFireContext& fireContext, void* usr);
632  bool processFire(const DtFireContext& fireContext);
634 
635 protected:
638 
641 
643  std::string myLastFireMunition;
644 
647 
649  std::map<std::string, DtScriptComponentSystem*> myScriptComponentSystems;
650 
652 };
653 
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
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:643
virtual bool isValid() const
DtPlatformSimObjectFacade myPlatformSimObjectFacade
Definition: scriptVrfObject.h:373
std::string myLastDetonationMunition
The munition type of the last detonation.
Definition: scriptVrfObject.h:637
Definition: asciiSerializable.h:34
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: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.
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:369
Description: Readable, Writable uuid string. Use this class in order to convert from object marking t...
Definition: rwUUID.h:431
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...
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:368
DtLocalObject * myLocalObject
Definition: scriptVrfObject.h:651
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
const DtSimulationServices * mySimulationServices
Definition: scriptVrfObject.h:367
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:90
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:385
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:649
virtual std::list< DtScriptVrfObject > getAllVrfSubordinates(bool isVrf) const
static DtScriptVrfObject nullObject()
Returns a null object.
Definition: scriptVrfObject.h:357
DtAggregateSimObjectFacade * myAggregateSimObjectFacade
Convenience classes that can be used if the object is of the given type.
Definition: scriptVrfObject.h:372
DtLocation3D myLastFireLocation
The location of the last fire.
Definition: scriptVrfObject.h:646
DtRwUUID myUUID
Definition: scriptVrfObject.h:366
DtLocation3D myLastDetonationLocation
The location of the last detonation.
Definition: scriptVrfObject.h:640
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
DtSimObjectReference vrfObject() const
For use by C++ side methods. Call testValid() to try and fill in object pointer (if does not exist) o...
Definition: scriptVrfObject.h:348
Definition: scriptVrfObject.h:29
A location3D is a point in space, i.e. a geocentric coordinate.
Definition: scriptGeometry.h:22

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)