WSF
SOSM_Target.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI//REL TO USA ONLY
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#ifndef SOSM_TARGET_HPP
13#define SOSM_TARGET_HPP
14
15#include "sosm_export.h"
16
17#include <map>
18#include <memory>
19#include <mutex>
20#include <string>
21#include <vector>
22
23#include "SOSM_CoreBase.hpp"
25class SOSM_Manager;
27#include "UtAtmosphere.hpp"
28
30class SOSM_EXPORT SOSM_Target : public SOSM_CoreBase
31{
32public:
37 {
38 public:
39 StateBase(const std::string& aStateName);
40 ~StateBase() override;
41
42 virtual void InputComplete(SOSM_Target& aTarget);
43
44 virtual bool ProcessInput(UtInput& aInput, SOSM_Target& aTarget);
45
46 std::string mStateName;
49 float mMinSpeed;
50 float mMaxSpeed;
54 };
55
56 SOSM_Target(SOSM_Manager* aManagerPtr);
57 SOSM_Target(const SOSM_Target& aSrc);
59
61 virtual SOSM_Target* Clone() const = 0;
62
63 bool Initialize() override;
64
65 void InputComplete() override;
66
67 bool ProcessInput(UtInput& aInput) override;
68
80 virtual void ComputeRadiantIntensity(const SOSM_SpectralObject& aRequestor,
81 SOSM_Interaction& aInteraction,
82 std::vector<float>& aBodyIntensity,
83 float& aBodyArea,
84 std::vector<float>& aPlumeIntensity,
85 float& aPlumeArea) = 0;
86
91 virtual void GetSamplePoints(SOSM_Interaction& aInteraction,
92 std::vector<float>& aAzValues,
93 std::vector<float>& aElValues) = 0;
94
100 virtual void GetSampleTargetState(SOSM_Interaction& aInteraction, float& aAltitude, float& aSpeed, float& aThrottle) = 0;
101
103 size_t StateCount() const { return mSharedDataPtr->mStates.size(); }
104
107 const StateBase* StateEntry(size_t aIndex) const { return mSharedDataPtr->mStates[aIndex]; }
108
111 size_t SelectState(SOSM_Interaction& aInteraction) const;
112
114
115protected:
120 virtual StateBase* CreateState(const std::string& aStateName) const = 0;
121
123 {
124 public:
125 virtual ~SharedData();
126 std::vector<StateBase*> mStates;
127 };
128
130
132 std::shared_ptr<SharedData> mSharedDataPtr;
133
135 UtAtmosphere mAtmosphere;
136
138 mutable std::recursive_mutex mMutex;
139};
140
141#endif
SOSM_CoreBase()
Definition SOSM_CoreBase.cpp:17
virtual bool ProcessInput(UtInput &aInput)
Definition SOSM_CoreBase.cpp:62
virtual bool Initialize()
Definition SOSM_CoreBase.cpp:40
virtual void InputComplete()
Definition SOSM_CoreBase.cpp:58
Definition SOSM_Interaction.hpp:46
A singleton class that manages SOSM data.
Definition SOSM_Manager.hpp:32
SOSM_SpectralObject()
Definition SOSM_SpectralObject.hpp:49
Definition SOSM_Target.hpp:123
std::vector< StateBase * > mStates
Definition SOSM_Target.hpp:126
Definition SOSM_Target.hpp:37
StateBase(const std::string &aStateName)
Definition SOSM_Target.cpp:148
virtual bool ProcessInput(UtInput &aInput, SOSM_Target &aTarget)
Definition SOSM_Target.cpp:169
float mMaxAltitude
Definition SOSM_Target.hpp:48
std::string mStateName
Definition SOSM_Target.hpp:46
virtual void InputComplete(SOSM_Target &aTarget)
Definition SOSM_Target.cpp:166
bool mSpeedIsMach
Definition SOSM_Target.hpp:53
float mMaxThrottle
Definition SOSM_Target.hpp:52
float mMinAltitude
Definition SOSM_Target.hpp:47
float mMaxSpeed
Definition SOSM_Target.hpp:50
float mMinSpeed
Definition SOSM_Target.hpp:49
float mMinThrottle
Definition SOSM_Target.hpp:51
virtual StateBase * CreateState(const std::string &aStateName) const =0
SOSM_Manager * GetManager() const
Definition SOSM_Target.hpp:113
SOSM_Target(SOSM_Manager *aManagerPtr)
Constructor.
Definition SOSM_Target.cpp:25
UtAtmosphere mAtmosphere
An atmosphere for converting speed to Mach number.
Definition SOSM_Target.hpp:135
std::recursive_mutex mMutex
A mutex for locking access to the atmosphere object (UtAtmosphere is not thread-safe).
Definition SOSM_Target.hpp:138
SOSM_Manager * mManagerPtr
Definition SOSM_Target.hpp:129
virtual SOSM_Target * Clone() const =0
A virtual copy constructor.
virtual void GetSamplePoints(SOSM_Interaction &aInteraction, std::vector< float > &aAzValues, std::vector< float > &aElValues)=0
SOSM_Target & operator=(const SOSM_Target &)=delete
virtual void GetSampleTargetState(SOSM_Interaction &aInteraction, float &aAltitude, float &aSpeed, float &aThrottle)=0
virtual void ComputeRadiantIntensity(const SOSM_SpectralObject &aRequestor, SOSM_Interaction &aInteraction, std::vector< float > &aBodyIntensity, float &aBodyArea, std::vector< float > &aPlumeIntensity, float &aPlumeArea)=0
std::shared_ptr< SharedData > mSharedDataPtr
A pointer to the shared state data.
Definition SOSM_Target.hpp:132
const StateBase * StateEntry(size_t aIndex) const
Definition SOSM_Target.hpp:107
size_t StateCount() const
Return the number of defined states.
Definition SOSM_Target.hpp:103
Copyrights Multiple, All Rights Reserved