void update_kiowa_virtual_cockpit (void) { int depth, draw_glass_cockpit, draw_controls, draw_crew, draw_pilot_cockpit, draw_co_pilot_cockpit; object_3d_sub_object_search_data search; //////////////////////////////////////// // // sort out what to draw // //////////////////////////////////////// switch (get_view_mode ()) { case VIEW_MODE_VIRTUAL_COCKPIT_CREW: case VIEW_MODE_VIRTUAL_COCKPIT_PILOT_LHS_DISPLAY: case VIEW_MODE_VIRTUAL_COCKPIT_PILOT_RHS_DISPLAY: case VIEW_MODE_VIRTUAL_COCKPIT_CO_PILOT_LHS_DISPLAY: case VIEW_MODE_VIRTUAL_COCKPIT_CO_PILOT_RHS_DISPLAY: { draw_glass_cockpit = FALSE; break; } default: { draw_glass_cockpit = get_global_glass_cockpit (); break; } } draw_controls = !draw_glass_cockpit; if (get_view_mode () == VIEW_MODE_VIRTUAL_COCKPIT_CREW) { draw_pilot_cockpit = TRUE; draw_co_pilot_cockpit = TRUE; } else { if (get_crew_role () == CREW_ROLE_PILOT) { draw_pilot_cockpit = TRUE; draw_co_pilot_cockpit = FALSE; } else { draw_pilot_cockpit = FALSE; draw_co_pilot_cockpit = TRUE; } } // // select 3D instance // if (draw_glass_cockpit) { if (virtual_cockpit_inst3d != virtual_cockpit_inst3d_detail_level_glass_inst3d) { virtual_cockpit_inst3d_detail_level_glass_inst3d->vp = virtual_cockpit_inst3d->vp; virtual_cockpit_inst3d = virtual_cockpit_inst3d_detail_level_glass_inst3d; } } else { if (virtual_cockpit_inst3d != virtual_cockpit_inst3d_detail_level_normal_inst3d) { virtual_cockpit_inst3d_detail_level_normal_inst3d->vp = virtual_cockpit_inst3d->vp; virtual_cockpit_inst3d = virtual_cockpit_inst3d_detail_level_normal_inst3d; } } // // draw cockpits // depth = 0; for (;;) { search.search_depth = depth; search.search_object = virtual_cockpit_inst3d; search.sub_object_index = OBJECT_3D_SUB_OBJECT_VISIBLE_TO_PILOT; if (find_object_3d_sub_object (&search) == SUB_OBJECT_SEARCH_RESULT_OBJECT_FOUND) { search.result_sub_object->visible_object = draw_pilot_cockpit; } else { break; } depth++; } depth = 0; for (;;) { search.search_depth = depth; search.search_object = virtual_cockpit_inst3d; search.sub_object_index = OBJECT_3D_SUB_OBJECT_VISIBLE_TO_WSO; if (find_object_3d_sub_object (&search) == SUB_OBJECT_SEARCH_RESULT_OBJECT_FOUND) { search.result_sub_object->visible_object = draw_co_pilot_cockpit; } else { break; } depth++; } // // draw crew // //VJ 050206: wideview improvement show other pilot when in wideview draw_crew = !(get_global_wide_cockpit () && wide_cockpit_nr == WIDEVIEW_KIOWA_PILOT); search.search_depth = 0; search.search_object = virtual_cockpit_inst3d; search.sub_object_index = OBJECT_3D_SUB_OBJECT_COMANCHE_PILOT_VISIBLE; if (find_object_3d_sub_object (&search) == SUB_OBJECT_SEARCH_RESULT_OBJECT_FOUND) { search.result_sub_object->visible_object = draw_crew; } //VJ 050206: wideview improvement show other pilot when in wideview draw_crew = !(get_global_wide_cockpit () && wide_cockpit_nr == WIDEVIEW_KIOWA_COPILOT); search.search_depth = 0; search.search_object = virtual_cockpit_inst3d; search.sub_object_index = OBJECT_3D_SUB_OBJECT_COMANCHE_WSO_VISIBLE; if (find_object_3d_sub_object (&search) == SUB_OBJECT_SEARCH_RESULT_OBJECT_FOUND) { search.result_sub_object->visible_object = draw_crew; } // // draw controls // search.search_depth = 0; search.search_object = virtual_cockpit_inst3d; search.sub_object_index = OBJECT_3D_SUB_OBJECT_COCKPIT_PILOT_JOYSTICK; if (find_object_3d_sub_object (&search) == SUB_OBJECT_SEARCH_RESULT_OBJECT_FOUND) { search.result_sub_object->visible_object = draw_controls; } search.search_depth = 0; search.search_object = virtual_cockpit_inst3d; search.sub_object_index = OBJECT_3D_SUB_OBJECT_COCKPIT_PILOT_COLLECTIVE; if (find_object_3d_sub_object (&search) == SUB_OBJECT_SEARCH_RESULT_OBJECT_FOUND) { search.result_sub_object->visible_object = draw_controls; } search.search_depth = 0; search.search_object = virtual_cockpit_inst3d; search.sub_object_index = OBJECT_3D_SUB_OBJECT_COCKPIT_WSO_JOYSTICK; if (find_object_3d_sub_object (&search) == SUB_OBJECT_SEARCH_RESULT_OBJECT_FOUND) { search.result_sub_object->visible_object = draw_controls; } search.search_depth = 0; search.search_object = virtual_cockpit_inst3d; search.sub_object_index = OBJECT_3D_SUB_OBJECT_COCKPIT_WSO_COLLECTIVE; if (find_object_3d_sub_object (&search) == SUB_OBJECT_SEARCH_RESULT_OBJECT_FOUND) { search.result_sub_object->visible_object = draw_controls; } //////////////////////////////////////// // // update animations // //////////////////////////////////////// // // crew animation // update_kiowa_crew_animation (); // // canopy doors // animate_kiowa_virtual_cockpit_canopy_doors (); //////////////////////////////////////// // // sort static hands // //////////////////////////////////////// if (!draw_crew) { search.search_depth = 0; search.search_object = virtual_cockpit_inst3d; search.sub_object_index = OBJECT_3D_SUB_OBJECT_COCKPIT_PILOT_HAND_STATIC; if (find_object_3d_sub_object (&search) == SUB_OBJECT_SEARCH_RESULT_OBJECT_FOUND) { search.result_sub_object->visible_object = FALSE; } search.search_depth = 0; search.search_object = virtual_cockpit_inst3d; search.sub_object_index = OBJECT_3D_SUB_OBJECT_COCKPIT_WSO_HAND_STATIC; if (find_object_3d_sub_object (&search) == SUB_OBJECT_SEARCH_RESULT_OBJECT_FOUND) { search.result_sub_object->visible_object = FALSE; } } }
void select_hokum_target_acquisition_system (target_acquisition_systems system) { target_acquisition_systems new_system, old_system; int damaged; new_system = system; old_system = target_acquisition_system; damaged = FALSE; reset_common_target_acquisition_system_keys (); deselect_hokum_target_acquisition_system (target_acquisition_system); switch (system) { //////////////////////////////////////// case TARGET_ACQUISITION_SYSTEM_OFF: //////////////////////////////////////// { target_acquisition_system = system; set_gunship_target (NULL); #if 0 hud_mode = HUD_MODE_NAVIGATION; #endif break; } //////////////////////////////////////// case TARGET_ACQUISITION_SYSTEM_GROUND_RADAR: //////////////////////////////////////// { if (!hokum_damage.radar) { target_acquisition_system = system; activate_common_ground_radar (); select_hokum_ground_radar_mfd (); hud_mode = HUD_MODE_WEAPON; } damaged = hokum_damage.radar; break; } //////////////////////////////////////// case TARGET_ACQUISITION_SYSTEM_AIR_RADAR: //////////////////////////////////////// { if (!hokum_damage.radar) { target_acquisition_system = system; activate_common_air_radar (); select_hokum_air_radar_mfd (); hud_mode = HUD_MODE_WEAPON; } damaged = hokum_damage.radar; break; } //////////////////////////////////////// case TARGET_ACQUISITION_SYSTEM_FLIR: //////////////////////////////////////// { if (!hokum_damage.flir) { target_acquisition_system = system; activate_common_eo (); select_hokum_eo_mfd (); hud_mode = HUD_MODE_WEAPON; } damaged = hokum_damage.flir; break; } //////////////////////////////////////// case TARGET_ACQUISITION_SYSTEM_LLLTV: //////////////////////////////////////// { if (!hokum_damage.llltv) { target_acquisition_system = system; activate_common_eo (); select_hokum_eo_mfd (); hud_mode = HUD_MODE_WEAPON; } damaged = hokum_damage.llltv; break; } //////////////////////////////////////// case TARGET_ACQUISITION_SYSTEM_PERISCOPE: //////////////////////////////////////// { if (!hokum_damage.periscope) { target_acquisition_system = system; activate_common_eo (); if (get_crew_role () == CREW_ROLE_PILOT) { set_co_pilot_seat_position (); } if (get_crew_role () == CREW_ROLE_CO_PILOT) { set_view_mode (VIEW_MODE_VIRTUAL_COCKPIT_PERISCOPE); } select_hokum_eo_mfd (); hud_mode = HUD_MODE_WEAPON; } damaged = hokum_damage.periscope; break; } //////////////////////////////////////// case TARGET_ACQUISITION_SYSTEM_HMS: //////////////////////////////////////// { if (!hokum_damage.helmet_mounted_sight) { target_acquisition_system = system; activate_common_hms (); hud_mode = HUD_MODE_WEAPON; } damaged = hokum_damage.helmet_mounted_sight; break; } //////////////////////////////////////// default: //////////////////////////////////////// { debug_fatal ("Invalid target acquisition system = %d", system); break; } } play_common_cpg_target_acquisition_system_speech (new_system, old_system, damaged); }