VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
lasingController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
13 #include "vrfobjcore/simObject.h"
14 
15 class DtString;
17 class DtSimMessage;
19 class DtLasingPSR;
21 class DtOutputPortGroup;
22 class DtBooleanInputPort;
23 class DtVectorInputPort;
24 class DtStringInputPort;
26 class DtSetTargetRequest;
29 class DtVrfObjectMessage;
30 
31 namespace makVrf
32 {
33  class DtLaserDesignatorStateComponent;
34 }
35 
41 {
42 protected:
45 
48  orig);
49 
51  const DtLasingController & operator=(const DtLasingController & orig);
52 
53 public:
54 
56  DtLasingController(const DtString& name,
57  DtLocalObject* owner,
58  DtSimulationServices* simManager,
59  DtComponentDescriptor* desc = 0,
60  DtReaderWriterRegistry* parentRegistry = 0);
61 
63  virtual ~DtLasingController();
64 
65  //Initializes the laser controller
66  virtual bool init();
67 
70  virtual const char* type() const;
71 
76  virtual void preFirstTickInit();
77 
85  virtual void tick();
86 
88  virtual void setDesignatorCode(const int code);
89  virtual const int designatorCode() const;
90 
91  virtual void clearTask();
92 
96  virtual bool createProcessSR();
97 
99  virtual void startLasing();
100  virtual void stopLasing();
101 
104  virtual void laseTarget(DtSimObjectReference targetObject);
105 
108  virtual void laseLocation(const DtVector& location);
109 
111  virtual bool lasing();
112 
113  //static creator
114  static DtSimComponent * creator(const DtString& name,
115  DtLocalObject* owner,
116  DtSimulationServices* simManager,
117  DtComponentDescriptor* desc = 0,
118  DtReaderWriterRegistry* parentRegistry = 0);
119 
121  virtual void registerTaskMsgCallbacks();
122  virtual void registerSetLaseAutonomousMsgCallbacks();
123  virtual void registerSetLaserCodeRequestMsgCallbacks();
124  virtual void registerSetLaserInformationRequestMsgCallbacks();
125 
126  //static callbacks to register with the radio for commands to lase a target
127  static void laseTargetTaskCallback(DtSimMessage *msg, void * usrData);
128  static void laseLocationTaskCallback(DtSimMessage *msg, void * usrData);
129  static void setLaseAutonomousRequestCallback(DtSimMessage* msg, void* usrData);
130  static void setLaserCodeRequestCallback(DtSimMessage* msg, void* usrData);
131  static void setLaserInformationRequestCallback(DtSimMessage* msg, void* usrData);
132 
133  //functions to do the work for the static function.
134  virtual void processLaseTargetTaskMessage(DtSimMessage *msg);
135  virtual void processLaseLocationTaskMessage(DtSimMessage *msg);
136  virtual void processSetLaseAutonomousRequestMessage(DtSimMessage* msg);
137  virtual void processSetLaserInformationRequestMessage(DtSimMessage* msg);
138  virtual void processSetLaserCodeRequestMessage(DtSimMessage* msg);
139 
140  static void requestLaserCodeCallback(const DtVrfObjectMessage* msg, void* usr);
141  virtual void processRequestLaserCode(const DtVrfObjectMessage* msg);
142 
144  virtual void disable();
145 
146 protected:
147 
149  virtual bool createPortGroups();
150 
152  virtual bool createPorts();
153 
155  virtual bool lineOfSight(DtSimObjectReference target, DtString& reason);
156 
158  virtual bool targetPoint(const DtTaitBryan& orientation, DtVector& location);
159 
161  virtual DtVector localEyepoint() const;
162 
163  //updates the designator state and publishes it on the
164  //network
165  virtual void tickLaser();
166 
168  virtual void setRadio(DtSimRadio * radio);
169 
170  virtual bool createPublisher();
171 
172  virtual bool createTargetInput();
173 
176  virtual double laserPower() const;
177 
180  virtual double laserWavelength() const;
181 
186  virtual bool laseTargetValid(DtSimObjectReference target, DtString& invalidReason);
187 
192  virtual bool laseLocationValid(const DtVector& location, DtString& invalidReason);
193 
196  virtual DtSimObjectReference chooseAutonomousLaseTarget();
197 
199  virtual int defaultLaserCode() const;
200 
206  {
207  private:
209 
212  const DtLasingControllerInput& operator=(const DtLasingControllerInput& rhs);
214  public:
216  virtual ~DtLasingControllerInput();
217  virtual bool init();
218  virtual DtSimObjectReference getTarget() = 0;
219  virtual bool isConnected() = 0;
220  protected:
222  };
223 
226  {
227  private:
229 
232  const DtLasingControllerPortInput& operator=(const DtLasingControllerPortInput& rhs);
234 
235  public:
237  virtual ~DtLasingControllerPortInput();
238  virtual bool init();
239  virtual DtSimObjectReference getTarget();
240  virtual bool isConnected();
241 
242  protected:
244  };
245 
248  {
249  private:
251 
256  public:
259  virtual bool init();
260  virtual DtSimObjectReference getTarget();
261  virtual bool isConnected();
262 
263  protected:
265  };
266 
267 protected:
269 
273 
276 
279 
284 
287 
293 
300 
307 
312 
320 
328 };
329 
333 int generateLaserCodeFromName(const DtString& objectName);
makVrf::DtLaserDesignatorStateComponent * myLaserDesignatorComponent
Definition: lasingController.h:275
Base class for lasing controller target inputs. Depending on whether a DtLasingController is integrat...
Definition: lasingController.h:205
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtVectorInputPort * myPositionInputPort
Input Port Name: position Input Port Description: Specifies the position of the laser in body coordin...
Definition: lasingController.h:327
Definition: simRadio.h:30
DtSetTargetRequest.
Definition: setTargetRequest.h:26
Instances of DtBooleanOutputPort are output ports through which data producers can send boolean data...
Definition: boolIOPort.h:45
virtual void registerTaskMsgCallbacks()
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
DtEntityListInputPort * myTargetListPort
Definition: lasingController.h:243
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:20
The DtSimObjectReference is a shared pointer that can be used amongst many object for access to the u...
Definition: simObjectReference.h:26
Contains class declarations for DtStringInputPort, DtStringOutputPort, and DtStringPortData.
Definition: stringIOPort.h:27
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
bool myInvalidTargetMsgPrinted
Remember if an invalid-target message has been printed (print it once)
Definition: lasingController.h:286
Definition: readerWriterRegistry.h:39
virtual const char * type() const =0
Returns a string identifies the class type of component. Type values are defined in compTypes...
DtOutputPortGroup is a data port group of a data provider. It may contain any number of DtOutputPorts...
Definition: outputPortGroup.h:34
DtLasingController * myController
Definition: lasingController.h:221
virtual bool init()
Calls setRadio()
virtual void clearTask()
If component is currently tasked, calls clearPendingSubtasks(), sets the tasked flag to false...
DtStringInputPort * myTargetObjectInputPort
Input Port Name: target-object Input Port Description: Specifies a target object to be lased...
Definition: lasingController.h:306
DtBooleanInputPort * myLaserOnInputPort
Input Port Name: laser-on Input Port Description: Turns on the laser using the orientation and positi...
Definition: lasingController.h:292
Contains class declarations for DtVectorInputPort, DtVectorOutputPort, and DtVectorPortData.
Definition: vectorIOPort.h:27
Derived input that uses a DtWeaponComponentInterface.
Definition: lasingController.h:247
File: lasingCtlrDesc.h.
Definition: lasingControllerDescriptor.h:34
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: laserDesignatorStateComponent.h:56
DtInputPortGroup * myLaserOffsetInputPortGroup
Input Port Group Name: laser-offset Input Port Group Description: Allows another component to communi...
Definition: lasingController.h:311
Contains class declarations for DtEntityListInputPort, DtEntityListOutputPort, and DtEntityListPortDa...
Definition: entListIOPort.h:29
File: simMsg.h.
Definition: simMessage.h:35
DtSimObjectReference myCurrentLasedTarget
Definition: lasingController.h:268
virtual void tick()
This gives the thread of control to the component. The component is ticked once each simulation from ...
Contains class declarations for DtBooleanInputPort, DtBooleanOutputPort, and DtBooleanPortData.
Definition: boolIOPort.h:25
DtOrientationInputPort * myOrientationInputPort
Input Port Name: orientation Input Port Description: Specifies the orientation of the laser relative ...
Definition: lasingController.h:319
DtVectorInputPort * myTargetLocationInputPort
Input Port Name: target-location Input Port Description: Specifies a target location to be lased...
Definition: lasingController.h:299
The base class for all messages to/from a specific DtVrfObject. Various subclasses of this class will...
Definition: vrfObjectMessage.h:30
virtual void setRadio(DtSimRadio *radio)
Calls registerTaskMsgCallbacks.
virtual bool createPorts()
Called by init. Derived classes should override this method to create all their input/output ports an...
virtual void disable()
Overridden to allow tasks controllers that can be disabled to call task complete. ...
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:90
DtLasingControllerInput * myLasingInput
Depending on whether this DtLasingController is integrated with a weapon system or not...
Definition: lasingController.h:283
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:70
Class Description: DtLasingController Lases a target location or entity. Determines the visibility of...
Definition: lasingController.h:40
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
Input and output ports containing a DtTaitBryan.
Definition: orientationIOPort.h:26
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtInputPortGroup is a data port group of a data consumer. It may contain any number of DtInputPorts a...
Definition: inputPortGroup.h:35
bool myConnectedToLauncher
Indicates whether myLasingInput is connected to a launcher or not.
Definition: lasingController.h:278
DtLasingPSR * myProcessState
Current target we're lasing–point or entity.
Definition: lasingController.h:272
DtWeaponComponentInterface * myInterface
Definition: lasingController.h:264
int generateLaserCodeFromName(const DtString &objectName)
Generates a pseudo-random laser code based on the object name of an entity.
Derived input that uses a port.
Definition: lasingController.h:225
const DtLasingControllerDescriptor * myComponentDescriptor
Definition: lasingController.h:274
DtLasingPSR.
Definition: lasingPSR.h:24
Represents the interface between the DtTargetSelectionController and a weapon system.
Definition: weaponComponentInterface.h:20
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

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)