VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
aircraftClutterAreaController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 #include <vrfutil/adsbTrack.h>
12 
15 
19 {
20 public:
21 
22  using DtAddressList = std::list<DtAdsbDataServiceInterface::DtIcaoAddress>;
25  using DtBorderCrossing = std::pair<double, DtVector>;
26  using DtBorderCrossingList = std::vector<DtBorderCrossing>;
27  using DtTrackEventMap = std::multimap<double, DtAddress>;
28 
30  {
38  GeneralPhase
39  };
40 
43  DtSimulationServices* simManager, DtComponentDescriptor* desc=0, DtReaderWriterRegistry *parentRegistry=0);
44 
46  virtual ~DtAircraftClutterAreaController() override;
47 
49  virtual bool init() override;
50 
52  virtual bool postAddComponentsInit() override;
53 
55  virtual void preFirstTickInit() override;
56 
58  virtual const char* type() const override;
59 
61  virtual void registerTaskMsgCallbacks() override;
62 
64  virtual void tick() override;
65 
67  static void setMaxEntitiesCallback(DtSimMessage * msg, void * usr);
68  virtual void processSetMaxEntities(DtSimMessage* msg);
69 
71  static DtSimComponent* creator(const DtString& name, DtLocalObject* owner, DtSimulationServices* simManager,
72  DtComponentDescriptor* desc = 0, DtReaderWriterRegistry* parentRegistry = 0);
73 
75  virtual bool taskVisualizationsActive() const override;
76 
77 protected:
78 
80  bool createPSR();
81 
83  virtual void requestPhaseTick();
84 
86  virtual void processTrackInfoPhaseTick();
87 
89  virtual void ownershipAcquisitionPhaseTick();
90 
92  virtual void creationPhaseTick();
93 
96  virtual void deletionPhaseTick();
97 
100  virtual void generalPhaseTick();
101 
103  virtual void requestTracksInArea();
104 
107  virtual bool processTrackAdditionEvents();
108 
111  virtual bool processTrackRemovalEvents();
112 
114  virtual void processTrackOwnershipResponse(const DtAddressSet& tracks);
115 
117  virtual void updateKnownTracks(const DtAddressSet& tracks);
118 
121  virtual void calculateAdditionAndRemovalTimes();
122 
125  virtual void calculateAddAndRemoveTimesForTrack(
126  const DtAddress trackId, const std::vector<DtVector>& areaWorldVertices,
127  const double requestPeriodEndSimTime);
128 
138  virtual void checkForAddAndRemoveEventsForPoint(
139  const DtAddress trackId,
140  const DtPointHandlePtr& pPtHandle,
141  const DtPointHandlePtr& pPreviousPtHandle,
142  const bool ignorePreviousPoint,
143  const std::vector<DtVector>& areaWorldVertices,
144  bool& isAlive
145  );
146 
152  virtual double calculateAdditionTimeAtPoint(
153  const DtAddress trackId,
154  const DtPointHandlePtr& pPtHandle,
155  const DtVector& ptLocalLocation,
156  const DtPointHandlePtr& pPreviousPtHandle,
157  const std::vector<DtVector>& areaWorldVertices,
158  const DtLocalVertexList& areaLocalVertices);
159 
165  virtual double calculateRemovalTimeAtPoint(const DtAddress trackId,
166  const DtPointHandlePtr& pPtHandle,
167  const DtVector& ptLocalLocation,
168  const bool isFlyingAtPt,
169  const DtPointHandlePtr& pPreviousPtHandle,
170  const std::vector<DtVector>& areaWorldVertices,
171  const DtLocalVertexList& areaLocalVertices);
172 
174  virtual bool requestTrackOwnership(DtAddressSet& tracks);
175 
177  virtual void releaseTrackOwnership(const DtAddressSet& tracks);
178 
180  virtual bool createEntitiesForTracks();
181 
184  virtual void overrideVisualMarkings(DtVrfLocalObjectCreateInformation& info, std::string iataCode = "Null");
185 
188  virtual void monitorNewEntities();
189 
191  virtual void processEntityDeleted(const DtSimObject* entity);
192 
194  virtual void processEntityPromoted(const DtSimObject* entity);
195 
197  void cleanupRemovedEntities();
198 
200  void recordPromotedEntities();
201 
203  virtual DtEntityType objectTypeForTrack(const DtTrackHandlePtr track) const;
204 
209  virtual std::string objectNameForTrack(const DtTrackHandlePtr track, const DtPointHandlePtr refPoint) const;
210 
215  virtual bool calculateTrackPositionAtTime(double simTime, const DtTrackHandlePtr track,
216  DtVector& worldLocation, double& heading, DtVector& velocity,
217  DtPointHandlePtr& previousPathPoint) const;
218 
223  virtual bool findLastBorderCrossingTime(const DtPointHandlePtr pt1,
224  const DtPointHandlePtr pt2, const std::vector<DtVector>& areaBorder,
225  const DtAdsbDataServiceInterface::DtIcaoAddress trackId, double& crossingTime);
226 
229  virtual bool locationNear2IsInside(const DtVector& location1, const DtVector& location2,
230  const DtLocalVertexList& areaVertices, Coordinate_System* coordSys);
231 
235  virtual void trackPositionAtPoint(const DtTrackHandlePtr track,
236  const DtPointHandlePtr point,
237  DtVector& worldLocation, double& heading, DtVector& worldVelocity) const;
238 
242  virtual void trackPositionOnGround(const DtPointHandlePtr point, DtVector& worldLocation,
243  double& heading, DtVector& worldVelocity) const;
244 
246  virtual void markAllEntitiesForDeletion();
247 
250  virtual void markEntitiesOutsideOfAreaForDeletion();
251 
254  virtual void markExcessEntitiesForDeletion();
255 
257  virtual void deleteMarkedEntities();
258 
260  virtual bool isTimeToRequestTracks(double simTime) const;
261 
263  virtual bool isTimeForTrackAdditionEvent(double simTime) const;
264 
266  virtual bool isTimeForTrackRemovalEvent(double simTime) const;
267 
269  virtual void logEntityCreationStatistics();
270 
272  virtual void updateTaskVisualizations() override;
273 
275  virtual void setPhase(ProcessingPhase);
276 
277 private:
284 
285 protected:
286 
288 
290 
292 
298 
302  std::list<DtUUID> myEntitiesToDelete;
303  std::list<DtUUID> myNewEntities;
304 
306 
307  tbb::spin_mutex myRemovedEntitiesMutex;
309 
310  tbb::spin_mutex myPromotedEntitiesMutex;
312 
316  mutable tbb::spin_mutex myExcludedModelsMutex;
317  mutable std::set<DtEntityType> excludedModels;
318 
319  using EntityDeletionSignalMap = std::map<DtAddress, boost::signals2::connection>;
321 
322  using EntityPromotedSignalMap = std::map<DtAddress, boost::signals2::connection>;
324 
328 
335 
339 
342  mutable std::vector<DtVector> myPreCreatePts;
343  mutable std::vector<DtVector> myPostCreatePts;
344  mutable std::vector<DtVector> myCreatePts;
345 
346  mutable std::vector<DtVector> myPreExitPts;
347  mutable std::vector<DtVector> myPostExitPts;
348  mutable std::vector<DtVector> myExitPts;
349 
350  mutable std::vector<DtVector> myPreEnterPts;
351  mutable std::vector<DtVector> myPostEnterPts;
352  mutable std::vector<DtVector> myEnterPts;
353 
355 };
356 
Definition: aircraftClutterAreaController.h:35
std::vector< DtBorderCrossing > DtBorderCrossingList
sim time and world location to cross a border
Definition: aircraftClutterAreaController.h:26
std::list< DtUUID > myEntitiesToDelete
Definition: aircraftClutterAreaController.h:302
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtAircraftClutterAreaController is a controller that runs on an area tactical graphic to create and m...
Definition: aircraftClutterAreaController.h:18
bool myIsProcessingInitialData
Indicates whether the calculateAdditionAndRemovalTimes function is looking at the first data that the...
Definition: aircraftClutterAreaController.h:334
std::set< DtEntityType > excludedModels
Definition: aircraftClutterAreaController.h:317
Definition: aircraftClutterAreaController.h:31
bool myDebugEnabled
The following are for debug purposes only.
Definition: aircraftClutterAreaController.h:341
ProcessingPhase myPhase
Definition: aircraftClutterAreaController.h:329
virtual bool postAddComponentsInit() override
Calls enableTaskTypes()
virtual const char * type() const override=0
Returns a string identifies the class type of component. Type values are defined in compTypes...
Definition: aircraftClutterAreaController.h:33
std::map< DtAddress, boost::signals2::connection > EntityDeletionSignalMap
Definition: aircraftClutterAreaController.h:319
virtual void registerTaskMsgCallbacks()
DtAddressSet myKnownTracksToProcess
Definition: aircraftClutterAreaController.h:291
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:22
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
Definition: readerWriterRegistry.h:39
DtTrackEventMap myTrackAdditionTimes
Map of sim time to track ID. When to add or delete tracks.
Definition: aircraftClutterAreaController.h:295
DtTrackEventMap myDelayedAdditionTimes
Definition: aircraftClutterAreaController.h:297
The DtLocalObjectCreateInformation class is a subset of the information used in the DtIfCreateVrfObje...
Definition: vrfLocalObjectCreateInformation.h:26
virtual bool taskVisualizationsActive() const override
Returns true if task visualizations are currently active for this component. Default behavior for tas...
DtTrackEventMap myTrackRemovalTimes
Definition: aircraftClutterAreaController.h:296
std::vector< DtVector > myPreCreatePts
Definition: aircraftClutterAreaController.h:342
std::vector< DtVector > myEnterPts
Definition: aircraftClutterAreaController.h:352
DtAddressSet myTracksRequested
Definition: aircraftClutterAreaController.h:300
Definition: aircraftClutterAreaController.h:32
std::map< DtAddress, boost::signals2::connection > EntityPromotedSignalMap
Definition: aircraftClutterAreaController.h:322
DtAddressSet myPromotedEntities
Definition: aircraftClutterAreaController.h:311
std::vector< DtVector > myPostEnterPts
Definition: aircraftClutterAreaController.h:351
std::vector< DtVector > myPostCreatePts
Definition: aircraftClutterAreaController.h:343
DtAddressSet myRemovedEntities
Definition: aircraftClutterAreaController.h:308
std::vector< DtVector > myCreatePts
Definition: aircraftClutterAreaController.h:344
virtual void updateTaskVisualizations()
Called to update task visualizations after every tick. Implemented by subclasses. ...
Definition: simComponent.h:443
virtual bool init() override
Calls setRadio()
ProcessingPhase
Definition: aircraftClutterAreaController.h:29
Definition: coordSystem.h:54
DtAddressSet myTracksToRequest
Definition: aircraftClutterAreaController.h:299
std::list< DtAdsbDataServiceInterface::DtIcaoAddress > DtAddressList
Definition: aircraftClutterAreaController.h:22
std::shared_ptr< DtAdsbTrackHandle > DtTrackHandlePtr
Shared_ptr so that copy constructor will work on the pointer without destroying the rhs...
Definition: adsbDataServiceInterface.h:60
File: simMsg.h.
Definition: simMessage.h:35
DtAdsbDataServiceInterface::DtAdsbDataJob::Ptr myAdsbOwnershipReq
Definition: aircraftClutterAreaController.h:327
std::vector< DtVector > myExitPts
Definition: aircraftClutterAreaController.h:348
virtual void tick()
This gives the thread of control to the component. The component is ticked once each simulation from ...
unsigned myNumberSkippedRecently
Definition: aircraftClutterAreaController.h:338
std::multimap< double, DtAddress > DtTrackEventMap
Definition: aircraftClutterAreaController.h:27
std::vector< DtVector > myPostExitPts
Definition: aircraftClutterAreaController.h:347
Definition: aircraftClutterAreaController.h:37
Definition: aircraftClutterAreaController.h:36
tbb::spin_mutex myPromotedEntitiesMutex
Definition: aircraftClutterAreaController.h:310
tbb::spin_mutex myExcludedModelsMutex
A cache of object type patterns that are to be excluded. An empty set is also valid. This is compared against to limit the object types possible to be represented for a track.
Definition: aircraftClutterAreaController.h:316
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
std::set< DtIcaoAddress > DtIcaoAddrSet
Definition: adsbDataServiceInterface.h:127
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
DtAddressList myTracksToCreate
Definition: aircraftClutterAreaController.h:301
Represents a single simulation object in the exercise. Object may be VRF simulation, or non-VRF simulated, and may be simulated by the local sim engine, or by a remote sim engine. Only public (external) state of the object is available. All data is read-only. All access to data of the object is thread safe within the simulation frame.
Definition: simObject.h:80
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
unsigned myNumberCreatedRecently
For logging purposes only.
Definition: aircraftClutterAreaController.h:337
EntityDeletionSignalMap myEntityDeletionSignals
Definition: aircraftClutterAreaController.h:320
Definition: aircraftClutterAreaController.h:34
std::shared_ptr< DtAdsbPathPointHandle > DtPointHandlePtr
Shared_ptr so that copy constructor will work on the pointer without destroying the rhs...
Definition: adsbDataServiceInterface.h:113
std::list< DtUUID > myNewEntities
Definition: aircraftClutterAreaController.h:303
DtAdsbDataServiceInterface::DtIcaoAddrSet DtAddressSet
Definition: aircraftClutterAreaController.h:23
std::pair< double, DtVector > DtBorderCrossing
Definition: aircraftClutterAreaController.h:25
std::shared_ptr< DtAdsbDataJob > Ptr
Definition: adsbDataServiceInterface.h:134
/******************************************************************************* ** Copyright (c) 202...
Definition: aircraftClutterAreaControllerDescriptor.h:19
DtAircraftClutterAreaPSR * myProcessState
Definition: aircraftClutterAreaController.h:289
DtTime myDataEndTime
Definition: aircraftClutterAreaController.h:305
DtAircraftClutterAreaControllerDescriptor * myAircraftClutterAreaDescriptor
Definition: aircraftClutterAreaController.h:287
class DtLocalVertexList:
Definition: localVertexList.h:20
bool myCreatingEntitiesFromSave
Definition: aircraftClutterAreaController.h:330
Instances of DtAircraftClutterAreaPSR are used to hold the checkpointable state data for the DtAircra...
Definition: aircraftClutterAreaPSR.h:15
std::vector< DtVector > myPreExitPts
Definition: aircraftClutterAreaController.h:346
std::vector< DtVector > myPreEnterPts
Definition: aircraftClutterAreaController.h:350
DtAdsbDataServiceInterface::DtAdsbDataJob::Ptr myAdsbTrackReq
Requests to the ADSB data manager.
Definition: aircraftClutterAreaController.h:326
int DtIcaoAddress
Definition: adsbDataServiceInterface.h:126
EntityPromotedSignalMap myEntityPromotedSignals
Definition: aircraftClutterAreaController.h:323
A locally simulated VRF object.
Definition: localObject.h:98
int myIcaoAddressToDebug
Definition: aircraftClutterAreaController.h:354
tbb::spin_mutex myRemovedEntitiesMutex
Definition: aircraftClutterAreaController.h:307

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)