VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ballisticGun.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 #pragma once
11 
13 #include <vl/fireInteraction.h>
14 #include <vl/detonationInteraction.h>
15 #include "vrfcore/timer.h"
16 #include <vl/hostStructs.h>
17 #include "vrfutil/simMunition.h"
18 
19 class DtSimManager;
21 class DtVrfObject;
22 class DtVrfBalGunPSR;
24 class DtIntegerInputPort;
26 class DtBooleanInputPort;
27 class DtAnalogInputPort;
28 class DtInputPortGroup;
29 
30 #define DEBUG_MUZZLE_POSITION 0
31 
45 {
46 
47 public:
48 
51  DtBallisticGun(const DtString& name,
52  DtVrfObject* owner,
53  DtSimManager* simManager,
54  DtComponentDescriptor* desc = 0,
55  DtReaderWriterRegistry* parentRegistry = 0);
56 
57 
59  virtual ~DtBallisticGun();
60 
61  virtual bool init();
62 
69  virtual void initPendingDetonations();
70 
73  virtual const char* type() const;
74 
76  virtual void preFirstTickInit();
77 
82  virtual void tick();
83 
90  virtual void fire(int roundsToFire, bool computePHit);
91 
103  virtual bool checkHitProbability(const DtEntityType& type, DtReal
104  range, int burstSize = 1);
105 
108  virtual double hitProbabilityModifier(const DtEntityType& type,
109  DtReal range, int burstSize = 1);
110 
114  virtual double targetMotionHitModifier(const DtEntityType& type, DtReal
115  range);
116 
119  virtual double selfMotionHitModifier(const DtEntityType& type, DtReal
120  range);
121 
124  virtual double skillLevelModifier(const double range);
125 
129  virtual double lifeformPostureModifier();
130 
134  virtual double burstSizeModifier(int burstSize);
135 
143  virtual DtFireInteraction * createFireInteraction(const int rounds);
144 
165  virtual DtDetonationInteraction * createDetonationInteraction(
166  int burstSize,
167  DtTime& detTime, bool& isHit,
168  bool assureMiss = false);
169 
178  virtual void getMissLocation(DtVector gunPosition,
179  const DtVrfObjectStateRepository *intendedTargetSR, double muzzleSpeed,
180  DtVector& missLocation, DtVector& velocityVector,
181  DtDetonationResult& detonationResult,
182  const DtVrfObject** target);
183 
198  virtual void scheduleDetonation(DtDetonationInteraction * detInter,
199  DtTime detTime);
200 
201  virtual DtString probabilityString() const;
202 
204  virtual DtVector calculateMuzzlePosition() const;
205 
211  virtual DtDetonationInteraction * createDetonationInteraction(
212  const DtDetonationDescriptor& desc, DtTime& detTime);
213 
216  virtual DtDetonationDescriptor* createDetonationDescriptor(
217  DtDetonationInteraction* detInter, DtTime simTime);
218 
221  virtual double maxGunRange() const;
222 
223 #if DEBUG_MUZZLE_POSITION
224  virtual bool taskVisualizationsActive() const { return true; };
225 #endif
226 
227 public:
228 
236  static void detonationCallback(DtTimer * timer);
237 
242  static void setTracerUseCallback(DtSimMessage * msg, void *component);
243  virtual void processSetTracerUse(DtSimMessage* msg);
245 
249  static DtSimComponent * creator(const DtString& name,
250  DtVrfObject* owner,
251  DtSimManager* simManager,
252  DtComponentDescriptor* desc = 0,
253  DtReaderWriterRegistry* parentRegistry = 0);
254 
256  static void objectAddedCb(const DtVrfObject * vrfObject, void * usr);
257 
258 protected:
259 
261  virtual bool createPortGroups();
262 
264  virtual bool createPorts();
265 
271  virtual bool createPSR();
272 
277  virtual void processObjectAdded(const DtVrfObject * vrfObject);
278 
280  virtual void addRangeItems();
281 
285  virtual bool aimGun();
286 
292  virtual DtEntityType munitionType(DtSimMunition& munitionEntry);
293 
294 #if DEBUG_MUZZLE_POSITION
295  virtual void updateTaskVisualizations();
296 #endif
297 
298 protected:
299 
301  DtBallisticGun();
302 
304  DtBallisticGun(const DtBallisticGun & orig);
305 
307  const DtBallisticGun & operator=(const DtBallisticGun & orig);
308 
309 protected:
311 
316 
319 
323  DtEventId myCurrentEventId;
325 
326  DtList myTimerList;
327  DtArtPartType myGunArtPart;
328 
332 
335 
339 
347 
357 
364 
374 
380 
382 };
383 
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtAnalogInputPort * myAimElevationInputPort
Input Port Name: aim-elevation Input Port Description: Elevation at which to aim, in radians...
Definition: ballisticGun.h:379
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
Instances of DtTimer are used to maintain the information needed to represent some kind of scheduled ...
Definition: timer.h:45
Contains class declarations for DtAmmunitionInputPort, DtAmmunitionOutputPort, and DtAmmunitionPortDa...
Definition: ammunitionIOPort.h:28
virtual bool taskVisualizationsActive() const
Returns true if task visualizations are currently active for this component.
const DtActuatorComponent & operator=(const DtActuatorComponent &orig)
assignment operator
const DtVrfObject * myCurrentTarget
These are set by createFireInteraction and used by createDetonationInteraction.
Definition: ballisticGun.h:322
DtReal myMuzzleSpeed
Definition: ballisticGun.h:317
DtVector myMuzzleOffset
Definition: ballisticGun.h:318
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
DtVrfBalGunPSR * myProcessState
Container for state data associated with this component.
Definition: ballisticGun.h:331
virtual bool init()
Overridden to cache a pointer to the entity&#39;s radio in this class.
DtBallisticGun provides a simple model of a ballistic gun.
Definition: ballisticGun.h:44
DtReal myMaxGunRange
This max gun range is determined by the P(hit) tables.
Definition: ballisticGun.h:315
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:42
Definition: readerWriterRegistry.h:39
DtBooleanInputPort * myLoadedPort
Input Port Name: loaded Input Port Description: Must be True for gun to fire.
Definition: ballisticGun.h:363
Description: This repository holds all information that is common to all the forms of all entity/aggr...
Definition: vrfObjectStateRepository.h:87
This file contains the class declaration for the.
Contains class declarations for DtIntegerInputPort, DtIntegerOutputPort, and DtIntegerPortData.
Definition: integerIOPort.h:25
End User Description: DtActuator is the base class for all actuator model components.
Definition: actuatorComponent.h:48
DtBallisticGunDescriptor; a descriptor for the DtBallisticGun component.
Definition: ballisticGunDescriptor.h:36
DtArtPartType myGunArtPart
Definition: ballisticGun.h:327
DtIntegerInputPort * myQuantityInputPort
Input Port Name: quantity Input Port Description: Indicates the number of rounds to be fired with a s...
Definition: ballisticGun.h:356
virtual void updateTaskVisualizations()
Called to update task visualizations after every tick.
Definition: simComponent.h:485
DtEventId myCurrentEventId
Definition: ballisticGun.h:323
class DtDetonationDescriptor:
Definition: detonationDescriptor.h:33
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
DtDetonationPdu DtDetonationInteraction
Definition: DistributedSimulationDriver3A.h:14
virtual bool createPorts()
Called by init.
DtList myTimerList
Definition: ballisticGun.h:326
virtual bool createPortGroups()
Called by init.
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:67
DtInputPortGroup * myBalGunControlPortGroup
Input Port Group Name: gun-control Input Port Group Description:
Definition: ballisticGun.h:338
DtReal myCurrentRange
Definition: ballisticGun.h:324
DtInputPortGroup is a data port group of a data consumer.
Definition: inputPortGroup.h:32
Contains class declarations for DtAnalogInputPort, DtAnalogOutputPort, and DtAnalogPortData.
Definition: analogIOPort.h:25
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
DtBallisticGunDescriptor * myBalGunDescriptor
Definition: ballisticGun.h:310
DtBooleanInputPort * myTriggerPort
Input Port Name: trigger Input Port Description: Edge-triggered input which fires a round whenever a ...
Definition: ballisticGun.h:346
DtSimMunition class.
Definition: simMunition.h:34
Class DtVrfBalGunPSR: Used to hold checkpointable state for the processes associated with ballistic g...
Definition: vrfBalGunPSR.h:38
virtual const char * type() const =0
Returns a string identifies the class type of component.
DtIntegerInputPort * myLosPort
Input Port Name: line-of-sight Input Port Description: Indicates the result of a line of sight calcul...
Definition: ballisticGun.h:373

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)