VR-Forces 4.7 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& isHit,
145  bool assureMiss = false);
146 
155  virtual void getMissLocation(DtVector gunPosition,
156  DtVrfObjectStateRepository *intendedTargetSR, double muzzleSpeed,
157  DtVector& missLocation, DtVector& velocityVector,
158  DtDetonationResult& detonationResult,
159  DtVrfObject** target);
160 
175  virtual void scheduleDetonation(DtDetonationInteraction * detInter,
176  DtTime detTime);
177 
178  virtual DtString probabilityString() const;
179 
181  virtual DtVector calculateMuzzlePosition() const;
182 
188  virtual DtDetonationInteraction * createDetonationInteraction(
189  const DtDetonationDescriptor& desc, DtTime& detTime);
190 
193  virtual DtDetonationDescriptor* createDetonationDescriptor(
194  DtDetonationInteraction* detInter, DtTime simTime);
195 
198  virtual double maxGunRange() const;
199 
200 public:
201 
209  static void detonationCallback(DtTimer * timer);
210 
215  static void setTracerUseCallback(DtSimMessage * msg, void *component);
216  virtual void processSetTracerUse(DtSimMessage* msg);
218 
222  static DtSimComponent * creator(const DtString& name,
223  DtVrfObject* owner,
224  DtSimManager* simManager,
225  DtComponentDescriptor* desc = 0,
226  DtReaderWriterRegistry* parentRegistry = 0);
227 
229  static void objectAddedCb(DtVrfObject * vrfObject, void * usr);
230 
231 protected:
232 
234  virtual bool createPortGroups();
235 
237  virtual bool createPorts();
238 
244  virtual bool createPSR();
245 
250  virtual void processObjectAdded(DtVrfObject * vrfObject);
251 
253  virtual void addRangeItems();
254 
258  virtual bool aimGun();
259 
265  virtual DtEntityType munitionType(DtSimMunition& munitionEntry);
266 
267 
268 protected:
269 
271  DtBallisticGun();
272 
274  DtBallisticGun(const DtBallisticGun & orig);
275 
277  const DtBallisticGun & operator=(const DtBallisticGun & orig);
278 
279 protected:
281 
286 
289 
293  DtEventId myCurrentEventId;
295 
296  DtList myTimerList;
297  DtArtPartType myGunArtPart;
298 
302 
305 
309 
317 
327 
334 
344 
350 
352 };
353 

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)