WSF
WsfPM_Platform.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 WSFPM_PLATFORM_HPP
16#define WSFPM_PLATFORM_HPP
17
18#include "wsf_parser_export.h"
19
20#include <string>
21#include <vector>
22
23#include "WsfPM_Comm.hpp"
24#include "WsfPM_Fuel.hpp"
25#include "WsfPM_Mover.hpp"
26#include "WsfPM_Processor.hpp"
27#include "WsfPM_Router.hpp"
28#include "WsfPM_Sensor.hpp"
29#include "WsfPM_Zone.hpp"
31#include "WsfPProxyNode.hpp"
32
33class WSF_PARSER_EXPORT WsfPM_Platform : public WsfPProxyNode
34{
35public:
37 WsfPM_Platform(const WsfPProxyNode& aNode);
38 virtual ~WsfPM_Platform() = default;
39
40 static const char* CommanderSelfValue();
41
42 std::string Icon() const;
43 std::string Side() const;
44 bool Destructible() const;
46
52 WsfPProxyNode HeadingNode() const noexcept;
55 WsfProxy::Angle InitialHeading() const;
56 void SetHeading(const WsfProxy::Angle& aAngle);
57 WsfProxy::Angle Pitch() const;
58 void SetPitch(const WsfProxy::Angle& aAngle);
59 WsfProxy::Angle Roll() const;
60 void SetRoll(const WsfProxy::Angle& aAngle);
61
64 WsfProxy::Position Position() const;
68 bool SetPosition(const WsfProxy::Position& aPosition);
69
70 WsfProxy::Length Altitude() const;
72 WsfProxy::Int AltitudeReference() const;
79 wsf::proxy::AltitudeReferenceEnum AltitudeReferenceValue() const noexcept;
80 bool SetAltitude(const WsfProxy::Length& aAlt);
81 bool SetAltitudeReference(const WsfProxy::Int& aAltRef);
82 bool SetAltitudeReferenceValue(wsf::proxy::AltitudeReferenceEnum aAltRef) noexcept;
83
87 WsfProxy::Length EffectiveAltitude() const;
91 wsf::proxy::AltitudeReferenceEnum EffectiveAGL() const noexcept;
92 bool SetEffectiveAltitude(WsfProxy::Length aAltitude);
93 bool SetEffectiveAGL(bool aIsAGL) noexcept;
94
95 std::string InfraredSignature() const;
96 std::string RadarSignature() const;
97 std::string OpticalSignature() const;
98 std::string AcousticSignature() const;
99
100 WsfPM_Fuel Fuel() const;
101 WsfPM_Mover Mover() const;
102 WsfPM_CommMap Comms() const;
103 WsfPM_RouterMap Routers() const;
104 WsfPM_SensorMap Sensors() const;
106 virtual WsfPProxyNode FindPart(const std::string& aName) const;
107 WsfPM_ObjectMap Commanders() const { return *this + "commandChains"; }
108 WsfPM_ZoneMap Zone() const { return *this + "zone"; }
109 WsfPM_ObjectMap Categories() const { return *this + "categories"; }
110
111 bool AddPart(const WsfPProxyNode& partTypeNode, const std::string& partName);
112 void SetIcon(const std::string& aIcon);
113 void SetSide(const std::string& aSide);
114 void SetDestructible(bool destructible);
115
116 void LocationLLA(double& aLat, double& aLon, double& aAlt) const;
117 void InitialLocationLLA(double& aLat, double& aLon, double& aAlt) const;
118 WsfProxy::Position InitialLocation() const;
119 bool SetInitialLocation(const WsfProxy::Position& aPos) const;
120
121 void SetInitialLocationLLA(double aLat, double aLon, double aAlt);
122
123 std::string CommanderName(const std::string& aChainName) const;
124 bool RemoveFromCommandChain(const std::string& aChainName) const;
125 bool SetCommanderName(std::string aChainName, std::string aCommanderName) const;
126 std::vector<std::string> CommandChainNames() const;
127 std::vector<std::string> CommNetworkNames() const;
128
129 bool Rename(const std::string& aNewName);
130
131 // Handle platform renaming. Update command chain
132 void PlatformRenamed(const std::string& aOldName, const std::string& aNewName);
133
134 WsfPM_MoverMap MoverMap() const;
135 WsfPM_FuelMap FuelMap() const;
136 virtual WsfPM_ObjectMap GetTypeObjectMap(const WsfPProxyStructType& aProxyStruct);
137
138private:
139 std::string TrueCommNetworkName(const std::string& aNetworkName) const;
140 WsfPM_Waypoint FirstWaypoint() const;
141};
142
144
145#endif
WsfPM_ObjectMapT< WsfPM_Comm > WsfPM_CommMap
Definition WsfPM_Comm.hpp:54
WsfPM_ObjectMapT< WsfPM_Comm > WsfPM_FuelMap
Definition WsfPM_Fuel.hpp:31
WsfPM_ObjectMapT< WsfPM_Mover > WsfPM_MoverMap
Definition WsfPM_Mover.hpp:77
WsfPM_ObjectMapT< WsfPM_Platform > WsfPM_PlatformMap
Definition WsfPM_Platform.hpp:143
WsfPM_ObjectMapT< WsfPM_Processor > WsfPM_ProcessorMap
Definition WsfPM_Processor.hpp:33
WsfPM_ObjectMapT< WsfPM_Router > WsfPM_RouterMap
Definition WsfPM_Router.hpp:44
WsfPM_ObjectMapT< WsfPM_Sensor > WsfPM_SensorMap
Definition WsfPM_Sensor.hpp:30
WsfPM_ObjectMapT< WsfPM_Zone > WsfPM_ZoneMap
Definition WsfPM_Zone.hpp:297
Definition WsfPM_Fuel.hpp:22
Definition WsfPM_Mover.hpp:25
Definition WsfPM_ObjectMap.hpp:88
Definition WsfPM_ObjectMap.hpp:32
static const char * CommanderSelfValue()
Definition WsfPM_Platform.cpp:30
bool SetPosition(const WsfProxy::Position &aPosition)
Definition WsfPM_Platform.cpp:71
WsfPM_ObjectMap Commanders() const
Definition WsfPM_Platform.hpp:107
bool SetEffectiveAltitude(WsfProxy::Length aAltitude)
Definition WsfPM_Platform.cpp:580
WsfProxy::Angle Roll() const
Definition WsfPM_Platform.cpp:140
WsfProxy::Angle InitialHeading() const
Definition WsfPM_Platform.cpp:86
virtual WsfPProxyNode FindPart(const std::string &aName) const
Definition WsfPM_Platform.cpp:186
bool SetAltitude(const WsfProxy::Length &aAlt)
Definition WsfPM_Platform.cpp:662
std::string RadarSignature() const
Definition WsfPM_Platform.cpp:613
std::string OpticalSignature() const
Definition WsfPM_Platform.cpp:618
WsfPM_CommMap Comms() const
Definition WsfPM_Platform.cpp:166
WsfPM_Mover Mover() const
Definition WsfPM_Platform.cpp:161
WsfProxy::Angle Heading() const
Definition WsfPM_Platform.cpp:76
WsfPProxyNode HeadingNode() const noexcept
Definition WsfPM_Platform.cpp:81
WsfPM_Platform()
Definition WsfPM_Platform.cpp:22
std::string Side() const
Definition WsfPM_Platform.cpp:40
WsfProxy::Int AltitudeReference() const
Definition WsfPM_Platform.cpp:638
void SetPitch(const WsfProxy::Angle &aAngle)
Definition WsfPM_Platform.cpp:130
WsfPM_RouterMap Routers() const
Definition WsfPM_Platform.cpp:171
virtual ~WsfPM_Platform()=default
WsfPM_ZoneMap Zone() const
Definition WsfPM_Platform.hpp:108
bool SetAltitudeReferenceValue(wsf::proxy::AltitudeReferenceEnum aAltRef) noexcept
Definition WsfPM_Platform.cpp:672
wsf::proxy::AltitudeReferenceEnum EffectiveAGL() const noexcept
Definition WsfPM_Platform.cpp:545
WsfPProxyNode PositionNode() const
Definition WsfPM_Platform.cpp:66
WsfPProxyNode AltitudeNode() const
Definition WsfPM_Platform.cpp:633
void SetRoll(const WsfProxy::Angle &aAngle)
Definition WsfPM_Platform.cpp:146
std::string AcousticSignature() const
Definition WsfPM_Platform.cpp:623
WsfPM_SensorMap Sensors() const
Definition WsfPM_Platform.cpp:176
WsfPM_Fuel Fuel() const
Definition WsfPM_Platform.cpp:156
WsfPProxyNode AltitudeReferenceNode() const
Definition WsfPM_Platform.cpp:643
void SetHeading(const WsfProxy::Angle &aAngle)
Definition WsfPM_Platform.cpp:115
std::string Icon() const
Definition WsfPM_Platform.cpp:35
std::string InfraredSignature() const
Definition WsfPM_Platform.cpp:608
WsfProxy::Time CreationTime() const
Definition WsfPM_Platform.cpp:50
bool SetEffectiveAGL(bool aIsAGL) noexcept
Definition WsfPM_Platform.cpp:594
bool SetAltitudeReference(const WsfProxy::Int &aAltRef)
Definition WsfPM_Platform.cpp:667
wsf::proxy::AltitudeReferenceEnum AltitudeReferenceValue() const noexcept
Definition WsfPM_Platform.cpp:648
WsfProxy::Length Altitude() const
Definition WsfPM_Platform.cpp:628
WsfProxy::Position Position() const
Definition WsfPM_Platform.cpp:61
WsfProxy::Length EffectiveAltitude() const
Definition WsfPM_Platform.cpp:532
WsfProxy::Angle Pitch() const
Definition WsfPM_Platform.cpp:125
WsfPM_ProcessorMap Processors() const
Definition WsfPM_Platform.cpp:181
WsfPM_ObjectMap Categories() const
Definition WsfPM_Platform.hpp:109
bool Destructible() const
Definition WsfPM_Platform.cpp:45
Definition WsfPM_Waypoint.hpp:23
Definition WsfPProxyNode.hpp:60
WsfPProxyNode()
Definition WsfPProxyNode.cpp:24
Definition WsfPProxyStructType.hpp:33
Definition WsfPProxyBasicValues.hpp:89
Definition WsfPProxyBasicValues.hpp:41
NumericUnitaryValueT< UtTimeValue, WsfProxy::cTIME_VALUE > Time
Definition WsfPProxyBasicValues.hpp:415
NumericUnitaryValueT< UtAngleValue, WsfProxy::cANGLE_VALUE > Angle
Definition WsfPProxyBasicValues.hpp:445
Template specialization for wsf::comm::Address. Allows usage of Address in std::unordered_map/set.
Definition WsfCommAddress.hpp:185
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved