VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtModelSemanticsMapper.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #ifndef DtModelSemanticsMapper_H_
11 #define DtModelSemanticsMapper_H_
12 
13 #include <vrvCore/vrvCore.h>
15 
16 #include <map>
17 #include <string>
18 
19 namespace makVrv
20 {
21  class DtDe;
22  class DtBaseConnection;
28  {
29  public:
30 
32 
36  struct States
37  {
38  //The default state ids, note using a string of the exact text of an enumeration
39  //is a valid name for the id.
40  enum Id
41  {
42  invalidId = 0,
43  mobility = 1,
44  fire_power = 2,
45  damage = 3,
46  trailing_effects = 4,
47  hatch = 5,
48  moving = 6,
49  paint_scheme = 7,
50  density = 8,
51  frozen_status = 9,
52  power_plant_status = 10,
53  launcher = 11,
54  camouflage_type = 12,
55  concealed = 13,
56  head_lights = 14,
57  tail_lights = 15,
58  brake_lights = 16,
59  blackout_lights = 17,
60  blackout_brake_lights = 18,
61  spot_lights = 19,
62  interior_lights = 20,
63  afterburner = 21,
64  landing_lights = 22,
65  navigation_lights = 23,
66  anticollision_lights = 24,
67  formation_lights = 25,
68  launch_flash = 26,
69  smoke = 27,
70  flaming = 28,
71  running_lights = 29,
72  lights = 30,
73  life_form_state = 31,
74  weapon_1 = 32,
75  weapon_2 = 33,
76  flashlight = 34,
77  compliance = 35,
78  health = 36,
79  masked_cloaked = 37,
80  internal_heat_status = 38,
81  exterior_lights = 39,
82  mission = 40,
83  antenna = 41,
84  tent = 42,
85  ramp = 43,
86  wind_effect = 50, // things that change state due to wind
87  light_color = 51, // switch for light color on buoys and beacons
88  daymark = 52, // switch for daymark sign on beacons
89  daymark_shape = 53, // switch for daymark sign shape on beacons
90  topmark = 54, // switch for topmarks on beacons or buoys
91  topmark_shape = 55, // switch for topmark shapes on beacons or buoys
92  label_char_count = 56, // switch for number of characters on a label,
93  // with characters determined by UV offset into an atlas
94  shadow_polygon = 57, // switch for shadow polygon underneath cars and other objects
95  segment_count = 58, // switch for number of characters on a taxiway sign,
96  // with characters determined by UV offset into an atlas
97  // switch for the color of the expendable
98  exp_color = 59,
99  exp_parachute = 60, // expendable parachute state
100  lower_anti_collision_lights = 61,
101  upper_anti_collision_lights = 62,
102  anti_collision_lights_day_night = 63,
103  is_blinking = 64,
104  landing_gear_extended = 65,
105  cargo_doors_opened = 66,
106  navigation_position_brightness = 67,
107  reverse_thrust_engaged = 68,
108  weight_on_wheels = 69,
109  occupants_surrendered = 70,
110  nvg_mode = 71,
111  cover_shroud = 72,
112  signal_smoke = 73,
113  signal_mirror = 74,
114  ir_strobe = 75,
115  ir_illuminator = 76,
116  mounted_status = 77,
117  concealed_movement = 78,
118  flare_smoke_status = 79,
119  spot_chaff_status = 80,
120  supply_deployed_status = 81,
121  user_start = 500
122  };
123  };
124 
128  struct Parts
129  {
130  enum Id
131  {
132  rudder = 1024, // 32 X 32
133  left_flap = 1056, // 33 X 32
134  right_flap = 1088, // 34 X 32
135  left_aileron = 1120, // etc. all art part numbers are multiples of 32
136  right_aileron = 1152,
137  helicopter_main_rotor = 1184,
138  helicopter_tail_rotor = 1216,
139  other_aircraft_control_surfaces_defined_as_needed = 1248,
140  propeller_number_1 = 1280,
141  propeller_number_2 = 1312,
142  propeller_number_3 = 1344,
143  propeller_number_4 = 1376,
144  left_stabilator_stabilator_number_1 = 1408,
145  right_stabilator_stabilator_number_2 = 1440,
146  left_ruddervator_ruddervator_number_1 = 1472,
147  right_ruddervator_ruddervator_number_2 = 1504,
148  left_leading_edge_flap_slat = 1536,
149  right_leading_edge_flap_slat = 1568,
150  left_elevator = 1600,
151  right_elevator = 1632,
152  canard_left = 1664,
153  canard_right = 1696,
154  elevon_inner_left = 1728,
155  elevon_inner_right = 1760,
156  elevon_middle_left = 1792,
157  elevon_middle_right = 1824,
158  elevon_outer_left = 1856,
159  elevon_outer_right = 1888,
160  canopy_aircraft = 1920,
161  periscope = 2048,
162  generic_antenna = 2080,
163  snorkel = 2112,
164  other_extendible_parts_defined_as_needed = 2144,
165  dive_plane_sail_left = 2176,
166  dive_plane_sail_right = 2208,
167  dive_plane_bow_left = 2240,
168  dive_plane_bow_right = 2272,
169  dive_plane_stern_left = 2304,
170  dive_plane_stern_right = 2336,
171  landing_gear = 3072,
172  tail_hook = 3104,
173  speed_brake = 3136,
174  left_weapon_bay_door = 3168,
175  right_weapon_bay_doors = 3200,
176  tank_or_apc_hatch = 3232,
177  wingsweep = 3264,
178  bridge_launcher = 3296,
179  bridge_section_1 = 3328,
180  bridge_section_2 = 3360,
181  bridge_section_3 = 3392,
182  primary_blade_1 = 3424,
183  primary_blade_2 = 3456,
184  primary_boom = 3488,
185  primary_launcher_arm = 3520,
186  Landing_Gear_Nose = 3584,
187  Landing_Gear_Left_Main = 3616,
188  Landing_Gear_Right_Main = 3648,
189  Doors_of_Left_Side_Weapon_Bay = 3680,
190  Doors_of_Right_Side_Weapon_Bay = 3712,
191  Spot_Search_Light_1 = 3744,
192  Spot_Search_Light_2 = 3776,
193  Spot_Search_Light_3 = 3808,
194  Spot_Search_Light_4 = 3840,
195  Landing_Light = 3872,
196  other_fixed_position_parts_defined_as_needed = 3552,
197  primary_turret_number_1 = 4096,
198  primary_turret_number_2 = 4128,
199  primary_turret_number_3 = 4160,
200  primary_turret_number_4 = 4192,
201  primary_turret_number_5 = 4224,
202  primary_turret_number_6 = 4256,
203  primary_turret_number_7 = 4288,
204  primary_turret_number_8 = 4320,
205  primary_turret_number_9 = 4352,
206  primary_turret_number_10 = 4384,
207  primary_gun_number_1 = 4416,
208  primary_gun_number_2 = 4448,
209  primary_gun_number_3 = 4480,
210  primary_gun_number_4 = 4512,
211  primary_gun_number_5 = 4544,
212  primary_gun_number_6 = 4576,
213  primary_gun_number_7 = 4608,
214  primary_gun_number_8 = 4640,
215  primary_gun_number_9 = 4672,
216  primary_gun_number_10 = 4704,
217  primary_launcher_1 = 4736,
218  primary_launcher_2 = 4768,
219  primary_launcher_3 = 4800,
220  primary_launcher_4 = 4832,
221  primary_launcher_5 = 4864,
222  primary_launcher_6 = 4896,
223  primary_launcher_7 = 4928,
224  primary_launcher_8 = 4960,
225  primary_launcher_9 = 4992,
226  primary_launcher_10 = 5024,
227  primary_defense_systems_1 = 5056,
228  primary_defense_systems_2 = 5088,
229  primary_defense_systems_3 = 5120,
230  primary_defense_systems_4 = 5152,
231  primary_defense_systems_5 = 5184,
232  primary_defense_systems_6 = 5216,
233  primary_defense_systems_7 = 5248,
234  primary_defense_systems_8 = 5280,
235  primary_defense_systems_9 = 5312,
236  primary_defense_systems_10 = 5344,
237  primary_radar_1 = 5376,
238  primary_radar_2 = 5408,
239  primary_radar_3 = 5440,
240  primary_radar_4 = 5472,
241  primary_radar_5 = 5504,
242  primary_radar_6 = 5536,
243  primary_radar_7 = 5568,
244  primary_radar_8 = 5600,
245  primary_radar_9 = 5632,
246  primary_radar_10 = 5664,
247  secondary_turret_number_1 = 5696,
248  secondary_turret_number_2 = 5728,
249  secondary_turret_number_3 = 5760,
250  secondary_turret_number_4 = 5792,
251  secondary_turret_number_5 = 5824,
252  secondary_turret_number_6 = 5856,
253  secondary_turret_number_7 = 5888,
254  secondary_turret_number_8 = 5920,
255  secondary_turret_number_9 = 5952,
256  secondary_turret_number_10 = 5984,
257  secondary_gun_number_1 = 6016,
258  secondary_gun_number_2 = 6048,
259  secondary_gun_number_3 = 6080,
260  secondary_gun_number_4 = 6112,
261  secondary_gun_number_5 = 6144,
262  secondary_gun_number_6 = 6176,
263  secondary_gun_number_7 = 6208,
264  secondary_gun_number_8 = 6240,
265  secondary_gun_number_9 = 6272,
266  secondary_gun_number_10 = 6304,
267  secondary_launcher_1 = 6336,
268  secondary_launcher_2 = 6368,
269  secondary_launcher_3 = 6400,
270  secondary_launcher_4 = 6432,
271  secondary_launcher_5 = 6464,
272  secondary_launcher_6 = 6496,
273  secondary_launcher_7 = 6528,
274  secondary_launcher_8 = 6560,
275  secondary_launcher_9 = 6592,
276  secondary_launcher_10 = 6624,
277  secondary_defense_systems_1 = 6656,
278  secondary_defense_systems_2 = 6688,
279  secondary_defense_systems_3 = 6720,
280  secondary_defense_systems_4 = 6752,
281  secondary_defense_systems_5 = 6784,
282  secondary_defense_systems_6 = 6816,
283  secondary_defense_systems_7 = 6848,
284  secondary_defense_systems_8 = 6880,
285  secondary_defense_systems_9 = 6912,
286  secondary_defense_systems_10 = 6944,
287  secondary_radar_1 = 6976,
288  secondary_radar_2 = 7008,
289  secondary_radar_3 = 7040,
290  secondary_radar_4 = 7072,
291  secondary_radar_5 = 7104,
292  secondary_radar_6 = 7136,
293  secondary_radar_7 = 7168,
294  secondary_radar_8 = 7200,
295  secondary_radar_9 = 7232,
296  secondary_radar_10 = 7264,
297  deck_Elevator_1 = 7296,
298  deck_Elevator_2 = 7328,
299  catapult_1 = 7360,
300  catapult_2 = 7392,
301  jet_blast_deflector_1 = 7424,
302  jet_blast_deflector_2 = 7456,
303  arrestor_wires_1 = 7488,
304  arrestor_wires_2 = 7520,
305  arrestor_wires_3 = 7552,
306  wing__fold = 7584,
307  rotor_fold = 7584,
308  fuselage_fold = 7616,
309  Main_Cargo_Door = 7648,
310  cargo_ramp = 7680,
311  air_to_air_refueling_boom = 7680,
312  primary_aerial_refueling_receptacle_door = 7680,
313  secondary_aerial_refueling_receptacle_door = 7776,
314  aerial_refueling_receptacle_latch = 7808,
315  cargo_door_1 = 7840,
316  cargo_door_2 = 7872,
317  cargo_door_3 = 7904,
318  cargo_door_4 = 7936,
319  cargo_door_5 = 7968,
320  cargo_door_6 = 8000,
321  cargo_door_7 = 8032,
322  cargo_door_8 = 8064,
323  cargo_door_9 = 8096,
324  cargo_door_10 = 8128,
325  centre_refuelling_drogue = 8160,
326  port_refuelling_drogue = 8192,
327  starboard_refuelling_drogue = 8224,
328  submarine_engine_exhaust_mast = 8256,
329  submarine_mast_1 = 8288,
330  submarine_mast_2 = 8320,
331  submarine_mast_3 = 8352,
332  submarine_mast_4 = 8384,
333  submarine_mast_5 = 8416,
334  submarine_mast_6 = 8448,
335  submarine_mast_7 = 8480,
336  submarine_mast_8 = 8512,
337  submarine_mast_9 = 8544,
338  submarine_mast_10 = 8576,
339  vectored_thrust_nozzle = 8608,
340  left_door_of_the_left_weapon_bay = 8640,
341  right_door_of_the_left_weapon_bay = 8672,
342  left_door_of_the_right_weapon_bay = 8704,
343  right_door_of_the_right_weapon_bay = 8736,
344  gun_door = 8768,
345  countermeasure_door_left = 8800,
346  countermeasure_door_right = 8832,
347  hook_door_forward = 8864,
348  hook_door_aft = 8896,
349  lift_fan_upper_door = 8928,
350  lift_fan_lower_door_left = 8960,
351  lift_fan_lower_door_right = 8992,
352  refuel_probe_door = 9024,
353  left_engine_nacelle = 9056,
354  right_engine_nacelle = 9088,
355  first_left_wheel = 9120, // wheels
356  first_right_wheel = 9152,
357  second_left_wheel = 9184,
358  second_right_wheel = 9216,
359  third_left_wheel = 9248,
360  third_right_wheel = 9280,
361  fourth_left_wheel = 9312,
362  fourth_right_wheel = 9344,
363  fifth_left_wheel = 9376,
364  fifth_right_wheel = 9408,
365  sixth_left_wheel = 9440,
366  sixth_right_wheel = 9472,
367  seventh_left_wheel = 9504,
368  seventh_right_wheel = 9536,
369  eighth_left_wheel = 9568,
370  eighth_right_wheel = 9600,
371  ninth_left_wheel = 9632,
372  ninth_right_wheel = 9664,
373  tenth_left_wheel = 9696,
374  tenth_right_wheel = 9728, // 304 X 32
375  refueling_probe = 9760,
376  steering_wheel = 9792,
377  //
378  // For MAK extensions, start at the opposite end and work backwards
379  // largest value in 32 bit field that is a multiple of 32 is 134,217,727? X 32 = 4,294,967,264?
380  // However, we don't really need *that* many, and since the risk of someone not using *unsigned*
381  // or *short* (or both) somewhere along the pipeline is real, lets used max signed short instead
382  //
383  wind_blades = 32736, // 1023 X 32 parts that rotate into the wind direction
384  wind_direction = 32704 // 1022 X 32 parts that rotate based on wind speed, like turbine blades
385  };
386  };
387 
388 
390  static DtModelSemanticsMapper& instance(DtDe&);
391 
393  virtual DtModelSemanticsMapper* clone();
394 
396  static void copyInstance( DtBaseConnection& con, DtDe& de);
397 
399  static DtModelSemanticsMapper& instance( DtBaseConnection& con );
400 
401  virtual ~DtModelSemanticsMapper();
402 
409  const std::string* findStateName(States::Id id) const;
410 
418  const States::Id* findStateId(const std::string& name) const;
419 
426  const std::string* findPartName(Parts::Id id) const;
427 
435  const Parts::Id* findPartId(const std::string& name) const;
436 
438  void addState(const std::string& name, States::Id id);
439 
441  void removeState(const std::string& name);
442 
444  void addPart(const std::string& name, Parts::Id id);
445 
447  void removePart( const std::string& name);
448 
449  protected:
450 
454  virtual std::string cleanUpName(const std::string&) const;
455 
457 
459  virtual void initialize();
460 
461  typedef std::map<std::string,States::Id> StateNameToIdMap;
462  typedef std::map<States::Id,std::string> StateIdToNameMap;
463 
464  typedef std::map<std::string,Parts::Id> PartNameToIdMap;
465  typedef std::map<Parts::Id,std::string> PartIdToNameMap;
466 
469 
472  };
473 
477  {
478  public:
479 
481  static void registerInstance(DtDe& de,DtModelSemanticsMapperCreator*);
482 
483 
486  static DtModelSemanticsMapperCreator& instance(DtDe& de);
487 
490 
493 
495  virtual DtModelSemanticsMapper* create();
496 
497  };
498 
499 }
500 
501 #endif
502 
Id
Definition: DtModelSemanticsMapper.h:130
Virtual base class.
Definition: DtVirtualBaseClass.h:19
std::map< std::string, States::Id > StateNameToIdMap
Definition: DtModelSemanticsMapper.h:461
std::map< Parts::Id, std::string > PartIdToNameMap
Definition: DtModelSemanticsMapper.h:465
Default mapper creator, registered by the DtDe.
Definition: DtModelSemanticsMapper.h:476
PartIdToNameMap myPartIdsToNames
Definition: DtModelSemanticsMapper.h:471
std::map< States::Id, std::string > StateIdToNameMap
Definition: DtModelSemanticsMapper.h:462
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:34
PartNameToIdMap myPartNamesToIds
Definition: DtModelSemanticsMapper.h:470
Contains makVrv::DtVirtualBaseClass class.
This struct is used like a namespace.
Definition: DtModelSemanticsMapper.h:36
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
StateNameToIdMap myStateNamesToIds
Definition: DtModelSemanticsMapper.h:467
This struct is used like a namespace.
Definition: DtModelSemanticsMapper.h:128
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
StateIdToNameMap myStateIdsToNames
Definition: DtModelSemanticsMapper.h:468
Id
Definition: DtModelSemanticsMapper.h:40
std::map< std::string, Parts::Id > PartNameToIdMap
Definition: DtModelSemanticsMapper.h:464
The DtModelSemanticsMapper object is responsible for mapping Names of model semantics declarations (f...
Definition: DtModelSemanticsMapper.h:27
Contains DLL export macros.

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)