23 #include "vlpi/entityIdentifier.h"
24 #include <boost/signals2.hpp>
25 #include <matrix/vlVector.h>
28 #include <vlpi/appearance.h>
29 #include <vlpi/disEnums.h>
30 #include <matrix/vlDcm.h>
31 #include <matrix/vlTaitBryan.h>
32 #include <matrix/3dBoundingVolume.h>
35 #include <tbb/spin_rw_mutex.h>
43 class DtIffStateComponent;
44 class DtLaserDesignatorStateComponent;
45 class DtExternalCurrentFrameState;
106 const DtUUID& uuid()
const;
108 DtEntityType entityType()
const;
112 bool isBackgroundEntity()
const;
116 Dt3dBoundingVolume boundingVolume()
const;
117 DtVector localBoundingVolumeCenterPosition()
const;
122 void expandExtent(
DtExtent& extent)
const;
126 std::vector<const makVrf::DtLaserDesignatorStateComponent*> laserDesignatorStateComponents()
const;
129 template <
typename T_Component>
132 return myExternalCurrentFrameState->getStateComponent<T_Component>();
135 template <
typename T_Component>
138 return myExternalCurrentFrameState->getStateComponentList<T_Component>();
141 template <
typename T_Component>
144 return myExternalCurrentFrameState->hasStateComponent<T_Component>();
154 const DtVector& worldPosition()
const;
155 const DtVector&localPosition()
const;
156 const DtVector&parentPosition()
const;
157 double distSquaredTo(
const DtVector&)
const;
160 bool hasLocationChanged()
const;
164 bool objectVerticesChanged()
const;
168 bool worldVerticesChanged()
const;
171 bool haveVerticesChanged()
const;
173 virtual void frameAdvanced();
174 virtual void firstFrameAdvance();
177 const DtTaitBryan& topographicOrientation()
const;
178 const DtTaitBryan& worldOrientation()
const;
179 const DtTaitBryan& localOrientation()
const;
180 const DtTaitBryan& parentOrientation()
const;
181 const DtTaitBryan& localOrientationWrtDatabase()
const;
182 const DtDcm& localOrientationMatrix()
const;
183 const DtDcm& parentOrientationMatrix()
const;
184 const DtDcm& worldOrientationMatrix()
const;
185 double heading()
const;
186 double pitch()
const;
191 virtual bool isLocal()
const;
194 DtForceType forceType()
const;
197 const DtEntityIdentifier& entityId()
const;
204 bool isDestroyed()
const;
205 int damageState()
const;
223 bool isEntityOrUnit()
const;
227 bool isEntity()
const;
231 bool isEmbarked()
const;
234 DtUUID embarkedOn()
const;
236 bool isEmbarkedOn(
const DtUUID&)
const;
241 bool isValid()
const;
243 int sessionId()
const;
244 bool isVrfSimulatedObject()
const;
249 bool isOnTopOf(
const DtSimObject* o,
double d)
const;
254 bool isDeleted()
const;
260 virtual void makeInvalid();
264 return mySimulationServices;
279 double totalMass()
const;
301 DtTaitBryan orientationRelativeTo(
const DtTaitBryan&,
const DtSimObject* relativeTo)
const;
308 double distanceToLocalVector(
const DtVector&)
const;
314 unsigned long long legionGlobalId()
const;
325 return myAdvancedFrame;
329 DtUUID superiorUUID()
const;
334 bool isTopLevel()
const;
355 mutable boost::signals2::signal<void (const DtUUID& oldUUID, const DtUUID& newUUID)>
signal_uuidChanged;
358 mutable boost::signals2::signal<void (const DtSimObject*, const DtString& oldName, const DtString& newName)>
signal_objectRenamed;
361 mutable boost::signals2::signal<void (const DtSimObject*, const DtUUID& oldSuperior, const DtUUID& newSuperior)>
signal_superiorChanged;
373 virtual void clearDecorators();
382 if (myCurrentFrameSimulatedObjectStateComponent)
384 return myCurrentFrameSimulatedObjectStateComponent;
386 else if (!myCachedComponents && hasStateComponent<makVrf::DtSimulatedObjectStateComponent>())
388 return getStateComponent<makVrf::DtSimulatedObjectStateComponent>();
398 if (myCurrentFrameLocationStateComponent)
400 return myCurrentFrameLocationStateComponent;
402 else if (!myCachedComponents && hasStateComponent<makVrf::DtLocationStateComponent>())
404 return getStateComponent<makVrf::DtLocationStateComponent>();
414 if (myCurrentFrameVrfGeometryStateComponent)
416 return myCurrentFrameVrfGeometryStateComponent;
418 else if (!myCachedComponents && hasStateComponent<makVrf::DtVrfGeometryStateComponent>())
420 return getStateComponent<makVrf::DtVrfGeometryStateComponent>();
430 return myCurrentFrameEntityStateComponent;
435 if (myCurrentFrameVrfStateComponent)
437 return myCurrentFrameVrfStateComponent;
439 else if (!myCachedComponents && hasStateComponent<makVrf::DtVrfStateComponent>())
441 return getStateComponent<makVrf::DtVrfStateComponent>();
450 void cacheComponents();
451 void clearCachedComponents();
454 virtual void setupVrfObjectParameters();
455 virtual void setUUID(
const DtUUID&);
456 bool checkAndConnectForVrfStateComponent();
461 void attachmentsChanged();
462 virtual void completeSetup();
463 void extendedDataUpdated();
464 void superiorChanged();
466 virtual void hostChanged(
const DtUUID& oldHost,
const DtUUID& newHost);
469 virtual void usingParameterSource(
const DtString&);
470 virtual void externalFrameStateToBeDestroyed();
476 void resetUUID(
const DtUUID&);
610 #include "simObject.inl"
const makVrf::DtSimulatedObjectStateComponent * myCurrentFrameSimulatedObjectStateComponent
Definition: simObject.h:549
UUID is a unique ID wrapper class.
Definition: rwUUID.h:226
bool hasStateComponent() const
Definition: simObject.h:142
Instances of DtVrfObjectParameters are the readable/writeable objects that contain the information ne...
Definition: vrfObjectParameters.h:63
const makVrf::DtVrfStateComponent * currentFrameVrfStateComponent() const
Definition: simObject.h:433
const DtEntityIdentifier & objectIdentifier() const
Definition: simObject.h:198
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
const makVrf::DtVrfStateComponent * myCurrentFrameVrfStateComponent
Definition: simObject.h:550
Definition: attachedTerrain.h:45
Objects may contain a collection of other objects, such as overlays or pseudo-aggregate entities...
Definition: subordinateManager.h:43
std::map< std::string, DtSimObjectDecorator * > SimObjectDecorators
Decorator members.
Definition: simObject.h:484
DtSimObjectReference mySuperior
Superior.
Definition: simObject.h:535
DtString myObjectName
This is for debug purposes only. It will get set when the bounding volume is checked (and locked) and...
Definition: simObject.h:527
std::vector< const T_Component * > getStateComponentList() const
Definition: simObject.h:136
Definition: symbolString.h:20
const DtSimulationServices * mySimulationServices
Definition: simObject.h:479
DtVrfSimulatedSimObjectFacade * myVrfSimulatedSimObjectFacade
Definition: simObject.h:558
If you use a list of object names to archive which objects are part of a controller (or any object) u...
Definition: simObjectReferenceList.h:115
The DtLocationStateComponent interface contains the interface that all DtLocationStateComponents can ...
Definition: locationStateComponent.h:25
DtUUID myUUID
Once assigned, the UUID of this object. This will be valid even after the object is deleted...
Definition: simObject.h:516
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: entityStateComponent.h:70
bool myIsDeleted
Definition: simObject.h:524
DtSimObjectReference mySimObjectReference
Back pointer to this objects reference.
Definition: simObject.h:539
The DtSimulatedObjectStateComponent is an interface that all main components (those that are consider...
Definition: simulatedObjectStateComponent.h:21
const makVrf::DtExternalCurrentFrameState * myExternalCurrentFrameState
Definition: simObject.h:480
tbb::spin_rw_mutex myExternalCurrentFrameStateMutex
Definition: simObject.h:545
tbb::spin_rw_mutex mySimObjectReferenceMutex
Definition: simObject.h:540
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)
VRF4API_METHOD bool operator==(const DtSimObject *rhs) const
This is the deprecated API that can be used as a reference to migrate 4.X code to 5...
Definition: simObject.h:569
Contains the DtUUID class declaration.
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
unsigned long long myLegionGlobalId
Definition: simObject.h:517
boost::signals2::signal< void(const DtSimObject *, const DtString &)> signal_discoveredReference
Signal sent if this was awaiting for the base data to show up, and, it has.
Definition: simObject.h:352
boost::signals2::signal< void()> signal_firstFrameAdvance
Signal when the frame is advanced for the first time.
Definition: simObject.h:367
Description: This repository is an internal repository accessible only by local objects. It holds all information that is common to all the forms of all entity/aggregate/control objects within VR-Forces.
Definition: vrfObjectStateRepository.h:90
ExtentInformation myExtentInformation
Definition: simObject.h:509
bool advancedFrame() const
Will be true if this object has advanced at least one frame.
Definition: simObject.h:323
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: vrfGeometryStateComponent.h:54
bool myCachedComponents
Definition: simObject.h:555
Definition: objectType.h:27
const DtSimulationServices * simulationServices() const
Definition: simObject.h:262
DtAggregateSimObjectFacade * myAggregateSimObjectFacade
Definition: simObject.h:556
boost::signals2::signal< void(const DtSimObject *, const DtString &oldName, const DtString &newName)> signal_objectRenamed
Signal sent when the uuid of this object has changed. Sent during a frame advance.
Definition: simObject.h:358
const DtVrfObjectParameters * parameters() const
VR-Forces parameters.
Definition: simObject.h:268
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: vrfStateComponent.h:55
This class represents the console for an individual object. It owns a set of streams for various noti...
Definition: objectConsole.h:49
The DtPhysicalWorld is the primary interface to and manager of all of the "physical" aspects of the s...
Definition: physicalWorld.h:102
Definition: coordSystem.h:54
boost::signals2::signal< void(const DtUUID &oldUUID, const DtUUID &newUUID)> signal_uuidChanged
Signal sent when the uuid of this object has changed. Sent during a frame advance.
Definition: simObject.h:355
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
const makVrf::DtEntityStateComponent * currentFrameEntityStateComponent() const
Definition: simObject.h:428
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DtVrfObjectParameters * myDuplicateParameters
Definition: simObject.h:522
class DtVertexList:
Definition: vertexList.h:22
const DtVrfObjectParameters * myParameters
Referenced from the simulation services object database based on entity type.
Definition: simObject.h:520
DtObjectType myEntityType
Definition: simObject.h:528
boost::signals2::scoped_connection myDeletedConnection
Definition: simObject.h:489
DtString myAwaiting
If this object is awaiting for its reference to show up, this will be either a UUID or an entity id s...
Definition: simObject.h:513
bool operator!=(const DtUUID &rhs) const
Definition: simObject.h:102
boost::signals2::signal< void(const DtSimObject *)> signal_simObjectDeleted
Definition: simObject.h:349
boost::signals2::signal< void(const DtSimObject *)> signal_extendedDataUpdated
Signal sent out (during advance frame) when the extended data has been updated.
Definition: simObject.h:347
Definition: stateData.h:260
Definition: rangeItem.h:206
const DtUUID & uuid() const
@ Convenience accessors for various pieces of state Data
DtUUID myEmbarkedOn
Definition: simObject.h:547
This class maintains a rectangular bounding volume and an ordered list of vertices describing the phy...
Definition: vrfObjectGeometry.h:39
DtString awaiting() const
If awaiting, who awaiting for.
Definition: simObject.h:317
SimObjectDecorators mySimObjectDecorators
Decorator members.
Definition: simObject.h:485
const makVrf::DtLocationStateComponent * myCurrentFrameLocationStateComponent
Definition: simObject.h:552
Description: Readable, Writable DtReal (double)
Definition: rwReal.h:27
const makVrf::DtEntityStateComponent * myCurrentFrameEntityStateComponent
Definition: simObject.h:551
This is a convenience list that will add DtSimObjectReference objects and modify the list as objects ...
Definition: simObjectReferenceList.h:22
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:89
This class is the central access point for all current-frame state of all objects in the simulation i...
Definition: simObjectManager.h:42
const makVrf::DtVrfGeometryStateComponent * currentFrameVrfGeometryStateComponent() const
Definition: simObject.h:412
Represents a single simulation object in the exercise. Object may be VRF simulation, or non-VRF simulated, and may be simulated by the local sim engine, or by a remote sim engine. Only public (external) state of the object is available. All data is read-only. All access to data of the object is thread safe within the simulation frame.
Definition: simObject.h:79
Contains the declaration of the DtExtent class.
boost::signals2::signal< void()> signal_objectVerticesChanged
Signal sent when the user changes the vertices via a set command. If this is a remote object...
Definition: simObject.h:344
DtSimObjectReferenceList * myAttachments
Attachments.
Definition: simObject.h:531
bool operator==(const DtSimObject &rhs) const
Definition: simObject.h:100
Definition: decoratorBase.h:30
DtPlatformSimObjectFacade * myPlatformSimObjectFacade
Definition: simObject.h:557
boost::signals2::scoped_connection myAttachmentsChangedConnection
Definition: simObject.h:532
boost::signals2::scoped_connection myExtendedDataUpdatedConnection
Definition: simObject.h:493
boost::signals2::scoped_connection myAddedConnection
Definition: simObject.h:490
boost::signals2::signal< void(const DtSimObject *, const DtUUID &oldSuperior, const DtUUID &newSuperior)> signal_superiorChanged
Signal sent when superior has changed.
Definition: simObject.h:361
Definition: rwVrfKinematicState.h:25
Contains the DtSimObjectReference class declaration.
tbb::spin_rw_mutex mySimObjectDecoratorMutex
Decorator members.
Definition: simObject.h:486
bool isSimulatedObject() const
Definition: simObject.h:224
A list of properties. A DtPropertyInterface object that is a specialized version of DtRwVariableBindi...
Definition: rwProperties.h:126
const makVrf::DtLocationStateComponent * currentFrameLocationStateComponent() const
Definition: simObject.h:396
boost::signals2::scoped_connection myObjectNameChangedConnection
Definition: simObject.h:492
VRF4API_METHOD DtSimObjectReference sharedReference() const
This is the deprecated API that can be used as a reference to migrate 4.X code to 5...
Definition: simObject.h:574
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: iffStateComponent.h:428
boost::signals2::scoped_connection myUUIDChangedConnection
Definition: simObject.h:491
boost::signals2::scoped_connection mySuperiorChangedConnection
Definition: simObject.h:495
const makVrf::DtSimulatedObjectStateComponent * currentFrameSimulatedObjectStateComponent() const
Definition: simObject.h:380
class DtLocalVertexList:
Definition: localVertexList.h:20
#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
boost::signals2::scoped_connection myAdvancedFrameConnection
Definition: simObject.h:496
bool myAdvancedFrame
Definition: simObject.h:536
bool operator!=(const DtSimObject &rhs) const
Definition: simObject.h:103
boost::signals2::signal< void()> signal_advancedFrame
Signal sent when the state data signals that the frame has been advanced.
Definition: simObject.h:364
boost::signals2::scoped_connection myHostChangedConnection
Definition: simObject.h:543
Represents a feature geometry.
Definition: featureGeometry.h:39
DtAttachedTerrain * myTerrainAttachedTo
Definition: simObject.h:542
DtSimObject & operator=(const DtSimObject &rhs)
Definition: simObject.h:97
const T_Component * getStateComponent() const
General call to get any component that does not have a method.
Definition: simObject.h:130
boost::signals2::scoped_connection myFirstFrameAdvancedConnection
Definition: simObject.h:494
const makVrf::DtVrfGeometryStateComponent * myCurrentFrameVrfGeometryStateComponent
Definition: simObject.h:553