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 #include <tbb/spin_mutex.h>
19 
25 
26 namespace makVrfEvents
27 {
28  class DtDetonationEvent;
29  class DtEvent;
30 }
31 
37 {
38 private:
45 
46 public:
49  DtSimulationServices* simManager, DtComponentDescriptor* desc=0, DtReaderWriterRegistry *parentRegistry=0);
50 
53 
55  virtual void registerCallbacks();
56 
58  virtual void deregisterCallbacks();
59 
61  virtual const char* type() const;
62 
64  virtual void tick();
65 
67  virtual void sendDetonation(const DtVector& localPos, const DtEntityType& munitionType);
68 
70  static DtSimComponent* creator(const DtString& name, DtLocalObject* owner, DtSimulationServices* simManager,
71  DtComponentDescriptor* desc = 0, DtReaderWriterRegistry* parentRegistry = 0);
72 
76  static void addHighFidelityDamageAlgorithm(const DtString& algorithmId, DtDynamicTerrainMunitionDamageAlgorithmSP);
77 
79  static void removeHighFidelityDamageAlgorithm(const DtString& algorithmId);
80 
81 protected:
82 
85  virtual void detonationCallback(const makVrfEvents::DtEvent&);
86  virtual void processDetonation(const makVrfEvents::DtDetonationEvent& detonation);
88 
91  static void removeDynamicTerrainDamageCallback(const DtSimCommand& cmd, void* usr);
92  virtual void processRemoveDynamicTerrainDamageCommand(const DtRemoveDynamicTerrainDamageCommand& cmd);
94 
96  virtual void removeStandardDamageInCommandArea(const DtDynamicTerrainCommand& cmd);
97 
99  virtual void removeHighFidelityDamageInCommandArea(const DtDynamicTerrainCommand& cmd);
100 
103 
107 
108  virtual void processCraterDamage(const DtVector & localPos, const DtMunitionTerrainDeformationEntry* deformationEntry, const makVrfEvents::DtDetonationEvent & detonationInteraction);
109 
111  virtual void processStandardDamage(const DtVector& localPos, const DtPowerRangeDeterminantList* detonationPower);
112 
114  virtual void processHighFidelityDamage(const DtVector& localPos, const DtPowerRangeDeterminantList* detonationPower);
115 
117  virtual bool processQueuedHighFidelityDamage(const DtVector& localPos,
118  const DtPowerRangeDeterminantList* detonationPower,
119  const DtHighFidelityTerrainDamageConfig* damageConfig);
120 
121  typedef std::map<DtString, DtDynamicTerrainMunitionDamageAlgorithmSP> HighFidelityAlgorithmMap;
122  static HighFidelityAlgorithmMap* highFidelityAlgorithms();
123 
124 protected:
125 
127 
129  {
131  const DtPowerRangeDeterminantList* dp,
133  : localPos(lp), detonationPower(dp), damageConfig(dc) {};
134 
135  DtVector localPos;
138  };
139  typedef std::list<HighFidelityQueueItem> HighFidelityQueue;
140 
142 
146 
149 
150 };
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:145
virtual void tick() override
This component&#39;s simulation tick.
unsigned myCraterPriorityIncrement
Definition: dynamicTerrainMunitionDamageController.h:141
DtSimCommand which causes a specific list of dynamic terrain changes to take place at the specified g...
Definition: dynamicTerrainCommand.h:114
virtual void processAddDynamicTerrainChangesCommand(const DtAddDynamicTerrainChangesCommand &cmd)
Processes commands to add new changes to dynamic terrain.
DtDynamicTerrainMunitionDamageControllerDescriptor * myDynamicTerrainMunitionDamageDescriptor
Definition: dynamicTerrainMunitionDamageController.h:126
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
DtCraterModelDefinitionEntryList myCraterModelDefinitionEntryList
List of crater model definition to be used with a min/max power.
Definition: dynamicTerrainMunitionDamageController.h:148
DtBoost::shared_ptr< PendingDynamicTerrainInformation > PendingDynamicTerrainInformationPtr
Definition: dynamicTerrainController.h:213
Used to map soil types to OSG Earth Landcover strings.
Definition: vrfSoilToOsgEarthLandCoverMap.h:19
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:130
virtual void deregisterCallbacks()
Called by destructor to deregister any callbacks.
DtDynamicTerrainMunitionDamageController is a controller that calculates and publishes terrain change...
Definition: dynamicTerrainMunitionDamageController.h:36
Instances of DtDynamicTerrainMunitionDamageControllerDescriptor are used to specify the parameters fo...
Definition: dynamicTerrainMunitionDamageControllerDescriptor.h:18
const DtHighFidelityTerrainDamageConfig * damageConfig
Definition: dynamicTerrainMunitionDamageController.h:137
const DtPowerRangeDeterminantList * detonationPower
Definition: dynamicTerrainMunitionDamageController.h:136
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:94
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:91
Definition: highFidelityTerrainDamageConfig.h:23
DtSimCommand which causes all dynamic terrain damage to be removed at the specified geometry...
Definition: dynamicTerrainCommand.h:194
DtBoost::shared_ptr< DtDynamicTerrainMunitionDamageAlgorithm > DtDynamicTerrainMunitionDamageAlgorithmSP
Definition: dynamicTerrainMunitionDamageAlgorithm.h:65
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:128
std::list< HighFidelityQueueItem > HighFidelityQueue
Definition: dynamicTerrainMunitionDamageController.h:139
std::map< DtString, DtDynamicTerrainMunitionDamageAlgorithmSP > HighFidelityAlgorithmMap
Definition: dynamicTerrainMunitionDamageController.h:121
virtual void registerCallbacks()
Called by init to register any callbacks.
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)