31 std::string_view
getTypeString(
void)
const override {
return "carrier"; }
34 void setSign(
const std::string&);
57 bool getParkPosition(
const std::string&
id, SGGeod& geodPos,
double& hdng, SGVec3d& uvw);
78 virtual simgear::Emesary::ReceiptStatus
Receive(simgear::Emesary::INotificationPtr n)
override;
84 explicit ParkPosition(
const ParkPosition& pp)
85 :
name(pp.
name), offset(pp.offset), heading_deg(pp.heading_deg)
88 ParkPosition(
const std::string& n,
const SGVec3d& off = SGVec3d(),
double heading = 0)
89 : name(n), offset(off), heading_deg(heading)
98 void update(
double dt)
override;
100 void UpdateElevator(
double dt);
101 void UpdateJBD(
double dt);
103 bool _AIControl =
false;
104 SGPropertyNode_ptr _ai_latch_node;
105 SGPropertyNode_ptr _altitude_node;
106 double _angled_deck_degrees = -8.55;
107 double _base_course = 0;
108 double _base_speed = 0;
109 double _deck_altitude_ft = 65.0065;
110 double _elevator_pos_norm = 0;
111 double _elevator_pos_norm_raw = 0;
112 double _elevator_time_constant = 0;
113 double _elevator_transition_time = 0;
114 bool _elevators =
false;
115 double _flols_angle = 0;
116 double _flols_dist = 0;
117 int _flols_visible_light = 0;
118 SGPropertyNode_ptr _flols_x_node;
119 SGPropertyNode_ptr _flols_y_node;
120 SGPropertyNode_ptr _flols_z_node;
121 double _flolsApproachAngle = 3.0;
122 double _flolsHeadingOffsetDeg = 0.0;
123 SGVec3d _flolsPosOffset;
124 SGVec3d _flolsTouchdownPosition;
125 SGPropertyNode_ptr _heading_node;
126 bool _in_to_wind =
false;
128 double _jbd_elevator_pos_norm = 0;
129 double _jbd_elevator_pos_norm_raw = 0;
130 double _jbd_time_constant = 0;
131 double _jbd_transition_time = 0;
132 SGPropertyNode_ptr _latitude_node;
133 SGPropertyNode_ptr _launchbar_state_node;
135 SGPropertyNode_ptr _longitude_node;
136 SGVec3d _lsoPosition;
142 bool _MPControl =
false;
143 SGPropertyNode_ptr _pitch_node;
144 std::list<ParkPosition> _ppositions;
145 double _rel_wind = 0;
146 double _rel_wind_from_deg = 0;
147 double _rel_wind_speed_kts = 0;
148 bool _returning =
false;
149 SGPropertyNode_ptr _roll_node;
151 SGPropertyNode_ptr _surface_wind_from_deg_node;
152 SGPropertyNode_ptr _surface_wind_speed_node;
153 std::string _TACAN_channel_id;
154 SGVec3d _towerPosition;
155 bool _turn_to_base_course =
true;
156 bool _turn_to_launch_hdg =
true;
157 bool _turn_to_recovery_hdg =
true;
159 SGPropertyNode_ptr _view_position_alt_ft_node;
160 SGPropertyNode_ptr _view_position_lat_deg_node;
161 SGPropertyNode_ptr _view_position_lon_deg_node;
162 bool _wave_off_lights_demand =
false;
163 double _wind_from_deg = 0;
164 double _wind_from_east = 0;
165 double _wind_from_north = 0;
166 double _wind_speed_kts = 0;
167 SGPropertyNode_ptr _is_user_craft;
static void extractCarriersFromScenario(SGPropertyNode_ptr xmlNode, SGPropertyNode_ptr scenario)
for a given scenario node, check for carriers within, and write nodes with names, pennants and initia...