VR-Forces 4.6 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 
43 {
44 
45 public:
46 
49  DtBallisticGun(const DtString& name,
50  DtVrfObject* owner,
51  DtSimManager* simManager,
52  DtComponentDescriptor* desc = 0,
53  DtReaderWriterRegistry* parentRegistry = 0);
54 
55 
57  virtual ~DtBallisticGun();
58 
59  virtual bool init();
60 
67  virtual void initPendingDetonations();
68 
71  virtual const char* type() const;
72 
74  virtual void preFirstTickInit();
75 
80  virtual void tick();
81 
88  virtual void fire(int roundsToFire, bool computePHit);
89 
101  virtual bool checkHitProbability(const DtEntityType& type, DtReal
102  range);
103 
110  virtual double hitProbabilityModifier(const DtEntityType& type, DtReal
111  range);
112 
120  virtual DtFireInteraction * createFireInteraction(const int rounds);
121 
142  virtual DtDetonationInteraction * createDetonationInteraction(
143  int burstSize,
144  DtTime& detTime, bool assureMiss = false);
145 
148  virtual DtDetonationResult entityDetonationType(DtEntityType* victimType = 0,
149  DtSimMunition* munition = 0, DtVector* bodyPosition = 0);
150 
159  virtual void getMissLocation(DtVector gunPosition,
160  DtVrfObjectStateRepository *intendedTargetSR, double muzzleSpeed,
161  DtVector& missLocation, DtVector& velocityVector,
162  DtDetonationResult& detonationResult,
163  DtVrfObject** target);
164 
179  virtual void scheduleDetonation(DtDetonationInteraction * detInter,
180  DtTime detTime);
181 
182  virtual DtString probabilityString() const;
183 
185  virtual DtVector calculateMuzzlePosition() const;
186 
192  virtual DtDetonationInteraction * createDetonationInteraction(
193  const DtDetonationDescriptor& desc, DtTime& detTime);
194 
197  virtual DtDetonationDescriptor* createDetonationDescriptor(
198  DtDetonationInteraction* detInter, DtTime simTime);
199 
202  virtual double maxGunRange() const;
203 
204 public:
205 
213  static void detonationCallback(DtTimer * timer);
214 
219  static void setTracerUseCallback(DtSimMessage * msg, void *component);
220  virtual void processSetTracerUse(DtSimMessage* msg);
222 
226  static DtSimComponent * creator(const DtString& name,
227  DtVrfObject* owner,
228  DtSimManager* simManager,
229  DtComponentDescriptor* desc = 0,
230  DtReaderWriterRegistry* parentRegistry = 0);
231 
233  static void objectAddedCb(DtVrfObject * vrfObject, void * usr);
234 
235 protected:
236 
238  virtual bool createPortGroups();
239 
241  virtual bool createPorts();
242 
248  virtual bool createPSR();
249 
254  virtual void processObjectAdded(DtVrfObject * vrfObject);
255 
257  virtual void addRangeItems();
258 
262  virtual bool aimGun();
263 
269  virtual DtEntityType munitionType(DtSimMunition& munitionEntry);
270 
271 
272 protected:
273 
275  DtBallisticGun();
276 
278  DtBallisticGun(const DtBallisticGun & orig);
279 
281  const DtBallisticGun & operator=(const DtBallisticGun & orig);
282 
283 protected:
285 
290 
293 
297  DtEventId myCurrentEventId;
299 
300  DtList myTimerList;
301  DtArtPartType myGunArtPart;
302 
306 
309 
313 
321 
331 
338 
348 
354 
356 };
357 

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)