VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
emitterSystemStateComponent.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 #include <tbb/spin_mutex.h>
11 #include <queue>
12 #include <vrfutil/rwUUID.h>
13 #include <matrix/vlVector.h>
14 #include <set>
15 
16 namespace makVrf
17 {
18  struct DtEmitterSystemBeamStateData;
19  class DtEmitterSystemStateComponent;
20 
21  typedef bool(*DtVerifyTrackJamTargetCallback)(const DtUUID& target, const DtEmitterSystemBeamStateData& beam, void * usr);
22 
25  {
26  enum BeamType
27  {
28  RegularBeam = -1,
29  RadarBeam = 1,
30  TrackBeam = 1,
31  JamBeam = 0
32  };
33 
35  : myEmitterNumber(0)
36  , myBeamId(0)
37  , myBeamType(-1)
38  , myJammingModeSequence(0)
39  , myFrequency(0.)
40  , myFrequencyRange(0.)
41  , myERP(0.)
42  , myAzimuthCenter(0.)
43  , myAzimuthSweep(0.)
44  , myElevationCenter(0.)
45  , myElevationSweep(0.)
46  , myPRF(0.)
47  , myPulseWidth(0.)
48  , mySweepSync(0.)
49  , myBeamParameterIndex(0)
50  , myBeamFunction(0)
51  , myHighDensity(false)
52  {
53  }
54 
56  : myEmitterNumber(orig.myEmitterNumber)
57  , myBeamId(orig.myBeamId)
58  , myBeamType(orig.myBeamType)
59  , myJammingModeSequence(orig.myJammingModeSequence)
60  , myFrequency(orig.myFrequency)
61  , myFrequencyRange(orig.myFrequencyRange)
62  , myERP(orig.myERP)
63  , myAzimuthCenter(orig.myAzimuthCenter)
64  , myAzimuthSweep(orig.myAzimuthSweep)
65  , myElevationCenter(orig.myElevationCenter)
66  , myElevationSweep(orig.myElevationSweep)
67  , myPRF(orig.myPRF)
68  , myPulseWidth(orig.myPulseWidth)
69  , mySweepSync(orig.mySweepSync)
70  , myBeamParameterIndex(orig.myBeamParameterIndex)
71  , myBeamFunction(orig.myBeamFunction)
72  , myHighDensity(orig.myHighDensity)
73  , myTrackJamTargets(orig.myTrackJamTargets)
74  {
75  }
76 
78  {
79  myEmitterNumber = rhs.myEmitterNumber;
80  myBeamId = rhs.myBeamId;
81  myBeamType = rhs.myBeamType;
82  myJammingModeSequence = rhs.myJammingModeSequence;
83  myFrequency = rhs.myFrequency;
84  myFrequencyRange = rhs.myFrequencyRange;
85  myERP = rhs.myERP;
86  myAzimuthCenter = rhs.myAzimuthCenter;
87  myAzimuthSweep = rhs.myAzimuthSweep;
88  myElevationCenter = rhs.myElevationCenter;
89  myElevationSweep = rhs.myElevationSweep;
90  myPRF = rhs.myPRF;
91  myPulseWidth = rhs.myPulseWidth;
92  mySweepSync = rhs.mySweepSync;
93  myBeamParameterIndex = rhs.myBeamParameterIndex;
94  myBeamFunction = rhs.myBeamFunction;
95  myHighDensity = rhs.myHighDensity;
96  myTrackJamTargets = rhs.myTrackJamTargets;
97 
98  return *this;
99  }
100 
102  {
103  return ((myEmitterNumber == rhs.myEmitterNumber) &&
104  (myBeamId == rhs.myBeamId) &&
105  (myBeamType == rhs.myBeamType) &&
106  (myJammingModeSequence == rhs.myJammingModeSequence) &&
107  (myFrequency == rhs.myFrequency) &&
108  (myFrequencyRange == rhs.myFrequencyRange) &&
109  (myERP == rhs.myERP) &&
110  (myAzimuthCenter == rhs.myAzimuthCenter) &&
111  (myAzimuthSweep == rhs.myAzimuthSweep) &&
112  (myElevationCenter == rhs.myElevationCenter) &&
113  (myElevationSweep == rhs.myElevationSweep) &&
114  (myPRF == rhs.myPRF) &&
115  (myPulseWidth == rhs.myPulseWidth) &&
116  (mySweepSync == rhs.mySweepSync) &&
117  (myBeamParameterIndex == rhs.myBeamParameterIndex) &&
118  (myBeamFunction == rhs.myBeamFunction) &&
119  (myHighDensity == rhs.myHighDensity) &&
120  (myTrackJamTargets == rhs.myTrackJamTargets));
121  }
122 
123  bool operator!=(const DtEmitterSystemBeamStateData& rhs) const { return !(*this == rhs); };
124 
125  DEFINE_ACCESSOR_MUTATOR(unsigned short, beamId, BeamId)
126  DEFINE_ACCESSOR_MUTATOR(unsigned int, emitterNumber, EmitterNumber)
127  DEFINE_ACCESSOR_MUTATOR(int, beamType, BeamType)
128  DEFINE_ACCESSOR_MUTATOR(unsigned int, jammingModeSequence, JammingModeSequence)
129  DEFINE_ACCESSOR_MUTATOR(double, frequency, Frequency)
130  DEFINE_ACCESSOR_MUTATOR(double, frequencyRange, FrequencyRange)
131  DEFINE_ACCESSOR_MUTATOR(double, ERP, ERP)
132  DEFINE_ACCESSOR_MUTATOR(double, azimuthCenter, AzimuthCenter)
133  DEFINE_ACCESSOR_MUTATOR(double, azimuthSweep, AzimuthSweep)
134  DEFINE_ACCESSOR_MUTATOR(double, elevationCenter, ElevationCenter)
135  DEFINE_ACCESSOR_MUTATOR(double, elevationSweep, ElevationSweep)
136  DEFINE_ACCESSOR_MUTATOR(double, PRF, PRF)
137  DEFINE_ACCESSOR_MUTATOR(double, pulseWidth, PulseWidth)
138  DEFINE_ACCESSOR_MUTATOR(double, sweepSync, SweepSync)
139  DEFINE_ACCESSOR_MUTATOR(unsigned int, beamParameterIndex, BeamParameterIndex)
140  DEFINE_ACCESSOR_MUTATOR(unsigned int, beamFunction, BeamFunction)
141  DEFINE_ACCESSOR_MUTATOR(bool, highDensity, HighDensity)
142 
143  void addTrackJamTarget(const DtUUID& s) { myTrackJamTargets.insert(s); };
144  void removeTrackJamTarget(const DtUUID& s) { myTrackJamTargets.erase(s); };
145  const std::set<DtUUID>& trackJamTargets() const { return myTrackJamTargets; };
146  bool hasTrackJamTarget(const DtUUID& s) const { return (myTrackJamTargets.find(s) != myTrackJamTargets.end()); };
147  void clearTrackJamTargets() { myTrackJamTargets.clear(); };
148  void setTrackJamTargets(const std::set<DtUUID>& t) { myTrackJamTargets = t; };
149 
150  protected:
151  unsigned short myBeamId;
152  unsigned int myEmitterNumber;
154  unsigned int myJammingModeSequence;
155  double myFrequency;
157  double myERP;
162  double myPRF;
163  double myPulseWidth;
164  double mySweepSync;
165  unsigned int myBeamParameterIndex;
166  unsigned int myBeamFunction;
168  std::set<DtUUID> myTrackJamTargets;
169  };
170 
172  {
174  {
175  public:
177  : nextId(0)
178  {};
179 
181  : beams(orig.beams)
182  {
183  };
184 
186  {
187  beams = rhs.beams;
188 
189  return *this;
190  }
191 
192  int size() const
193  {
194  return beams.size();
195  }
196 
197  DtEmitterSystemBeamStateData* operator[](unsigned short beamId)
198  {
199  std::vector<DtEmitterSystemBeamStateData>::iterator iter = beams.begin();
200  std::vector<DtEmitterSystemBeamStateData>::iterator end = beams.end();
201  while (iter != end)
202  {
203  if (iter->beamId() == beamId)
204  {
205  return &(*iter);
206  }
207 
208  ++iter;
209  }
210 
211  return 0;
212  }
213 
214  const DtEmitterSystemBeamStateData* operator[](unsigned short beamId) const
215  {
216  std::vector<DtEmitterSystemBeamStateData>::const_iterator iter = beams.begin();
217  std::vector<DtEmitterSystemBeamStateData>::const_iterator end = beams.end();
218  while (iter != end)
219  {
220  if (iter->beamId() == beamId)
221  {
222  return &(*iter);
223  }
224 
225  ++iter;
226  }
227 
228  return 0;
229  }
230 
231  void removeBeam(unsigned int beamIndex)
232  {
233  std::vector<DtEmitterSystemBeamStateData>::iterator iter = beams.begin();
234  std::vector<DtEmitterSystemBeamStateData>::iterator end = beams.end();
235  while (iter != end)
236  {
237  if (iter->beamId() == beamIndex)
238  {
239  beams.erase(iter);
240  break;
241  }
242 
243  ++iter;
244  }
245  }
246 
248  {
249  return (beamsTrackingObject(type, gid).size() != 0);
250  }
251 
252  std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID& gid) const
253  {
254  std::vector<DtEmitterSystemBeamStateData>::const_iterator iter = beams.begin();
255  std::vector<DtEmitterSystemBeamStateData>::const_iterator end = beams.end();
256  std::vector<const DtEmitterSystemBeamStateData*> lst;
257 
258  while (iter != beams.end())
259  {
260  if ((iter->beamType() == type) && iter->hasTrackJamTarget(gid))
261  {
262  lst.push_back(&(*iter));
263  }
264 
265  ++iter;
266  }
267 
268  return lst;
269  }
270 
272  {
273  unsigned short id = nextBeamId();
274 
276  data.setBeamId(id);
277 
278  beams.push_back(data);
279 
280  return &beams[beams.size() - 1];
281  }
282 
283  unsigned short nextBeamId() const
284  {
285  return ++nextId;
286  }
287 
289  {
290  return (*this)[beamId];
291  }
292 
293  const DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) const
294  {
295  return (*this)[beamId];
296  }
297 
299  {
300  if (index < beams.size())
301  {
302  return &beams[index];
303  }
304 
305  return 0;
306  }
307 
308  const DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short index) const
309  {
310  if (index < beams.size())
311  {
312  return &beams[index];
313  }
314 
315  return 0;
316  }
317 
319  {
320  nextId = 0;
321  beams.clear();
322  }
323 
324  std::vector<DtEmitterSystemBeamStateData> beams;
325  mutable unsigned short nextId;
326  };
327 
329  : myOn(true)
330  , mySystemName(0)
331  , myEmitterFunction(0)
332  , myEmitterNumber(0xFFFFFFFF)
333  {
334  }
335 
337  : myOn(orig.myOn)
338  , mySystemName(orig.mySystemName)
339  , myEmitterFunction(orig.myEmitterFunction)
340  , myMountLocation(orig.myMountLocation)
341  , myBeamsList(orig.myBeamsList)
342  , myEmitterNumber(orig.myEmitterNumber)
343  , myGlobalId(orig.myGlobalId)
344  {
345  }
346 
348  {
349  myOn = rhs.myOn;
350  mySystemName = rhs.mySystemName;
351  myEmitterFunction = rhs.myEmitterFunction;
352  myMountLocation = rhs.myMountLocation;
353  myBeamsList = rhs.myBeamsList;
354  myEmitterNumber = rhs.myEmitterNumber;
355  myGlobalId = rhs.myGlobalId;
356 
357  return *this;
358  }
359 
361  {
362  return myBeamsList.beamByBeamId(beamId);
363  }
364 
365  const DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) const
366  {
367  return myBeamsList.beamByBeamId(beamId);
368  }
369 
371  {
372  return myBeamsList.beamByBeamIndex(beamId);
373  }
374 
375  const DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamId) const
376  {
377  return myBeamsList.beamByBeamIndex(beamId);
378  }
379 
380  unsigned int numBeams() const { return myBeamsList.size(); };
381  DtEmitterSystemBeamStateData* addBeam() { return myBeamsList.addBeam(); };
382  DtEmitterSystemBeams& beams() { return myBeamsList; };
383  const DtEmitterSystemBeams& beams() const { return myBeamsList; };
384  const std::vector<DtEmitterSystemBeamStateData>& rawBeams() const { return myBeamsList.beams; };
385  std::vector<DtEmitterSystemBeamStateData>& rawBeams() { return myBeamsList.beams; };
386 
387  bool tracking(const DtUUID& gid) const
388  {
389  return myBeamsList.tracking(DtEmitterSystemBeamStateData::TrackBeam, gid);
390  }
391 
392  bool tracking(const DtUUID& gid)
393  {
394  return myBeamsList.tracking(DtEmitterSystemBeamStateData::TrackBeam, gid);
395  }
396 
397  std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID& gid) const
398  {
399  return myBeamsList.beamsTrackingObject(type, gid);
400  }
401 
402  std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(const DtUUID& gid) const
403  {
404  return myBeamsList.beamsTrackingObject(DtEmitterSystemBeamStateData::TrackBeam, gid);
405  }
406 
407  std::vector<const DtEmitterSystemBeamStateData*> beamsJammingObject(const DtUUID& gid) const
408  {
409  return myBeamsList.beamsTrackingObject(DtEmitterSystemBeamStateData::JamBeam, gid);
410  }
411 
412  bool jamming(const DtUUID& gid) const
413  {
414  return myBeamsList.tracking(DtEmitterSystemBeamStateData::JamBeam, gid);
415  }
416 
417  bool jamming(const DtUUID& gid)
418  {
419  return myBeamsList.tracking(DtEmitterSystemBeamStateData::JamBeam, gid);
420  }
421 
422  void removeAllBeams() { myBeamsList.removeAllBeams(); };
423  void removeBeam(unsigned short beamId) { myBeamsList.removeBeam(beamId); };
424 
425  DEFINE_ACCESSOR_MUTATOR(DtString, globalId, GlobalId)
426  DEFINE_ACCESSOR_MUTATOR(bool, on, On)
427  DEFINE_ACCESSOR_MUTATOR(unsigned int, emitterNumber, EmitterNumber)
428  DEFINE_ACCESSOR_MUTATOR(unsigned int, systemName, SystemName)
429  DEFINE_ACCESSOR_MUTATOR(unsigned int, emitterFunction, EmitterFunction)
430  DEFINE_ACCESSOR_MUTATOR(DtVector, mountLocation, MountLocation)
431 
432  protected:
433  DtString myGlobalId;
434  bool myOn;
435  unsigned int myEmitterNumber;
436  unsigned int mySystemName;
437  unsigned int myEmitterFunction;
438  DtVector myMountLocation;
439  DtEmitterSystemBeams myBeamsList;
440  };
441 
447  {
448  public:
450 
452  : DtFrameStateInterface(storage)
453  {
454  }
455 
458  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned int, systemName, SystemName)
459  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(unsigned int, emitterFunction, EmitterFunction)
461  UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(DtVector, mountLocation, MountLocation)
462  UNDEFINED_METHOD(void, removeAllBeams)
463  UNDEFINED_METHOD(void, removeBeam, unsigned short beamId)
464  UNDEFINED_RETURNVALUE_ACCESSOR(unsigned int, numBeams)
466  virtual unsigned int emitterNumber() const { throw DtUnimplementedMethod("The const emitterNumber() const method is unimplemented"); };
467  virtual void setEmitterNumber(const unsigned int&) { throw DtUnimplementedMethod("The const setEmitterNumber() const method is unimplemented"); };
468  virtual const DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamIndex) const { throw DtUnimplementedMethod("The const beamByBeamIndex() const method is unimplemented"); };
469  virtual const DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) const { throw DtUnimplementedMethod("The const beamByBeamId() const method is unimplemented"); };
470  virtual DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamIndex) { throw DtUnimplementedMethod("The beamByBeamIndex() method is unimplemented"); };
471  virtual DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) { throw DtUnimplementedMethod("The beamByBeamId() method is unimplemented"); };
472  UNDEFINED_RETURNREF_ACCESSORS(std::vector<DtEmitterSystemBeamStateData>, beams)
473  virtual const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID& gid) const { throw DtUnimplementedMethod("The const beamsTrackingObject() const method is unimplemented"); };
474  virtual const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(const DtUUID& gid) const { throw DtUnimplementedMethod("The const beamsTrackingObject() const method is unimplemented"); };
475  virtual const std::vector<const DtEmitterSystemBeamStateData*> beamsJammingObject(const DtUUID& gid) const { throw DtUnimplementedMethod("The const beamsJammingObject() const method is unimplemented"); };
477  DtVerifyTrackJamTargetCallback = 0, void* userData = 0) { throw DtUnimplementedMethod("The addTrackJamTarget(const DtUUID& globalId, DtEmitterSystemBeamStateData::BeamType) const method is unimplemented"); };
478  virtual void removeTrackJamTarget(const DtUUID& globalId, DtEmitterSystemBeamStateData::BeamType) { throw DtUnimplementedMethod("The removeTrackJamTarget(const DtUUID& globalId, DtEmitterSystemBeamStateData::BeamType) const method is unimplemented"); };
479 
480  UNDEFINED_CONST_METHOD(bool, tracking, const DtUUID& gid)
481  UNDEFINED_CONST_METHOD(bool, jamming, const DtUUID& gid)
482  };
483 
486  {
487  public:
489 
491  const DtEmitterSystemStateComponentData& frameState() const { return myData; };
493 
494  const std::vector<DtEmitterSystemBeamStateData>& beams() const;
495  std::vector<DtEmitterSystemBeamStateData>& beams();
496 
497  const DtUUID hostId() const;
498 
499  const DtString& globalId() const;
500  void setGlobalId(const DtString&);
501 
502  const unsigned int& systemName() const;
503  void setSystemName(const unsigned int&);
504 
505  unsigned int emitterNumber() const;
506  void setEmitterNumber(const unsigned int&);
507 
508  const unsigned int& emitterFunction() const;
509  void setEmitterFunction(const unsigned int&);
510 
511  const bool& on() const;
512  void setOn(const bool&);
513 
514  const DtVector& mountLocation() const;
515  void setMountLocation(const DtVector&);
516 
517  const unsigned int numBeams() const;
518 
519  const DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamIndex) const;
520  DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamIndex);
521 
522  const DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) const;
523  DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId);
524 
525  void removeAllBeams();
526  void removeBeam(unsigned short beamId);
527  DtEmitterSystemBeamStateData* addBeam();
528 
529  const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID& gid) const;
530  const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(const DtUUID& gid) const;
531  const std::vector<const DtEmitterSystemBeamStateData*> beamsJammingObject(const DtUUID& gid) const;
532 
533  bool tracking(const DtUUID& gid) const;
534  bool jamming(const DtUUID& gid) const;
535 
536  void addTrackJamTarget(const DtUUID& globalId, DtEmitterSystemBeamStateData::BeamType, DtVerifyTrackJamTargetCallback = 0, void* userData = 0);
537  void removeTrackJamTarget(const DtUUID& globalId, DtEmitterSystemBeamStateData::BeamType);
538 
540  virtual void makeWritable() {};
541 
543  virtual void makeReadOnly() {};
544 
545  protected:
546  unsigned short myNextBeamId;
549  };
550 
553  {
554  public:
556 
558  const DtEmitterSystemStateComponentData& frameState() const { return myData; };
559 
560  const std::vector<DtEmitterSystemBeamStateData>& beams() const;
561  const DtUUID hostId() const;
562  const DtString& globalId() const;
563  const unsigned int& systemName() const;
564  unsigned int emitterNumber() const;
565  const unsigned int& emitterFunction() const;
566  const bool& on() const;
567  const DtVector& mountLocation() const;
568  const unsigned int numBeams() const;
569  const DtEmitterSystemBeamStateData* beamByBeamIndex(unsigned short beamIndex) const;
570  const DtEmitterSystemBeamStateData* beamByBeamId(unsigned short beamId) const;
571  bool tracking(const DtUUID& gid) const;
572  bool jamming(const DtUUID& gid) const;
573  const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID& gid) const;
574  const std::vector<const DtEmitterSystemBeamStateData*> beamsTrackingObject(const DtUUID& gid) const;
575  const std::vector<const DtEmitterSystemBeamStateData*> beamsJammingObject(const DtUUID& gid) const;
576 
577  protected:
580  {
581  myData = data;
582  }
583 
584  protected:
587  };
588 
592  {
593  public:
595 
596  bool isDoubleBuffered() { return true; };
597  const DtFrameStateInterface* currentFrameState() const { return &myCurrentFrameState; }
598  virtual DtFrameStateInterface* nextFrameState() { return &myNextFrameState; };
599  virtual const DtFrameStateInterface* nextFrameState() const { return &myNextFrameState; };
600 
602  virtual bool forceAdvance();
603 
605  {
606  if (myNextFrameState.isWritable())
607  {
608  myCurrentFrameState.advanceFrame(myNextFrameState.frameState());
609  }
610 
611  myCurrentFrameState.emitComponentUpdated();
612  }
613 
615  {
616  myCurrentFrameState.updateStateData(sd);
617  myNextFrameState.updateStateData(sd);
618  }
619 
620  virtual void aboutToBeDeleted() override
621  {
623  myCurrentFrameState.aboutToBeDeleted();
624  myNextFrameState.aboutToBeDeleted();
625  }
626 
627  protected:
630  };
631 
635 }
void updateDataStorage()
Implement to update data storage. Called from advanceFrame.
Definition: emitterSystemStateComponent.h:604
std::vector< DtEmitterSystemBeamStateData > beams
Definition: emitterSystemStateComponent.h:324
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
unsigned int mySystemName
Definition: emitterSystemStateComponent.h:436
const std::vector< DtEmitterSystemBeamStateData > & rawBeams() const
Definition: emitterSystemStateComponent.h:384
std::set< DtUUID > myTrackJamTargets
Definition: emitterSystemStateComponent.h:168
DtStateData * myStateData
Definition: emitterSystemStateComponent.h:585
void removeAllBeams()
Definition: emitterSystemStateComponent.h:318
virtual const DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId) const
Definition: emitterSystemStateComponent.h:469
bool(* DtVerifyTrackJamTargetCallback)(const DtUUID &target, const DtEmitterSystemBeamStateData &beam, void *usr)
Definition: emitterSystemStateComponent.h:21
Definition: stateDataTypes.h:23
DtEmitterSystemBeamStateData * addBeam()
Definition: emitterSystemStateComponent.h:381
std::vector< const DtEmitterSystemBeamStateData * > beamsJammingObject(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:407
3) Define the current frame class. This will be used for read access.
Definition: emitterSystemStateComponent.h:552
DtEmitterSystemBeamStateData * operator[](unsigned short beamId)
Definition: emitterSystemStateComponent.h:197
unsigned short myBeamId
Definition: emitterSystemStateComponent.h:148
#define UNDEFINED_METHOD(Type, Method,...)
Definition: doubleBufferedDataStorage.h:68
bool operator!=(const DtEmitterSystemBeamStateData &rhs) const
Definition: emitterSystemStateComponent.h:123
std::vector< const DtEmitterSystemBeamStateData * > beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:252
Definition: emitterSystemStateComponent.h:173
DtString myGlobalId
Definition: emitterSystemStateComponent.h:423
double myAzimuthSweep
Definition: emitterSystemStateComponent.h:159
Definition: emitterSystemStateComponent.h:30
virtual void makeWritable()
Override to make component writable.
Definition: emitterSystemStateComponent.h:540
virtual const DtEmitterSystemBeamStateData * beamByBeamIndex(unsigned short beamIndex) const
Definition: emitterSystemStateComponent.h:468
std::vector< const DtEmitterSystemBeamStateData * > beamsTrackingObject(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:402
double myFrequency
Definition: emitterSystemStateComponent.h:155
double myPRF
Definition: emitterSystemStateComponent.h:162
bool myOn
This ID will uniquely identify the emitter. Patterned after the DIS/HLA global id.
Definition: emitterSystemStateComponent.h:434
Definition: stateComponent.h:257
const DtEmitterSystemBeamStateData * operator[](unsigned short beamId) const
Definition: emitterSystemStateComponent.h:214
DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId)
Definition: emitterSystemStateComponent.h:288
void removeBeam(unsigned short beamId)
Definition: emitterSystemStateComponent.h:423
voidpf void uLong size
Definition: ioapi.h:39
virtual void aboutToBeDeleted() override
Definition: emitterSystemStateComponent.h:620
unsigned int myEmitterNumber
Definition: emitterSystemStateComponent.h:435
DtEmitterSystemStateComponentData myData
Definition: emitterSystemStateComponent.h:548
#define UNDEFINED_RETURNREF_ACCESSORS(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:40
#define UNDEFINED_RETURNVALUE_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:31
virtual const DtFrameStateInterface * nextFrameState() const
Definition: emitterSystemStateComponent.h:599
unsigned short nextId
Definition: emitterSystemStateComponent.h:325
virtual void removeTrackJamTarget(const DtUUID &globalId, DtEmitterSystemBeamStateData::BeamType)
Definition: emitterSystemStateComponent.h:478
virtual const std::vector< const DtEmitterSystemBeamStateData * > beamsTrackingObject(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:474
Contains the DtUUID class declaration.
bool myHighDensity
Definition: emitterSystemStateComponent.h:167
DtEmitterSystemBeams myBeamsList
Definition: emitterSystemStateComponent.h:439
DtEmitterSystemBeamStateData(const DtEmitterSystemBeamStateData &orig)
Definition: emitterSystemStateComponent.h:55
void removeAllBeams()
Definition: emitterSystemStateComponent.h:422
DtEmitterSystemBeamStateData & operator=(const DtEmitterSystemBeamStateData &rhs)
Definition: emitterSystemStateComponent.h:77
virtual void addTrackJamTarget(const DtUUID &globalId, DtEmitterSystemBeamStateData::BeamType, DtVerifyTrackJamTargetCallback=0, void *userData=0)
Definition: emitterSystemStateComponent.h:476
Definition: emitterSystemStateComponent.h:171
bool tracking(DtEmitterSystemBeamStateData::BeamType type, const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:247
int myBeamType
Definition: emitterSystemStateComponent.h:153
DtEmitterSystemStateComponentData & operator=(const DtEmitterSystemStateComponentData &rhs)
Definition: emitterSystemStateComponent.h:347
virtual DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId)
Definition: emitterSystemStateComponent.h:471
std::vector< const DtEmitterSystemBeamStateData * > beamsTrackingObject(DtEmitterSystemBeamStateData::BeamType type, const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:397
DtEmitterSystemBeamStateData()
Definition: emitterSystemStateComponent.h:34
const DtEmitterSystemStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: emitterSystemStateComponent.h:491
DtStateData * myStateData
Definition: emitterSystemStateComponent.h:547
DtEmitterSystemBeams & operator=(const DtEmitterSystemBeams &rhs)
Definition: emitterSystemStateComponent.h:185
unsigned int myBeamFunction
Definition: emitterSystemStateComponent.h:166
DtVector myMountLocation
Definition: emitterSystemStateComponent.h:438
DtEmitterSystemStateComponentData myData
Definition: emitterSystemStateComponent.h:586
void advanceFrame(const DtEmitterSystemStateComponentData &data)
Definition: emitterSystemStateComponent.h:579
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: emitterSystemStateComponent.h:591
DtEmitterSystemBeamStateData * beamByBeamIndex(unsigned short index)
Definition: emitterSystemStateComponent.h:298
#define UNDEFINED_CONST_METHOD(Type, Method,...)
Definition: doubleBufferedDataStorage.h:65
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
unsigned int myJammingModeSequence
Definition: emitterSystemStateComponent.h:154
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:219
virtual const std::vector< const DtEmitterSystemBeamStateData * > beamsJammingObject(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:475
bool jamming(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:412
bool operator==(const DtEmitterSystemBeamStateData &rhs) const
Definition: emitterSystemStateComponent.h:101
double myElevationSweep
Definition: emitterSystemStateComponent.h:161
double myPulseWidth
Definition: emitterSystemStateComponent.h:163
DtEmitterSystemBeams(const DtEmitterSystemBeams &orig)
Definition: emitterSystemStateComponent.h:180
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:370
double mySweepSync
Definition: emitterSystemStateComponent.h:164
void setTrackJamTargets(const std::set< DtUUID > &t)
Definition: emitterSystemStateComponent.h:148
int size() const
Definition: emitterSystemStateComponent.h:192
bool isDoubleBuffered()
Definition: emitterSystemStateComponent.h:596
DtEmitterSystemStateComponentNextFrame myNextFrameState
Definition: emitterSystemStateComponent.h:629
DtEmitterSystemStateComponentData(const DtEmitterSystemStateComponentData &orig)
Definition: emitterSystemStateComponent.h:336
const DtEmitterSystemBeamStateData * beamByBeamIndex(unsigned short beamId) const
Definition: emitterSystemStateComponent.h:375
BeamType
Definition: emitterSystemStateComponent.h:26
const DtEmitterSystemStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: emitterSystemStateComponent.h:558
DtEmitterSystemStateComponentData & frameState()
Definition: emitterSystemStateComponent.h:492
const DtEmitterSystemBeamStateData * beamByBeamIndex(unsigned short index) const
Definition: emitterSystemStateComponent.h:308
virtual void aboutToBeDeleted()
virtual DtEmitterSystemBeamStateData * beamByBeamIndex(unsigned short beamIndex)
Definition: emitterSystemStateComponent.h:470
const DtEmitterSystemBeams & beams() const
Definition: emitterSystemStateComponent.h:383
unsigned int myEmitterNumber
Definition: emitterSystemStateComponent.h:152
bool jamming(const DtUUID &gid)
Definition: emitterSystemStateComponent.h:417
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: emitterSystemStateComponent.h:446
std::vector< DtEmitterSystemBeamStateData > & rawBeams()
Definition: emitterSystemStateComponent.h:385
DtEmitterSystemBeams & beams()
Definition: emitterSystemStateComponent.h:382
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
bool tracking(const DtUUID &gid)
Definition: emitterSystemStateComponent.h:392
DtEmitterSystemBeamStateData * addBeam()
Definition: emitterSystemStateComponent.h:271
double myERP
Definition: emitterSystemStateComponent.h:157
const DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId) const
Definition: emitterSystemStateComponent.h:365
DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId)
Definition: emitterSystemStateComponent.h:360
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
static const char * SystemName
Definition: vrfXmlTypes.h:48
2) Define the next frame class. This will be used for write access.
Definition: emitterSystemStateComponent.h:485
bool hasTrackJamTarget(const DtUUID &s) const
Definition: emitterSystemStateComponent.h:146
const DtEmitterSystemBeamStateData * beamByBeamId(unsigned short beamId) const
Definition: emitterSystemStateComponent.h:293
unsigned short nextBeamId() const
Definition: emitterSystemStateComponent.h:283
virtual void setEmitterNumber(const unsigned int &)
Definition: emitterSystemStateComponent.h:467
DtEmitterSystemStateComponentCurrentFrame myCurrentFrameState
Definition: emitterSystemStateComponent.h:628
double myAzimuthCenter
Definition: emitterSystemStateComponent.h:158
unsigned int myEmitterFunction
Definition: emitterSystemStateComponent.h:437
void removeTrackJamTarget(const DtUUID &s)
Definition: emitterSystemStateComponent.h:144
unsigned int numBeams() const
Definition: emitterSystemStateComponent.h:380
DtStateComponentCreator< DtEmitterSystemStateComponentImplementation > DtEmitterSystemStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: emitterSystemStateComponent.h:634
#define DT_DLL_vrfStateData
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfStateDataDefines.h:26
unsigned int myBeamParameterIndex
Definition: emitterSystemStateComponent.h:165
double myFrequencyRange
Definition: emitterSystemStateComponent.h:156
virtual DtFrameStateInterface * nextFrameState()
Definition: emitterSystemStateComponent.h:598
const DtFrameStateInterface * currentFrameState() const
Definition: emitterSystemStateComponent.h:597
Contains the DtStateComponent class declaration.
DtEmitterSystemBeamStateData * beamByBeamIndex(unsigned short beamId)
Definition: emitterSystemStateComponent.h:370
void removeBeam(unsigned int beamIndex)
Definition: emitterSystemStateComponent.h:231
void clearTrackJamTargets()
Definition: emitterSystemStateComponent.h:147
The DtEmitterSystemStateComponentList is a collection of emitter systems and the beams they represent...
Definition: emitterSystemStateComponent.h:24
Definition: emitterSystemStateComponent.h:31
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:282
bool tracking(const DtUUID &gid) const
Definition: emitterSystemStateComponent.h:387
const std::set< DtUUID > & trackJamTargets() const
Definition: emitterSystemStateComponent.h:145
DtEmitterSystemStateComponentData()
Definition: emitterSystemStateComponent.h:328
void updateStateData(DtStateData *sd)
Implement to update data storage to the new state data.
Definition: emitterSystemStateComponent.h:614
DtEmitterSystemBeams()
Definition: emitterSystemStateComponent.h:176
double myElevationCenter
Definition: emitterSystemStateComponent.h:160

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)