VR-Forces 4.3.1 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 
18 class DtSimManager;
20 class DtVrfObject;
21 class DtVrfBalGunPSR;
23 class DtIntegerInputPort;
25 class DtBooleanInputPort;
26 class DtInputPortGroup;
27 
41 {
42 
43 public:
44 
47  DtBallisticGun(const DtString& name,
48  DtVrfObject* owner,
49  DtSimManager* simManager,
50  DtComponentDescriptor* desc = 0,
51  DtReaderWriterRegistry* parentRegistry = 0);
52 
53 
55  virtual ~DtBallisticGun();
56 
57  virtual bool init();
58 
65  virtual void initPendingDetonations();
66 
69  virtual DtString type() const;
70 
72  virtual void preFirstTickInit();
73 
78  virtual void tick();
79 
86  virtual void fire(int roundsToFire, bool computePHit);
87 
99  virtual bool checkHitProbability(const DtEntityType& type, DtReal
100  range);
101 
108  virtual double hitProbabilityModifier(const DtEntityType& type, DtReal
109  range);
110 
118  virtual DtFireInteraction * createFireInteraction(const int rounds);
119 
140  virtual DtDetonationInteraction * createDetonationInteraction(
141  DtTime& detTime, bool assureMiss = false);
142 
151  virtual void getMissLocation(DtVector gunPosition,
152  DtVrfObjectStateRepository *intendedTargetSR, double muzzleSpeed,
153  DtVector& missLocation, DtVector& velocityVector,
154  DtDetonationResult& detonationResult,
155  DtVrfObject** target);
156 
171  virtual void scheduleDetonation(DtDetonationInteraction * detInter,
172  DtTime detTime);
173 
174  virtual DtString probabilityString() const;
175 
177  virtual DtVector calculateMuzzlePosition() const;
178 
184  virtual DtDetonationInteraction * createDetonationInteraction(
185  const DtDetonationDescriptor& desc, DtTime& detTime);
186 
189  virtual DtDetonationDescriptor* createDetonationDescriptor(
190  DtDetonationInteraction* detInter, DtTime simTime);
191 
194  virtual double maxGunRange() const;
195 
196 public:
197 
205  static void detonationCallback(DtTimer * timer);
206 
210  static DtSimComponent * creator(const DtString& name,
211  DtVrfObject* owner,
212  DtSimManager* simManager,
213  DtComponentDescriptor* desc = 0,
214  DtReaderWriterRegistry* parentRegistry = 0);
215 
217  static void objectAddedCb(DtVrfObject * vrfObject, void * usr);
218 
219 protected:
220 
222  virtual bool createPortGroups();
223 
225  virtual bool createPorts();
226 
232  virtual bool createPSR();
233 
238  virtual void processObjectAdded(DtVrfObject * vrfObject);
239 
241  virtual void addRangeItems();
242 
243 protected:
244 
246  DtBallisticGun();
247 
249  DtBallisticGun(const DtBallisticGun & orig);
250 
252  const DtBallisticGun & operator=(const DtBallisticGun & orig);
253 
254 protected:
256  DtEntityIdentifier myObjectId;
257 
262 
265 
269  DtEventId myCurrentEventId;
271 
272  DtList myTimerList;
273  DtArtPartType myGunArtPart;
274 
278 
281 
285 
293 
303 
310 
320 
322 };
323 

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)