WSF
WsfMil.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11// ****************************************************************************
12// Updated by Infoscitex, a DCS Company
13// ****************************************************************************
14
15#ifndef WSFMIL_HPP
16#define WSFMIL_HPP
17
18#include "wsf_mil_export.h"
19
20#include <map>
21#include <memory>
22
23#include "UtCallbackHolder.hpp"
24class WsfPlatform;
25class WsfScenario;
28
41class WsfMilEventPipe;
46class WsfWeapon;
50class WsfWeaponTypes;
51
52namespace wsf
53{
54class CN2_Types;
55}
56
57namespace WsfPk
58{
59class TableManager;
60}
61
62class WSF_MIL_EXPORT WsfMilExtension : public WsfScenarioExtension
63{
64public:
65 static WsfMilExtension* Find(const WsfScenario& aScenario);
66 static WsfMilExtension& Get(const WsfScenario& aScenario);
67
69 ~WsfMilExtension() override;
70
71 void AddedToScenario() override;
72 bool ProcessInput(UtInput& aInput) override;
73
74 WsfPk::TableManager& GetPkTableManager() const { return *mPkTableManagerPtr; }
75
76 WsfAcousticSignatureTypes& GetAcousticSignatureTypes() const { return *mAcousticSignatureTypes; }
77 wsf::CN2_Types& GetCN2_Types() const { return *mCN2_TypesPtr; }
78 WsfEW_EA_EP_Types& GetEA_EP_Types() const { return *mEA_EP_Types; }
79 WsfEW_EffectTypes& GetEW_EffectTypes() const { return *mEW_EffectTypes; }
80 WsfEW_TechniqueTypes& GetEW_TechniqueTypes() const { return *mEW_TechniqueTypes; }
81 WsfFalseTargetTypes& GetFalseTargetTypes() const { return *mFalseTargetTypes; }
82 WsfFalseTargetScreenerTypes& GetFalseTargetScreenerTypes() const { return *mFalseTargetScreenerTypes; }
83 WsfGuidanceProgramTypes& GetGuidanceProgramTypes() const { return *mGuidanceProgramTypes; }
84 WsfHighEnergyLaserTypes& GetHighEnergyLaserTypes() const { return *mHighEnergyLaserTypes; }
85 WsfInfraredSignatureTypes& GetInfraredSignatureTypes() const { return *mInfraredSignatureTypes; }
86 WsfInherentContrastTypes& GetInherentContrastTypes() const { return *mInherentContrastTypes; }
87 WsfLaunchComputerTypes& GetLaunchComputerTypes() const { return *mLaunchComputerTypes; }
88 WsfOpticalPathCoefficientTypes& GetOpticalPathCoefficientTypes() const { return *mOpticalPathCoefficientTypes; }
89 WsfOpticalReflectivityTypes& GetOpticalReflectivityTypes() const { return *mOpticalReflectivityTypes; }
90 WsfOpticalSignatureTypes& GetOpticalSignatureTypes() const { return *mOpticalSignatureTypes; }
91 WsfWeaponEffectsTypes& GetWeaponEffectsTypes() const { return *mWeaponEffectsTypes; }
92 WsfWeaponTypes& GetWeaponTypes() const { return *mWeaponTypes; }
93
94private:
95 void SimulationCreated(WsfSimulation& aSimulation) override;
96
97 WsfPk::TableManager* mPkTableManagerPtr;
98
99 WsfAcousticSignatureTypes* mAcousticSignatureTypes;
100 wsf::CN2_Types* mCN2_TypesPtr;
101 WsfEW_EA_EP_Types* mEA_EP_Types;
102 WsfEW_EffectTypes* mEW_EffectTypes;
103 WsfEW_TechniqueTypes* mEW_TechniqueTypes;
104 WsfFalseTargetScreenerTypes* mFalseTargetScreenerTypes;
105 WsfFalseTargetTypes* mFalseTargetTypes;
106 WsfGuidanceProgramTypes* mGuidanceProgramTypes;
107 WsfHighEnergyLaserTypes* mHighEnergyLaserTypes;
108 WsfInfraredSignatureTypes* mInfraredSignatureTypes;
109 WsfInherentContrastTypes* mInherentContrastTypes;
110 WsfLaunchComputerTypes* mLaunchComputerTypes;
111 WsfOpticalPathCoefficientTypes* mOpticalPathCoefficientTypes;
112 WsfOpticalReflectivityTypes* mOpticalReflectivityTypes;
113 WsfOpticalSignatureTypes* mOpticalSignatureTypes;
114 WsfWeaponEffectsTypes* mWeaponEffectsTypes;
115 WsfWeaponTypes* mWeaponTypes;
116};
117
119class WSF_MIL_EXPORT WsfMilInterface : public WsfSimulationExtension
120{
121public:
123 ~WsfMilInterface() override;
124
125 static WsfMilInterface* Find(const WsfSimulation& aSimulation);
126
127 static WsfMilInterface* Find(const WsfSimulation* aSimulationPtr);
128
129 void AddedToSimulation() override;
130
131 WsfQuantumTaskerObserver& GetQuantumTaskerObserver() { return *mQuantumTaskerObserverPtr; }
132
133 WsfWeaponObserver& GetWeaponObserver() { return *mWeaponObserverPtr; }
134
135 WsfWeaponTaskObserver& GetWeaponTaskObserver() { return *mWeaponTaskObserverPtr; }
136
137 WsfEW_EffectManager& GetEW_EffectManager() const { return *mEW_EffectManagerPtr; }
138
139 void KillPlatform(double aSimTime, WsfPlatform* aPlatformPtr);
140
141private:
142 void FrameObjectUpdate(double aCurrentFrameTime);
143 void WeaponTurnedOff(double aSimTime, WsfWeapon* aWeaponPtr);
144 void WeaponTurnedOn(double aSimTime, WsfWeapon* aWeaponPtr);
145 void PlatformDeleted(double aSimTime, WsfPlatform* aPlatformPtr);
146
147 std::unique_ptr<WsfEW_EffectManager> mEW_EffectManagerPtr;
148 std::unique_ptr<WsfQuantumTaskerObserver> mQuantumTaskerObserverPtr;
149 std::unique_ptr<WsfWeaponObserver> mWeaponObserverPtr;
150 std::unique_ptr<WsfWeaponTaskObserver> mWeaponTaskObserverPtr;
151 std::unique_ptr<WsfMilEventPipe> mMilEventPipePtr;
152
153 std::map<WsfWeapon*, bool> mWeaponsChangingState;
154 std::vector<WsfWeapon*> mWeapons;
155 UtCallbackHolder mCallbacks;
156};
157
158// Helper macro for observer objects to implement their callback accessors
159#define WSF_MIL_OBSERVER_CALLBACK_DEFINE(OBSERVER, EVENT) \
160 WsfObserver::EVENT##Callback& WsfObserver::EVENT(const WsfSimulation* aSimulationPtr) \
161 { \
162 return WsfMilInterface::Find(aSimulationPtr)->Get##OBSERVER##Observer().EVENT; \
163 }
164
165#endif
Definition WsfAcousticSignatureTypes.hpp:21
Definition WsfEW_EA_EP_Types.hpp:19
Manages simulation-wide variables used by EW Effects.
Definition WsfEW_EffectManager.hpp:27
Definition WsfEW_EffectTypes.hpp:20
Definition WsfEW_TechniqueTypes.hpp:19
Definition WsfFalseTargetScreenerTypes.hpp:19
Definition WsfFalseTargetTypes.hpp:19
Definition WsfGuidanceProgram.hpp:28
Definition WsfHighEnergyLaser.hpp:226
Definition WsfInfraredSignatureTypes.hpp:21
Definition WsfInherentContrastTypes.hpp:21
Definition WsfLaunchComputerTypes.hpp:21
Definition WsfMilEventPipe.hpp:32
WsfOpticalPathCoefficientTypes & GetOpticalPathCoefficientTypes() const
Definition WsfMil.hpp:88
WsfWeaponEffectsTypes & GetWeaponEffectsTypes() const
Definition WsfMil.hpp:91
WsfFalseTargetTypes & GetFalseTargetTypes() const
Definition WsfMil.hpp:81
WsfHighEnergyLaserTypes & GetHighEnergyLaserTypes() const
Definition WsfMil.hpp:84
WsfPk::TableManager & GetPkTableManager() const
Definition WsfMil.hpp:74
WsfMilExtension()
Definition WsfMil.cpp:870
WsfEW_EA_EP_Types & GetEA_EP_Types() const
Definition WsfMil.hpp:78
WsfFalseTargetScreenerTypes & GetFalseTargetScreenerTypes() const
Definition WsfMil.hpp:82
WsfInherentContrastTypes & GetInherentContrastTypes() const
Definition WsfMil.hpp:86
WsfAcousticSignatureTypes & GetAcousticSignatureTypes() const
Definition WsfMil.hpp:76
WsfLaunchComputerTypes & GetLaunchComputerTypes() const
Definition WsfMil.hpp:87
WsfEW_EffectTypes & GetEW_EffectTypes() const
Definition WsfMil.hpp:79
WsfOpticalSignatureTypes & GetOpticalSignatureTypes() const
Definition WsfMil.hpp:90
wsf::CN2_Types & GetCN2_Types() const
Definition WsfMil.hpp:77
WsfOpticalReflectivityTypes & GetOpticalReflectivityTypes() const
Definition WsfMil.hpp:89
static WsfMilExtension * Find(const WsfScenario &aScenario)
Definition WsfMil.cpp:853
WsfEW_TechniqueTypes & GetEW_TechniqueTypes() const
Definition WsfMil.hpp:80
WsfWeaponTypes & GetWeaponTypes() const
Definition WsfMil.hpp:92
WsfInfraredSignatureTypes & GetInfraredSignatureTypes() const
Definition WsfMil.hpp:85
static WsfMilExtension & Get(const WsfScenario &aScenario)
Definition WsfMil.cpp:860
WsfGuidanceProgramTypes & GetGuidanceProgramTypes() const
Definition WsfMil.hpp:83
WsfMilInterface()
Definition WsfMil.cpp:1064
WsfWeaponObserver & GetWeaponObserver()
Definition WsfMil.hpp:133
WsfWeaponTaskObserver & GetWeaponTaskObserver()
Definition WsfMil.hpp:135
static WsfMilInterface * Find(const WsfSimulation &aSimulation)
Definition WsfMil.cpp:1075
void AddedToSimulation() override
Definition WsfMil.cpp:1085
WsfEW_EffectManager & GetEW_EffectManager() const
Definition WsfMil.hpp:137
WsfQuantumTaskerObserver & GetQuantumTaskerObserver()
Definition WsfMil.hpp:131
Definition WsfOpticalPath.hpp:163
Definition WsfOpticalReflectivityTypes.hpp:21
Definition WsfOpticalSignatureTypes.hpp:21
Definition WsfPkTable.hpp:149
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
WsfScenarioExtension()
Definition WsfScenarioExtension.cpp:21
virtual bool ProcessInput(UtInput &aInput)
Definition WsfScenarioExtension.cpp:62
virtual void AddedToScenario()
Definition WsfScenarioExtension.cpp:50
virtual void SimulationCreated(WsfSimulation &aSimulation)
Definition WsfScenarioExtension.cpp:119
friend class WsfScenario
Definition WsfScenarioExtension.hpp:39
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
WsfSimulationExtension()
Definition WsfSimulationExtension.cpp:23
friend class WsfSimulation
Definition WsfSimulationExtension.hpp:43
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfWeaponEffectsTypes.hpp:21
Definition WsfWeaponTypes.hpp:21
Definition WsfWeapon.hpp:63
The types factory for CN2 models (owned by the scenario).
Definition WsfAtmosphericTurbulence.hpp:97
Definition WsfMil.hpp:58
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Definition WsfQuantumTaskerObserver.hpp:31
Definition WsfWeaponObserver.hpp:117
Definition WsfWeaponTaskObserver.hpp:31
Copyrights Multiple, All Rights Reserved