VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
objectSensor.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2005 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
8 
11 
12 #pragma once
13 
20 
24 class DtObjectSensorPSR;
29 class DtEntityType;
32 class DtVectorInputPort;
33 class DtInputPortGroup;
34 class DtStringInputPort;
35 class DtBooleanInputPort;
36 class DtIntegerInputPort;
38 class DtInterruptFlag;
39 
54 {
55 private:
58 
61  orig);
62 
64  const DtObjectSensor & operator=(const
65  DtObjectSensor & orig);
66 
67 public:
68 
70  {
71  DetectionLost = 0,
72  DetectionContinued = 1,
73  DetectionMissed = 2,
74  };
75 
78  {
81  {
82  psrContactListItem = nullptr;
83  changesMade = false;
84  isComplete = false;
85  }
88  DtListItem* psrContactListItem;
89  std::shared_ptr<DtLocalizedManagedObjectList> currentlyDetectableObjectList;
92  typedef std::set<DtUUID> TargetSet;
94  bool isComplete;
95 
96  };
97 
99 
102  DtObjectSensor(const DtString& name,
103  DtLocalObject* owner,
104  DtSimulationServices* simManager,
105  DtComponentDescriptor* desc = 0,
106  DtReaderWriterRegistry* parentRegistry = 0);
107 
109  virtual ~DtObjectSensor() override;
110 
115  virtual bool init() override;
116 
121  virtual bool postAddComponentsInit() override;
122 
125  virtual void preFirstTickInit() override;
126 
129  virtual const char* type() const override;
130 
139  virtual void tick() override;
140 
145  virtual bool tickWhileDestroyed() const override;
146 
150  virtual int sensorType() const;
151 
156  virtual void enable() override;
157  virtual void disable() override;
158  virtual void setIsEnabled(bool yesNo) override;
160 
166  virtual void setTypesToDetectForTask(const DtRwEntityTypeList& objectTypes);
167 
169  virtual void clearTypesToDetectForTask();
170 
172  virtual const DtRwEntityTypeList& typesToDetectForTask() const;
174 
183  static bool setTypesToDetectAttribute(void* ctrlr, DtReaderWriter* val);
184  virtual bool setTypesToDetectAttribute(DtReaderWriter* val);
186 
190  static bool clearTypesToDetect(void* ctrlr, DtReaderWriter* val);
191  virtual bool clearTypesToDetect(DtReaderWriter* val);
194 
201  static DtReaderWriter* getSensorPositionAttribute(void* ctrlr);
202  virtual DtReaderWriter* getSensorPositionAttribute();
203 
205  virtual void setSensorEnabled(bool enabled);
206 
208  virtual bool sensorEnabled() const;
209 
213  static DtSimComponent * creator(const DtString& name,
214  DtLocalObject* owner,
215  DtSimulationServices* simManager,
216  DtComponentDescriptor* desc = 0,
217  DtReaderWriterRegistry* parentRegistry = 0);
218 
221  static void printDiagnosticsCallback(const DtVrfObjectMessage* msg, void* usr);
222 
223 protected:
224 
226  virtual bool createPortGroups() override;
227 
229  virtual bool createPorts() override;
230 
236  virtual DtObjectSensorPSR* createPSR();
237 
241  virtual const char* defaultPSRType() const;
242 
246  virtual void initSensorRangeRing();
247 
254  virtual void updateDetectableObjectsList();
255 
259  virtual bool initSensorGeometry();
260 
264  virtual void setupGeometryForDetection();
265 
269  virtual DtVector localSensorPosition() const;
270 
274  virtual DtVector bodySensorPosition() const;
275 
279  virtual DtTaitBryan localSensorOrientation() const;
280 
284  virtual DtTaitBryan bodySensorOrientation() const;
285 
288  virtual DtUUID targetObject() const;
289 
292  virtual DtVector targetLocation() const;
293 
296  virtual DtSensorTrackingMode trackingMode() const;
297 
304  virtual void processObjects();
305 
306 
307  virtual void processObjectsSlice(const DtInterruptFlag& timer);
308 
317  virtual bool detectObject(DtSimObjectReference object,
318  DtRwSensorContactInfo* contactInfo);
319 
330  virtual ContinueDetectingResult continueDetectingObject(DtSimObjectReference object,
331  DtRwSensorContactInfo* contactInfo, bool& contactInfoModified);
332 
336  virtual bool objectWithinSensorGeometry(const DtSimObject* object) const;
337 
342  virtual bool sensorGeometryExtent(DtExtent& extent) const;
343 
346  virtual double rangeSquaredToObject(const DtSimObject* object) const;
347 
350  virtual double rangeToObject(const DtSimObject* object) const;
351 
353  virtual void clearObjectRangeCache() const;
354 
356  virtual void printTargets() const;
357 
360  virtual void updateDetectedObjectListPort();
361 
363  virtual bool createAndInitSensorMonitors();
364 
366  virtual bool objectInDetectableList(const DtSimObject*) const;
367 
370  static void hostilitiesChangedCallback(DtU8 force, void* usr);
371  virtual void processHostilitiesChanged(DtU8 force);
372 
377  virtual DtTaitBryan worldOrientationOfObject(const DtSimObject* object) const;
378 
381  virtual bool canDetectForceOfObject(const DtSimObject*);
382 
385  static void setSensorEnabledRequestCallback(DtSimMessage *msg, void * usrData);
386 
389  virtual void processSetSensorEnabledRequestMessage(DtSimMessage *msg);
390 
393  virtual void notifyContactsChanged();
394 
396  virtual void printDiagnostics(const DtVrfObjectMessage* msg);
397 
398 protected:
399 
401 
402  DtSensorContactListOutputPort * myDetectedObjectListPort;
409 
419 
420 
421 
426 
434 
444 
452 
460 
468 
476 
478 
481 
485 
487  std::vector<DtObjectSensorMonitor*> myMonitors;
489 
491  DtForceType myForceType;
492 
503 
506 
509 
510  std::shared_ptr<DtProcessObjectsState> myProcessObjectsState;
511 };
512 
double myMutableObjectRangeSquaredCache
The current range squared to the cached object, if calculated.
Definition: objectSensor.h:502
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtOrientationInputPort * myOrientationInputPort
Input Port Name: orientation Input Port Description: Specifies the orientation of the sensor relative...
Definition: objectSensor.h:433
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
virtual bool postAddComponentsInit()
Called after all components have been created, initialized and added to the component manager...
Definition: simComponent.h:126
std::vector< DtObjectSensorMonitor * > myMonitors
Sends out sensor contact information to listening applications, usually the GUI.
Definition: objectSensor.h:487
Contains the DtCompositePredicate class declaration.
Definition: compositePredicate.h:23
DtInputPortGroup * mySensorOffsetInputPortGroup
Input Port Group Name: sensor-offset Input Port Group Description: Allows an external controller to p...
Definition: objectSensor.h:425
bool myMutableObjectRangeCalculated
Keeps track of whether the range has been calculated for the current cached object.
Definition: objectSensor.h:496
Description: DtNLengthIntegerVector is a named, readable/writable vector of integers of arbitrary len...
Definition: nLengthIntegerVector.h:28
std::shared_ptr< DtProcessObjectsState > myProcessObjectsState
Definition: objectSensor.h:510
bool changesMade
Definition: objectSensor.h:91
DtStringInputPort * myTargetObjectInputPort
Input Port Name: target-object Input Port Description: Specifies the name of the object be targeted b...
Definition: objectSensor.h:451
virtual void setIsEnabled(bool yesNo)
Is this component enabled or not. If enabled, component&#39;s tick function will be called, otherwise it will not. Default is true (enabled).
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
Definition: sensorContactListIOPort.h:71
Filters the contents of a DtManagedObjectList using a spatial organization to generate a list of only...
Definition: localizedManagedObjectList.h:23
class DtRwEntityTypeList:
Definition: rwEntityTypeList.h:23
Contains class declarations for DtStringInputPort, DtStringOutputPort, and DtStringPortData.
Definition: stringIOPort.h:27
Definition: readerWriter.h:85
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
DtObjectSensorDescriptor; descriptor for the DtObjectSensor component.
Definition: objectSensorDescriptor.h:27
bool myMutableObjectRangeSquaredCalculated
Keeps track of whether the range squared has been calculated for the current cached object...
Definition: objectSensor.h:500
std::shared_ptr< const DtManagedObjectList > DtManagedObjectListConstPtr
Typedef for a shared pointer to a const DtOrgViewManagedObjectList. These lists are used within VR-Fo...
Definition: managedObjectList.h:35
Definition: readerWriterRegistry.h:39
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
This class represents the data gathered by a sensor about a particular single sensor contact...
Definition: rwSensorContactInfo.h:68
virtual void disable()
Is this component enabled or not. If enabled, component&#39;s tick function will be called, otherwise it will not. Default is true (enabled).
Contains class declarations for DtIntegerInputPort, DtIntegerOutputPort, and DtIntegerPortData.
Definition: integerIOPort.h:25
DtManagedObjectList::const_iterator nextDetectableObject
Definition: objectSensor.h:90
virtual bool init()
Calls createPorts and createPortGroups Initializes myLastTickSimTime.
Contains class declarations for DtVectorInputPort, DtVectorOutputPort, and DtVectorPortData.
Definition: vectorIOPort.h:27
DtPlatformLocalObjectFacade myPlatformLocalObjectFacade
Definition: objectSensor.h:508
Holds the interal state for the processObjectsSlice()
Definition: objectSensor.h:77
std::shared_ptr< DtLocalizedManagedObjectList > currentlyDetectableObjectList
Definition: objectSensor.h:89
DtObjectSensor is a base level sensor component.
Definition: objectSensor.h:53
DtManagedObjectListConstPtr myDetectableObjectList
Definition: objectSensor.h:479
Interface for a customizable interrupt flag that can be passed into a function to allow the calling c...
Definition: interruptFlag.h:9
virtual void enable()
Is this component enabled or not. If enabled, component&#39;s tick function will be called, otherwise it will not. Default is true (enabled).
File: simMsg.h.
Definition: simMessage.h:35
DtSensorTrackingMode
Definition: sensorFieldOfViewEnums.h:9
virtual void tick()
This gives the thread of control to the component. The component is ticked once each simulation from ...
An abstract base class for all evaluators of spatial filters. The evaluation of spatial filters is sp...
Definition: spatialFilterEvaluator.h:31
DtEntityTypesListMultiInputPort * myObjectsToDetectInputPort
Inputs: DtEntityTypesListMultiInputPort : object-types-to-detect Input Port Name: object-types-to-...
Definition: objectSensor.h:418
Contains class declarations for DtBooleanInputPort, DtBooleanOutputPort, and DtBooleanPortData.
Definition: boolIOPort.h:25
virtual bool tickWhileDestroyed() const
If the component returns true here, it will be ticked regardless of the destroyed state of the host e...
A multi-connection input port whose data members are entity lists.
Definition: objectTypesListMultiInputPort.h:19
DtListItem * psrContactListItem
The next item in the PSR contact info list to be processed for continueDectectingObject().
Definition: objectSensor.h:88
DtForceType myForceType
The force type the last time the detectable object list was updated.
Definition: objectSensor.h:491
DtSimComponent & operator=(const DtSimComponent &orig)
assignment operator, not implemented
The base class for all messages to/from a specific DtVrfObject. Various subclasses of this class will...
Definition: vrfObjectMessage.h:30
DtSpatialFilterEvaluator * mySensorGeometryEvaluator
Definition: objectSensor.h:488
DtVectorInputPort * myTargetLocationInputPort
Input Port Name: target-location Input Port Description: Specifies the location to be targeted by thi...
Definition: objectSensor.h:459
virtual bool createPorts()
Called by init. Derived classes should override this method to create all their input/output ports an...
DtObjectSensorPSR * myProcessState
Container for state data associated with this component. This state is saved and restored as part of ...
Definition: objectSensor.h:484
ContinueDetectingResult
Definition: objectSensor.h:69
virtual bool createPortGroups()
Called by init. Derived classes should override this method to create all their input/output port gro...
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
std::set< DtSimObjectReference >::const_iterator const_iterator
Definition: managedObjectList.h:101
DtProcessObjectsState()
Make sure new instances of state have variables initialized.
Definition: objectSensor.h:80
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:80
double myMutableObjectRangeCache
The current range to the cached object, if calculated.
Definition: objectSensor.h:498
DtBooleanInputPort * myTargetAcquiredInputPort
Input Port Name: target-acquired Input Port Description: Specifies whether the sensor was able to acq...
Definition: objectSensor.h:475
Contains the DtSimComponent class declaration.
const DtObjectSensorDescriptor * myObjectSensorDescriptor
Definition: objectSensor.h:480
Input and output ports containing a DtTaitBryan.
Definition: orientationIOPort.h:26
std::set< DtUUID > TargetSet
Definition: objectSensor.h:92
DtVectorInputPort * myPositionInputPort
Input Port Name: position Input Port Description: Specifies the position of the sensor in body coordi...
Definition: objectSensor.h:443
DtInputPortGroup is a data port group of a data consumer. It may contain any number of DtInputPorts a...
Definition: inputPortGroup.h:35
Class which manages the sending of sensor contact information to the GUI from one particular sensor o...
Definition: objectSensorMonitor.h:26
bool myPrep_invokeNewContactCallbacks
Definition: objectSensor.h:507
bool myGeometrySetup
Whether setupGeometryForDetection() has been called yet.
Definition: objectSensor.h:505
const DtSimObject * myMutableObjectCached
The VrfObject whose range is currently cached.
Definition: objectSensor.h:494
TargetSet checkedTargets
Definition: objectSensor.h:93
DtIntegerInputPort * myTrackingModeInputPort
Input Port Name: tracking-mode Input Port Description: Specifies the tracking mode of the sensor...
Definition: objectSensor.h:467
bool isComplete
Definition: objectSensor.h:94
virtual const char * type() const =0
Returns a string identifies the class type of component. Type values are defined in compTypes...
Definition: objectSensorPSR.h:23
A locally simulated VRF object.
Definition: localObject.h:98

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)