VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
dynamicTerrainMunitionDamageController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
12 
13 #pragma once
14 
17 
19 
20 #include <tbb/spin_mutex.h>
21 
22 
28 
29 namespace makVrfEvents
30 {
31  class DtDetonationEvent;
32  class DtEvent;
33 }
34 
40 {
41 private:
48 
49 public:
52  DtSimulationServices* simManager, DtComponentDescriptor* desc=0, DtReaderWriterRegistry *parentRegistry=0);
53 
55  virtual ~DtDynamicTerrainMunitionDamageController() override;
56 
58  virtual void registerCallbacks() override;
59 
61  virtual void deregisterCallbacks() override;
62 
64  virtual const char* type() const override;
65 
67  virtual void tick() override;
68 
70  virtual void sendDetonation(const DtVector& localPos, const DtEntityType& munitionType);
71 
73  static DtSimComponent* creator(const DtString& name, DtLocalObject* owner, DtSimulationServices* simManager,
74  DtComponentDescriptor* desc = 0, DtReaderWriterRegistry* parentRegistry = 0);
75 
79  static void addHighFidelityDamageAlgorithm(const DtString& algorithmId, DtDynamicTerrainMunitionDamageAlgorithmSP);
80 
82  static void removeHighFidelityDamageAlgorithm(const DtString& algorithmId);
83 
84 protected:
85 
88  virtual void detonationCallback(const makVrfEvents::DtEvent&);
89  virtual void processDetonation(const makVrfEvents::DtDetonationEvent& detonation);
91 
94  static void removeDynamicTerrainDamageCallback(const DtSimCommand& cmd, void* usr);
95  virtual void processRemoveDynamicTerrainDamageCommand(const DtRemoveDynamicTerrainDamageCommand& cmd);
97 
99  virtual void removeStandardDamageInCommandArea(const DtDynamicTerrainCommand& cmd);
100 
102  virtual void removeHighFidelityDamageInCommandArea(const DtDynamicTerrainCommand& cmd);
103 
105  virtual void removeCratersInCommandArea(const DtDynamicTerrainCommand& cmd);
106 
109 
113 
114  virtual void processCraterDamage(const DtVector & localPos, const DtMunitionTerrainDeformationEntry* deformationEntry, const makVrfEvents::DtDetonationEvent & detonationInteraction);
115 
117  virtual void processStandardDamage(const DtVector& localPos, const DtPowerRangeDeterminantList* detonationPower);
118 
120  virtual void processHighFidelityDamage(const DtVector& localPos, const DtPowerRangeDeterminantList* detonationPower);
121 
123  virtual bool processQueuedHighFidelityDamage(const DtVector& localPos,
124  const DtPowerRangeDeterminantList* detonationPower,
125  const DtHighFidelityTerrainDamageConfig* damageConfig);
126 
127  typedef std::map<DtString, DtDynamicTerrainMunitionDamageAlgorithmSP> HighFidelityAlgorithmMap;
128  static HighFidelityAlgorithmMap* highFidelityAlgorithms();
129 
130 protected:
131 
133 
135  {
136  HighFidelityQueueItem(const DtVector& lp,
137  const DtPowerRangeDeterminantList* dp,
139  : localPos(lp), detonationPower(dp), damageConfig(dc) {};
140 
141  DtVector localPos;
144  };
145  typedef std::list<HighFidelityQueueItem> HighFidelityQueue;
146 
148 
152 
155 
156 };
static DtSimComponent * creator(const DtString &name, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentDescriptor *desc=nullptr, DtReaderWriterRegistry *parentRegistry=nullptr)
Static creator function for factory registration.
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
Definition: munitionTerrainDeformationEntry.h:13
Base class for any DtSimCommand which causes dynamic terrain changes to be added or removed...
Definition: dynamicTerrainCommand.h:20
HighFidelityQueue myHighFidelityQueue
Queue of high fidelity damage events that could not immediately be processed because data was not yet...
Definition: dynamicTerrainMunitionDamageController.h:151
virtual void tick() override
This component&#39;s simulation tick.
unsigned myCraterPriorityIncrement
Definition: dynamicTerrainMunitionDamageController.h:147
DtSimCommand which causes a specific list of dynamic terrain changes to take place at the specified g...
Definition: dynamicTerrainCommand.h:113
virtual void processAddDynamicTerrainChangesCommand(const DtAddDynamicTerrainChangesCommand &cmd)
Processes commands to add new changes to dynamic terrain.
DtDynamicTerrainMunitionDamageControllerDescriptor * myDynamicTerrainMunitionDamageDescriptor
Definition: dynamicTerrainMunitionDamageController.h:132
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
Definition: detonationEvent.h:20
Definition: event.h:13
DtDynamicTerrainMunitionDamageController is a controller that calculates and publishes terrain change...
Definition: dynamicTerrainController.h:53
A readable/writable list of detonation powers listed by type.
Definition: powerRangeDeterminantList.h:18
std::shared_ptr< PendingDynamicTerrainInformation > PendingDynamicTerrainInformationPtr
Definition: dynamicTerrainController.h:213
DtCraterModelDefinitionEntryList myCraterModelDefinitionEntryList
List of crater model definition to be used with a min/max power.
Definition: dynamicTerrainMunitionDamageController.h:154
Used to map soil types to OSG Earth Landcover strings.
Definition: vrfSoilToOsgEarthLandCoverMap.h:19
std::shared_ptr< DtDynamicTerrainMunitionDamageAlgorithm > DtDynamicTerrainMunitionDamageAlgorithmSP
Definition: dynamicTerrainMunitionDamageAlgorithm.h:65
DtSimCommand is an abstract base class from which commands can derive. It manages the read/write capa...
Definition: simCommand.h:32
HighFidelityQueueItem(const DtVector &lp, const DtPowerRangeDeterminantList *dp, const DtHighFidelityTerrainDamageConfig *dc)
Definition: dynamicTerrainMunitionDamageController.h:136
virtual void deregisterCallbacks()
Called by destructor to deregister any callbacks.
DtDynamicTerrainMunitionDamageController is a controller that calculates and publishes terrain change...
Definition: dynamicTerrainMunitionDamageController.h:39
Instances of DtDynamicTerrainMunitionDamageControllerDescriptor are used to specify the parameters fo...
Definition: dynamicTerrainMunitionDamageControllerDescriptor.h:18
const DtHighFidelityTerrainDamageConfig * damageConfig
Definition: dynamicTerrainMunitionDamageController.h:143
const DtPowerRangeDeterminantList * detonationPower
Definition: dynamicTerrainMunitionDamageController.h:142
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
Definition: highFidelityTerrainDamageConfig.h:23
DtSimCommand which causes all dynamic terrain damage to be removed at the specified geometry...
Definition: dynamicTerrainCommand.h:193
virtual bool processPendingDynamicTerrainInformation(PendingDynamicTerrainInformationPtr &)
Processes a pending dynamic terrain information request. If results are discovered, sends a response. If not sent returns false.
virtual const char * type() const override
DtDynamicTerrainController & operator=(const DtDynamicTerrainController &orig)
Not Implemented.
Definition: dynamicTerrainMunitionDamageController.h:134
std::list< HighFidelityQueueItem > HighFidelityQueue
Definition: dynamicTerrainMunitionDamageController.h:145
std::map< DtString, DtDynamicTerrainMunitionDamageAlgorithmSP > HighFidelityAlgorithmMap
Definition: dynamicTerrainMunitionDamageController.h:127
virtual void registerCallbacks()
Called by init to register any callbacks.
A locally simulated VRF object.
Definition: localObject.h:98

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)