VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
weaponController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
12 
13 #pragma once
16 #include "vrfutil/simMunition.h"
18 #include "vrfobjcore/boolIOPort.h"
21 
22 class DtObjectIdPort;
23 
26 class DtSimMessage;
32 
60 {
61 
62 public:
63 
66  DtWeaponController(const DtString& name,
67  DtLocalObject* owner,
68  DtSimulationServices* simManager,
69  DtComponentDescriptor* desc = nullptr,
70  DtReaderWriterRegistry* parentRegistry = nullptr);
71 
73  virtual ~DtWeaponController() override;
74 
77  virtual const char* type() const override;
78 
80  virtual bool createMountingController() override;
81 
82  virtual bool init() override;
83 
86  virtual void preFirstTickInit() override;
87 
94  virtual void tick() override;
95 
97  virtual void fire() override;
98 
107  virtual const DtSimObject* chooseTarget();
108 
113  virtual DtSimObjectReference chooseTarget(const DtEntityTargetList& targetList) const;
114 
123  virtual const DtVector chooseLocationTarget();
124 
129  virtual void tickMunitionLoader(const DtSimObject* target);
130 
151  virtual bool acquireTarget(const DtSimObject* target);
152 
155  virtual bool acquireLocationTarget(const DtVector locTarget);
156 
162  virtual void maneuverRequiredToAcquireTarget(DtReal requiredHeading,
163  DtReal requiredPitch,
164  DtReal requiredMaxSpeed);
165 
167  bool outOfAmmo() const;
168 
173  virtual bool loadedAmmoValidForTarget(const DtSimObject* target) const;
174 
191  virtual bool chooseAmmo(const DtEntityType& entityType,
192  DtSimMunition& munitionOut, DtDetonatorFuze& fuzeOut,
193  bool setCurrentMunition = true);
194 
200  virtual bool acceptSensorTargettingInput();
201 
205  virtual bool inSector(const DtSimObject* entity) const;
206 
209  virtual void findBodyHeadingElevationToTarget(const DtSimObject* entity,
210  DtReal &bodyHeadingOut,
211  DtReal &bodyElevationOut) const;
212 
216  virtual DtSimObjectReference easier(DtSimObjectReference entity1, DtSimObjectReference entity2) const;
217 
221  static DtSimComponent * creator(const DtString& name,
222  DtLocalObject* owner,
223  DtSimulationServices* simManager,
224  DtComponentDescriptor* desc = nullptr,
225  DtReaderWriterRegistry* parentRegistry = nullptr);
226 
227 
228  virtual void enable() override;
229 
230  virtual void disable() override;
231 
232 protected:
233 
235  virtual bool createPorts() override;
236 
238  virtual void addRangeItems();
239 
240  virtual DtWeaponInfoInterface::TargetApplicability targetApplicability(const DtEntityType& type);
241 
242  virtual bool positionWithinTargetRegion(const DtVector& localPosition);
244  virtual bool targetAmmunition(const DtEntityType& type);
245  virtual void setupRegionEvaluator();
247  virtual void updateRegionEvaluator();
248 
249  virtual double maximumRange();
250  virtual double minimumRange();
251 
252 protected:
253 
256 
259 
262  orig);
263 
264 
265 //=================================================================================================
272 //=================================================================================================
273 protected:
276 
277  virtual bool isFireMissileLauncherTasked() const;
278  virtual const DtFireMissileLauncherTask* getFireMissileLauncherTask() const;
279  const DtEntityTargetInformation createTargetInfo() const;
280  bool hasTarget() const;
281 
283  virtual const DtRwLocationReference::LocationType targetLocationType() const;
284 
286  virtual const DtEntityTargetInformation target() const;
287 
289  virtual const DtVector locationTarget() const;
290 
291  void setRoundsFiredUponTarget(const int& roundsFired);
292  const int roundsFiredUponTarget() const;
293  const int totalRoundsToFireUponTarget() const;
294  void setIsExplicitlyTasked(const bool& explicitlyTasked);
295  const bool isExplicitlyTasked() const;
296  void setWeaponStatus(const int weaponStatus);
297  const int weaponStatus() const;
298  void addWeaponStatus(const DtBaseWeaponComponentInterface::DtWeaponStatus weaponStatus);
299  void removeWeaponStatus(const DtBaseWeaponComponentInterface::DtWeaponStatus weaponStatus);
301 //=================================================================================================
302 
303 
304 protected:
305 
307 
310 
318 
320 
321 
324 
327 
328  std::map<DtString, DtSimMunition> myUsableMunitions;
329 
331 
332  std::shared_ptr<DtSpatialFilterEvaluator> myRegionEvaluator;
334  double myTaskGiveUpTime = -1.0;
335 };
std::map< DtString, DtSimMunition > myUsableMunitions
Definition: weaponController.h:328
UUID is a unique ID wrapper class.
Definition: uuid.h:59
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtMountingController; models rotation of a launcher.
Definition: mountingController.h:23
virtual void disable() override
Overridden to allow tasks controllers that can be disabled to call task complete. ...
DtBaseWeaponController is a controller that creates the ports needed to choose ammo for...
Definition: baseWeaponController.h:34
Task for firing the missile launcher at a target.
Definition: fireMissileLauncherTask.h:25
DtWeaponController is a controller that extends the DtBaseWeaponController with the ability to accept...
Definition: weaponController.h:59
std::shared_ptr< DtSpatialFilterEvaluator > myRegionEvaluator
Definition: weaponController.h:332
virtual const char * type() const override
Returns a string identifies the class type of component. Type values are defined in compTypes...
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
Definition: readerWriterRegistry.h:39
Definition: entityTargetInformation.h:28
LocationType
Definition: rwLocationReference.h:28
This file contains the class declaration for the.
DtMountingController * myMountingController
Definition: weaponController.h:322
const DtBaseWeaponController & operator=(const DtBaseWeaponController &orig)
assignment operator; not implemented
virtual bool createPorts() override
Overridden to create input &amp; output ports.
Contains class declarations for DtEntityListInputPort, DtEntityListOutputPort, and DtEntityListPortDa...
Definition: entListIOPort.h:29
An implementation of DtWeaponInforInterface that allows for flexible registering of functions from ot...
Definition: genericWeaponInfo.h:17
File: simMsg.h.
Definition: simMessage.h:35
An abstract base class for all evaluators of spatial filters. The evaluation of spatial filters is sp...
Definition: spatialFilterEvaluator.h:31
Contains class declarations for DtBooleanInputPort, DtBooleanOutputPort, and DtBooleanPortData.
Definition: boolIOPort.h:25
DtWeaponComponentInterface * myWeaponComponentInterface
Definition: weaponController.h:325
virtual void fire()
fires the weapon
virtual void preFirstTickInit() override
This function can be overridden to initialize a component before it is ticked for the first time...
DtWeaponStatus
The status items below are used as bit fields. To set a state, OR the enumerated value into the weapo...
Definition: baseWeaponComponentInterface.h:35
virtual bool createMountingController()
Creates myBaseMountingController.
DtUUID myCurrentTarget
Definition: weaponController.h:306
TargetApplicability
Definition: weaponInfoInterface.h:21
DtTime myLastRegionEvaluatorUpdateTime
Definition: weaponController.h:333
virtual void tick() override
Sets the current dT on the base mounting controller and ticks it.
DtGenericWeaponInfo * myWeaponInfo
Definition: weaponController.h:326
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
static DtSimComponent * creator(const DtString &name, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentDescriptor *desc=nullptr, DtReaderWriterRegistry *parentRegistry=nullptr)
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
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
virtual void enable() override
Overridden to call registerTaskMsgCallbacks().
const DtWeaponControllerDescriptor * myWeaponCtlrDesc
Definition: weaponController.h:323
double myMaxMunitionEffectiveRange
Definition: weaponController.h:330
virtual bool init() override
Overridden to initialize values obtained from the descriptor.
DtSimMunition class.
Definition: simMunition.h:31
DtBooleanInputPort * myWeaponsHoldPort
Input Port Name: weapons-hold Input Port Description: When true, all firing of missiles is disabled...
Definition: weaponController.h:317
Represents the interface between the DtTargetSelectionController and a weapon system.
Definition: weaponComponentInterface.h:20
A locally simulated VRF object.
Definition: localObject.h:98
DtWeaponControllerDescriptor; descriptor for the DtWeaponController component.
Definition: weaponControllerDescriptor.h:26

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)