VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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  DtTime& detTime, bool assureMiss = false);
144 
147  virtual DtDetonationResult entityDetonationType(DtEntityType* victimType = 0,
148  DtSimMunition* munition = 0, DtVector* bodyPosition = 0);
149 
158  virtual void getMissLocation(DtVector gunPosition,
159  DtVrfObjectStateRepository *intendedTargetSR, double muzzleSpeed,
160  DtVector& missLocation, DtVector& velocityVector,
161  DtDetonationResult& detonationResult,
162  DtVrfObject** target);
163 
178  virtual void scheduleDetonation(DtDetonationInteraction * detInter,
179  DtTime detTime);
180 
181  virtual DtString probabilityString() const;
182 
184  virtual DtVector calculateMuzzlePosition() const;
185 
191  virtual DtDetonationInteraction * createDetonationInteraction(
192  const DtDetonationDescriptor& desc, DtTime& detTime);
193 
196  virtual DtDetonationDescriptor* createDetonationDescriptor(
197  DtDetonationInteraction* detInter, DtTime simTime);
198 
201  virtual double maxGunRange() const;
202 
203 public:
204 
212  static void detonationCallback(DtTimer * timer);
213 
218  static void setTracerUseCallback(DtSimMessage * msg, void *component);
219  virtual void processSetTracerUse(DtSimMessage* msg);
221 
225  static DtSimComponent * creator(const DtString& name,
226  DtVrfObject* owner,
227  DtSimManager* simManager,
228  DtComponentDescriptor* desc = 0,
229  DtReaderWriterRegistry* parentRegistry = 0);
230 
232  static void objectAddedCb(DtVrfObject * vrfObject, void * usr);
233 
234 protected:
235 
237  virtual bool createPortGroups();
238 
240  virtual bool createPorts();
241 
247  virtual bool createPSR();
248 
253  virtual void processObjectAdded(DtVrfObject * vrfObject);
254 
256  virtual void addRangeItems();
257 
261  virtual bool aimGun();
262 
268  virtual DtEntityType munitionType(DtSimMunition& munitionEntry);
269 
270 
271 protected:
272 
274  DtBallisticGun();
275 
277  DtBallisticGun(const DtBallisticGun & orig);
278 
280  const DtBallisticGun & operator=(const DtBallisticGun & orig);
281 
282 protected:
284 
289 
292 
296  DtEventId myCurrentEventId;
298 
299  DtList myTimerList;
300  DtArtPartType myGunArtPart;
301 
305 
308 
312 
320 
330 
337 
347 
353 
355 };
356 

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)