WSF
WsfLaserDesignator.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#ifndef WSFLASERDESIGNATOR_HPP
13#define WSFLASERDESIGNATOR_HPP
14
15#include "wsf_mil_export.h"
16
17#include "UtVec3dX.hpp"
18#include "WsfEM_Antenna.hpp"
19#include "WsfEM_Xmtr.hpp"
21#include "WsfSensor.hpp"
22#include "WsfSensorMode.hpp"
23#include "WsfTerrain.hpp"
24
42
43class WSF_MIL_EXPORT WsfLaserDesignator : public WsfSensor
44{
45public:
49 ~WsfLaserDesignator() override;
50
51 WsfSensor* Clone() const override;
52 bool Initialize(double aSimTime) override;
53 bool ProcessInput(UtInput& aInput) override;
54 void Update(double aSimTime) override;
55 void PerformScheduledDetections(double aSimTime) override;
56
57 void TurnOff(double aSimTime) override;
58 void TurnOn(double aSimTime) override;
59
60 void PlatformDeleted(WsfPlatform* aPlatformPtr) override;
61
62 size_t GetEM_XmtrCount() const override;
63 WsfEM_Xmtr& GetEM_Xmtr(size_t aIndex) const override;
64
65 int GetLaserCode() const { return mLaserCode; }
66 void SetLaserCode(int aLaserCode) { mLaserCode = aLaserCode; }
67
70 {
71 public:
75
76 WsfMode* Clone() const override;
77 bool Initialize(double aSimTime) override;
78 bool ProcessInput(UtInput& aInput) override;
79
80 bool AttemptToDetect(double aSimTime, WsfPlatform* aTargetPtr, Settings& aSettings, WsfSensorResult& aResult) override;
81
82 void Deselect(double aSimTime) override;
83 void Select(double aSimTime) override;
84
86
89 };
90
91 bool IsEmitting() const { return mIsEmitting; }
92 size_t GetDesignatedEntityIndex() const;
93
94protected:
96 {
97 public:
98 Consideration(size_t aIndex)
99 : mIndex(aIndex)
100 , mLastCloseTime(0.0)
101 , mDist2BeamSqd(0.0)
102 , mDist2SpotSqd(0.0)
103 {
104 }
105
106 size_t mIndex = 0;
107 double mLastCloseTime = 0.0;
108 double mDist2BeamSqd = 0.0;
109 double mDist2SpotSqd = 0.0;
110 };
111
113 {
114 public:
117 void Clear();
118 size_t GetIndex() const { return mCurrentPlatIndex; }
119 // Return true if an association change occurred.
120 bool Consider(double aSimTime,
121 const UtVec3dX& aEmitterLocWCS,
122 const UtVec3dX& aLOS_UnitVectorWCS,
123 const UtVec3dX& aLaserSpotLocWCS,
124 WsfPlatform* aTargetPtr);
125 Consideration* GetPtr(size_t aIndex);
126 void Remove(size_t aIndex);
127 bool Update(double aSimTime);
128
132 std::vector<Consideration*> mConsiderations;
133 };
134
135 void Extinguish(double aSimTime);
136
137 void Lase(double aSimTime, double aFrequency, double aPower);
138
140
142 std::vector<LaserDesignationMode*> mLD_ModeList;
143
145 unsigned int mUpdateCount;
146
148 UtVec3dX mUnitLOS_WCS;
150
152 double mPower;
154 double mTerrainFloatDistance; // shorten the beam to place above terrain.
155
157 bool mIsEmitting; // This goes true first, even before placing the spot.
158 bool mSpotIsPlaced; // Spot is placed in the Environment
159 bool mSpotIsExtinguished; // Power is set to zero in the Environment.
160
164};
165
166#endif
aObjectPtr Update(simTime)
Definition WsfEM_Antenna.hpp:49
Definition WsfEM_Xmtr.hpp:55
Definition WsfLaserDesignations.hpp:86
Definition WsfLaserDesignations.hpp:83
Definition WsfLaserDesignator.hpp:96
size_t mIndex
Definition WsfLaserDesignator.hpp:106
double mDist2BeamSqd
Definition WsfLaserDesignator.hpp:108
double mLastCloseTime
Definition WsfLaserDesignator.hpp:107
double mDist2SpotSqd
Definition WsfLaserDesignator.hpp:109
Consideration(size_t aIndex)
Definition WsfLaserDesignator.hpp:98
void Select(double aSimTime) override
Definition WsfLaserDesignator.cpp:517
bool Initialize(double aSimTime) override
Definition WsfLaserDesignator.cpp:445
void Deselect(double aSimTime) override
Definition WsfLaserDesignator.cpp:509
LaserDesignationMode & operator=(const LaserDesignationMode &)=delete
bool ProcessInput(UtInput &aInput) override
Definition WsfLaserDesignator.cpp:467
LaserDesignationMode()
Definition WsfLaserDesignator.cpp:418
bool AttemptToDetect(double aSimTime, WsfPlatform *aTargetPtr, Settings &aSettings, WsfSensorResult &aResult) override
Definition WsfLaserDesignator.cpp:499
WsfMode * Clone() const override
Create an exact duplicate of this mode.
Definition WsfLaserDesignator.cpp:438
WsfEM_Xmtr mXmtr
Definition WsfLaserDesignator.hpp:88
WsfLaserDesignator * mLD_Ptr
Definition WsfLaserDesignator.hpp:85
WsfEM_Antenna mAntenna
Definition WsfLaserDesignator.hpp:87
Definition WsfLaserDesignator.hpp:113
size_t GetIndex() const
Definition WsfLaserDesignator.hpp:118
double mNearestLimitSquared
Definition WsfLaserDesignator.hpp:131
void Clear()
Definition WsfLaserDesignator.cpp:621
double mTimeoutInterval
Definition WsfLaserDesignator.hpp:130
TargetAssociation()
Definition WsfLaserDesignator.cpp:606
std::vector< Consideration * > mConsiderations
Definition WsfLaserDesignator.hpp:132
size_t mCurrentPlatIndex
Definition WsfLaserDesignator.hpp:129
void Lase(double aSimTime, double aFrequency, double aPower)
Definition WsfLaserDesignator.cpp:359
WsfLaserDesignator(WsfScenario &aScenario)
Definition WsfLaserDesignator.cpp:37
WsfLaserDesignations::Spot mLaserSpot
Definition WsfLaserDesignator.hpp:162
int GetLaserCode() const
Definition WsfLaserDesignator.hpp:65
TargetAssociation mAssociation
Definition WsfLaserDesignator.hpp:161
WsfLaserDesignations * mLaserDesignationsPtr
Definition WsfLaserDesignator.hpp:139
double mTerrainFloatDistance
Definition WsfLaserDesignator.hpp:154
void Extinguish(double aSimTime)
Definition WsfLaserDesignator.cpp:377
bool mSpotIsPlaced
Definition WsfLaserDesignator.hpp:158
double mPower
Definition WsfLaserDesignator.hpp:152
int mLaserCode
Definition WsfLaserDesignator.hpp:144
unsigned int mUpdateCount
Definition WsfLaserDesignator.hpp:145
std::vector< LaserDesignationMode * > mLD_ModeList
The sensor-specific list of modes (not valid until Initialize is called).
Definition WsfLaserDesignator.hpp:142
UtVec3dX mSpotLocationWCS
Definition WsfLaserDesignator.hpp:149
double mFrequency
Definition WsfLaserDesignator.hpp:151
WsfLaserDesignator & operator=(const WsfLaserDesignator &)=delete
bool mPrivateDebug
Definition WsfLaserDesignator.hpp:156
bool mSpotIsExtinguished
Definition WsfLaserDesignator.hpp:159
UtVec3dX mUnitLOS_WCS
Definition WsfLaserDesignator.hpp:148
double mMaximumRange
Definition WsfLaserDesignator.hpp:153
bool IsEmitting() const
Definition WsfLaserDesignator.hpp:91
void SetLaserCode(int aLaserCode)
Definition WsfLaserDesignator.hpp:66
wsf::Terrain * mTerrain
Definition WsfLaserDesignator.hpp:163
bool mIsEmitting
Definition WsfLaserDesignator.hpp:157
UtVec3dX mEmitterLocWCS
Definition WsfLaserDesignator.hpp:147
WsfMode()
Definition WsfMode.cpp:15
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
WsfSensorMode()
Definition WsfSensorMode.cpp:47
Definition WsfSensorResult.hpp:27
Definition WsfSensor.hpp:133
bool ProcessInput(UtInput &aInput) override
Definition WsfSensor.cpp:380
void Update(double aSimTime) override
Definition WsfSensor.cpp:497
WsfSensor(const WsfScenario &aScenario)
Definition WsfSensor.cpp:52
void PlatformDeleted(WsfPlatform *aPlatformPtr) override
Definition WsfSensor.cpp:355
WsfSensor * Clone() const override=0
virtual WsfEM_Xmtr & GetEM_Xmtr(size_t aIndex) const
Definition WsfSensor.cpp:714
bool Initialize(double aSimTime) override
Definition WsfSensor.cpp:255
virtual size_t GetEM_XmtrCount() const
Definition WsfSensor.cpp:700
virtual void PerformScheduledDetections(double aSimTime)
Definition WsfSensor.cpp:1415
void TurnOff(double aSimTime) override
Definition WsfSensor.cpp:523
void TurnOn(double aSimTime) override
Definition WsfSensor.cpp:563
Definition WsfTerrain.hpp:336
Copyrights Multiple, All Rights Reserved