VR-Forces 4.8 Class Documentation
 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 
14 class DtString;
15 class DtSimManager;
16 class DtSimMessage;
18 class DtLasingPSR;
20 class DtOutputPortGroup;
21 class DtBooleanInputPort;
22 class DtVectorInputPort;
24 class DtSetTargetRequest;
25 class DtDesignatorPublisher;
28 class DtVrfObjectMessage;
29 
35 {
36 protected:
39 
42  orig);
43 
45  const DtLasingController & operator=(const DtLasingController & orig);
46 
47 public:
48 
50  DtLasingController(const DtString& name,
51  DtVrfObject* owner,
52  DtSimManager* simManager,
53  DtComponentDescriptor* desc = 0,
54  DtReaderWriterRegistry* parentRegistry = 0);
55 
57  virtual ~DtLasingController();
58 
59  //Initializes the laser controller
60  virtual bool init();
61 
64  virtual const char* type() const;
65 
70  virtual void preFirstTickInit();
71 
79  virtual void tick();
80 
82  virtual void setDesignatorCode(const int code);
83  virtual const int designatorCode() const;
84 
85  virtual void clearTask();
86 
90  virtual bool createProcessSR();
91 
93  virtual void startLasing();
94  virtual void stopLasing();
95 
98  virtual void laseTarget(const DtVrfObject* targetObject);
99 
102  virtual void laseLocation(const DtVector& location);
103 
105  virtual bool lasing();
106 
107  //static creator
108  static DtSimComponent * creator(const DtString& name,
109  DtVrfObject* owner,
110  DtSimManager* simManager,
111  DtComponentDescriptor* desc = 0,
112  DtReaderWriterRegistry* parentRegistry = 0);
113 
115  virtual void registerTaskMsgCallbacks();
116  virtual void registerSetLaseAutonomousMsgCallbacks();
117  virtual void registerSetLaserCodeRequestMsgCallbacks();
118  virtual void registerSetLaserInformationRequestMsgCallbacks();
119 
120  //static callbacks to register with the radio for commands to lase a target
121  static void laseTargetTaskCallback(DtSimMessage *msg, void * usrData);
122  static void laseLocationTaskCallback(DtSimMessage *msg, void * usrData);
123  static void setLaseAutonomousRequestCallback(DtSimMessage* msg, void* usrData);
124  static void setLaserCodeRequestCallback(DtSimMessage* msg, void* usrData);
125  static void setLaserInformationRequestCallback(DtSimMessage* msg, void* usrData);
126 
127  //functions to do the work for the static function.
128  virtual void processLaseTargetTaskMessage(DtSimMessage *msg);
129  virtual void processLaseLocationTaskMessage(DtSimMessage *msg);
130  virtual void processSetLaseAutonomousRequestMessage(DtSimMessage* msg);
131  virtual void processSetLaserInformationRequestMessage(DtSimMessage* msg);
132  virtual void processSetLaserCodeRequestMessage(DtSimMessage* msg);
133 
134  static void requestLaserCodeCallback(const DtVrfObjectMessage* msg, void* usr);
135  virtual void processRequestLaserCode(const DtVrfObjectMessage* msg);
136 
138  virtual void disable();
139 
140 protected:
141 
143  virtual bool createPortGroups();
144 
146  virtual bool createPorts();
147 
149  virtual bool lineOfSight(const DtVrfObject* target, DtString& reason);
150 
152  virtual bool targetPoint(const DtTaitBryan& orientation, DtVector& location);
153 
155  virtual DtVector localEyepoint() const;
156 
157  //updates the designator state and publishes it on the
158  //network
159  virtual void tickLaser();
160 
162  virtual void setRadio(DtSimRadio * radio);
163 
164  virtual bool createPublisher();
165 
166  virtual bool createTargetInput();
167 
170  virtual double laserPower() const;
171 
174  virtual double laserWavelength() const;
175 
180  virtual bool laseTargetValid(const DtVrfObject* target, DtString& invalidReason);
181 
184  virtual const DtVrfObject* chooseAutonomousLaseTarget();
185 
187  virtual int defaultLaserCode() const;
188 
191  static void objectAboutToBeRemovedCallback(const DtVrfObject* vrfObject,
192  void* usr);
193 
196  virtual void processObjectAboutToBeRemovedCallback(const DtVrfObject* vrfObject);
197 
203  {
204  private:
206 
209  const DtLasingControllerInput& operator=(const DtLasingControllerInput& rhs);
211  public:
213  virtual ~DtLasingControllerInput();
214  virtual bool init();
215  virtual const DtVrfObject* getTarget() = 0;
216  virtual bool isConnected() = 0;
217  protected:
219  };
220 
223  {
224  private:
226 
229  const DtLasingControllerPortInput& operator=(const DtLasingControllerPortInput& rhs);
231 
232  public:
234  virtual ~DtLasingControllerPortInput();
235  virtual bool init();
236  virtual const DtVrfObject* getTarget();
237  virtual bool isConnected();
238 
239  protected:
241  };
242 
245  {
246  private:
248 
253  public:
256  virtual bool init();
257  virtual const DtVrfObject* getTarget();
258  virtual bool isConnected();
259 
260  protected:
262  };
263 
264 protected:
266 
270 
272  DtDesignatorPublisher* myDesPublisher;
273 
276 
281 
284 
290 
297 
302 
310 
318 };
319 
323 int generateLaserCodeFromName(const DtString& objectName);
Base class for lasing controller target inputs.
Definition: lasingController.h:202
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
DtVectorInputPort * myPositionInputPort
Input Port Name: position Input Port Description: Specifies the position of the laser in body coordin...
Definition: lasingController.h:317
class DtSimRadio:
Definition: simRadio.h:25
DtSetTargetRequest.
Definition: setTargetRequest.h:24
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:240
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:20
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:42
bool myInvalidTargetMsgPrinted
Remember if an invalid-target message has been printed (print it once)
Definition: lasingController.h:283
Definition: readerWriterRegistry.h:39
virtual const char * type() const =0
Returns a string identifies the class type of component.
DtOutputPortGroup is a data port group of a data provider.
Definition: outputPortGroup.h:30
DtLasingController * myController
Definition: lasingController.h:218
virtual bool init()
Calls setRadio()
virtual void clearTask()
If component is currently tasked, calls clearPendingSubtasks(), sets the tasked flag to false...
DtBooleanInputPort * myLaserOnInputPort
Input Port Name: laser-on Input Port Description: Turns on the laser using the orientation and positi...
Definition: lasingController.h:289
Contains class declarations for DtVectorInputPort, DtVectorOutputPort, and DtVectorPortData.
Definition: vectorIOPort.h:27
Derived input that uses a DtWeaponComponentInterface.
Definition: lasingController.h:244
File: lasingCtlrDesc.h.
Definition: lasingControllerDescriptor.h:34
DtInputPortGroup * myLaserOffsetInputPortGroup
Input Port Group Name: laser-offset Input Port Group Description: Allows another component to communi...
Definition: lasingController.h:301
Contains class declarations for DtEntityListInputPort, DtEntityListOutputPort, and DtEntityListPortDa...
Definition: entListIOPort.h:27
File: simMsg.h.
Definition: simMessage.h:35
virtual void tick()
This gives the thread of control to the component.
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:309
DtVectorInputPort * myTargetLocationInputPort
Input Port Name: target-location Input Port Description: Specifies a target location to be lased...
Definition: lasingController.h:296
The base class for all messages to/from a specific DtVrfObject.
Definition: vrfObjectMessage.h:30
virtual void setRadio(DtSimRadio *radio)
Calls registerTaskMsgCallbacks.
virtual bool createPorts()
Called by init.
virtual void disable()
Overridden to allow tasks controllers that can be disabled to call task complete. ...
virtual bool createPortGroups()
Called by init.
DtLasingControllerInput * myLasingInput
Depending on whether this DtLasingController is integrated with a weapon system or not...
Definition: lasingController.h:280
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:67
Class Description: DtLasingController Lases a target location or entity.
Definition: lasingController.h:34
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.
Definition: inputPortGroup.h:32
bool myConnectedToLauncher
Indicates whether myLasingInput is connected to a launcher or not.
Definition: lasingController.h:275
DtLasingPSR * myProcessState
Current target we're lasing–point or entity.
Definition: lasingController.h:269
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
DtWeaponComponentInterface * myInterface
Definition: lasingController.h:261
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:222
const DtLasingControllerDescriptor * myComponentDescriptor
Definition: lasingController.h:271
const DtVrfObject * myCurrentLasedTarget
Definition: lasingController.h:265
DtLasingPSR.
Definition: lasingPSR.h:25
DtDesignatorPublisher * myDesPublisher
Definition: lasingController.h:272
Represents the interface between the DtTargetSelectionController and a weapon system.
Definition: weaponComponentInterface.h:21

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)