VR-Forces 4.10 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;
23 class DtStringInputPort;
25 class DtSetTargetRequest;
26 class DtDesignatorPublisher;
29 class DtVrfObjectMessage;
30 
36 {
37 protected:
40 
43  orig);
44 
46  const DtLasingController & operator=(const DtLasingController & orig);
47 
48 public:
49 
51  DtLasingController(const DtString& name,
52  DtVrfObject* owner,
53  DtSimManager* simManager,
54  DtComponentDescriptor* desc = 0,
55  DtReaderWriterRegistry* parentRegistry = 0);
56 
58  virtual ~DtLasingController();
59 
60  //Initializes the laser controller
61  virtual bool init();
62 
65  virtual const char* type() const;
66 
71  virtual void preFirstTickInit();
72 
80  virtual void tick();
81 
83  virtual void setDesignatorCode(const int code);
84  virtual const int designatorCode() const;
85 
86  virtual void clearTask();
87 
91  virtual bool createProcessSR();
92 
94  virtual void startLasing();
95  virtual void stopLasing();
96 
99  virtual void laseTarget(const DtVrfObject* targetObject);
100 
103  virtual void laseLocation(const DtVector& location);
104 
106  virtual bool lasing();
107 
108  //static creator
109  static DtSimComponent * creator(const DtString& name,
110  DtVrfObject* owner,
111  DtSimManager* simManager,
112  DtComponentDescriptor* desc = 0,
113  DtReaderWriterRegistry* parentRegistry = 0);
114 
116  virtual void registerTaskMsgCallbacks();
117  virtual void registerSetLaseAutonomousMsgCallbacks();
118  virtual void registerSetLaserCodeRequestMsgCallbacks();
119  virtual void registerSetLaserInformationRequestMsgCallbacks();
120 
121  //static callbacks to register with the radio for commands to lase a target
122  static void laseTargetTaskCallback(DtSimMessage *msg, void * usrData);
123  static void laseLocationTaskCallback(DtSimMessage *msg, void * usrData);
124  static void setLaseAutonomousRequestCallback(DtSimMessage* msg, void* usrData);
125  static void setLaserCodeRequestCallback(DtSimMessage* msg, void* usrData);
126  static void setLaserInformationRequestCallback(DtSimMessage* msg, void* usrData);
127 
128  //functions to do the work for the static function.
129  virtual void processLaseTargetTaskMessage(DtSimMessage *msg);
130  virtual void processLaseLocationTaskMessage(DtSimMessage *msg);
131  virtual void processSetLaseAutonomousRequestMessage(DtSimMessage* msg);
132  virtual void processSetLaserInformationRequestMessage(DtSimMessage* msg);
133  virtual void processSetLaserCodeRequestMessage(DtSimMessage* msg);
134 
135  static void requestLaserCodeCallback(const DtVrfObjectMessage* msg, void* usr);
136  virtual void processRequestLaserCode(const DtVrfObjectMessage* msg);
137 
139  virtual void disable();
140 
141 protected:
142 
144  virtual bool createPortGroups();
145 
147  virtual bool createPorts();
148 
150  virtual bool lineOfSight(const DtVrfObject* target, DtString& reason);
151 
153  virtual bool targetPoint(const DtTaitBryan& orientation, DtVector& location);
154 
156  virtual DtVector localEyepoint() const;
157 
158  //updates the designator state and publishes it on the
159  //network
160  virtual void tickLaser();
161 
163  virtual void setRadio(DtSimRadio * radio);
164 
165  virtual bool createPublisher();
166 
167  virtual bool createTargetInput();
168 
171  virtual double laserPower() const;
172 
175  virtual double laserWavelength() const;
176 
181  virtual bool laseTargetValid(const DtVrfObject* target, DtString& invalidReason);
182 
187  virtual bool laseLocationValid(const DtVector& location, DtString& invalidReason);
188 
191  virtual const DtVrfObject* chooseAutonomousLaseTarget();
192 
194  virtual int defaultLaserCode() const;
195 
198  static void objectAboutToBeRemovedCallback(const DtVrfObject* vrfObject,
199  void* usr);
200 
203  virtual void processObjectAboutToBeRemovedCallback(const DtVrfObject* vrfObject);
204 
210  {
211  private:
213 
216  const DtLasingControllerInput& operator=(const DtLasingControllerInput& rhs);
218  public:
220  virtual ~DtLasingControllerInput();
221  virtual bool init();
222  virtual const DtVrfObject* getTarget() = 0;
223  virtual bool isConnected() = 0;
224  protected:
226  };
227 
230  {
231  private:
233 
236  const DtLasingControllerPortInput& operator=(const DtLasingControllerPortInput& rhs);
238 
239  public:
241  virtual ~DtLasingControllerPortInput();
242  virtual bool init();
243  virtual const DtVrfObject* getTarget();
244  virtual bool isConnected();
245 
246  protected:
248  };
249 
252  {
253  private:
255 
260  public:
263  virtual bool init();
264  virtual const DtVrfObject* getTarget();
265  virtual bool isConnected();
266 
267  protected:
269  };
270 
271 protected:
273 
277 
279  DtDesignatorPublisher* myDesPublisher;
280 
283 
288 
291 
297 
304 
311 
316 
324 
332 };
333 
337 int generateLaserCodeFromName(const DtString& objectName);
Base class for lasing controller target inputs.
Definition: lasingController.h:209
#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:331
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:247
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:20
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:42
bool myInvalidTargetMsgPrinted
Remember if an invalid-target message has been printed (print it once)
Definition: lasingController.h:290
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:225
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:310
DtBooleanInputPort * myLaserOnInputPort
Input Port Name: laser-on Input Port Description: Turns on the laser using the orientation and positi...
Definition: lasingController.h:296
Contains class declarations for DtVectorInputPort, DtVectorOutputPort, and DtVectorPortData.
Definition: vectorIOPort.h:27
Derived input that uses a DtWeaponComponentInterface.
Definition: lasingController.h:251
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:315
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:323
DtVectorInputPort * myTargetLocationInputPort
Input Port Name: target-location Input Port Description: Specifies a target location to be lased...
Definition: lasingController.h:303
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:287
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:35
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:282
DtLasingPSR * myProcessState
Current target we're lasing–point or entity.
Definition: lasingController.h:276
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103
DtWeaponComponentInterface * myInterface
Definition: lasingController.h:268
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:229
const DtLasingControllerDescriptor * myComponentDescriptor
Definition: lasingController.h:278
const DtVrfObject * myCurrentLasedTarget
Definition: lasingController.h:272
DtLasingPSR.
Definition: lasingPSR.h:25
DtDesignatorPublisher * myDesPublisher
Definition: lasingController.h:279
Represents the interface between the DtTargetSelectionController and a weapon system.
Definition: weaponComponentInterface.h:21

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)