USING "script_oddjob_funcs.sch" USING "Towing.sch" FUNC BOOL SETUP_SPECIAL_CAM(TOW_CAM_ARGS& towArgs, ENTITY_INDEX entity, INT& iToggle) DESTROY_CAM(towArgs.towCam) RENDER_SCRIPT_CAMS(FALSE, FALSE) VECTOR vAttach VECTOR vPoint FLOAT fFov MODEL_NAMES mnBrokenDownVehicle UNUSED_PARAMETER(iToggle) SWITCH chosenNodeType CASE NODE_TYPE_DYNAMIC vAttach = <<-1.4812, -0.4765, 0.7772>> //<<-2.0617, -0.0898, 1.0993>> vPoint = <<0.6369, 1.5805, 0.2461>> //<<-0.1480, 2.0858, 0.3219>> fFov = 50 BREAK CASE NODE_TYPE_HANDI //and sexxxx //outside of car //IF iToggle = 0 vAttach = <<0.4088, 2.5854, 1.3483>> vPoint = <<-0.1605, -0.2434, 0.5274>> fFov = 50 //iToggle = 1 // ELSE // //insdie of car // vAttach = <<-0.4883, -2.1660, 1.1279>> // vPoint = <<0.3760, 0.6225, 0.4367>> // fFov = 52.3985 // iToggle = 0 // ENDIF BREAK CASE NODE_TYPE_ABANDON mnBrokenDownVehicle = GET_ENTITY_MODEL(entity) SWITCH mnBrokenDownVehicle CASE buccaneer vAttach = <<0.2323, 0.4607, 0.6705>> vPoint = <<1.2216, -2.3210, 0.1387>> PRINTLN("MODEL = BUCCANEER") BREAK //--------------------------------------- CASE FUTO vAttach = <<0.2335, 0.4782, 0.6074>> vPoint = <<1.2177, -2.2207, -0.2570>> PRINTLN("MODEL = FUTO") BREAK //--------------------------------------- CASE MANANA vAttach = <<0.2692, 0.2233, 0.5622>> vPoint = <<1.1703, -2.3976, -0.5863>> PRINTLN("MODEL = MANANA") BREAK //--------------------------------------- CASE RUINER vAttach = <<0.3012, 0.2936, 0.3770>> vPoint = <<0.9845, -2.4433, -0.6440>> PRINTLN("MODEL = RUINER") BREAK //--------------------------------------- CASE TORNADO3 vAttach = <<0.3196, 0.6089, 0.4949>> vPoint = <<0.8955, -2.2021, -0.3804>> PRINTLN("MODEL = TORNADO3") BREAK //--------------------------------------- CASE VOODOO2 vAttach = <<0.3016, 0.5664, 0.5030>> vPoint = <<0.7218, -2.1898, -0.6047>> PRINTLN("MODEL = VOODOO2") BREAK //--------------------------------------- CASE SURFER2 vAttach = <<0.1942, 1.6207, 0.6794>> vPoint = <<0.9982, -1.1537, -0.1309>> PRINTLN("MODEL = SURFER2") BREAK //--------------------------------------- CASE EMPEROR2 vAttach = <<0.2288, 0.5263, 0.6031>> vPoint = <<1.3152, -2.0483, -0.4883>> PRINTLN("MODEL = EMPEROR2") BREAK //--------------------------------------- CASE STANIER vAttach = <<0.2013, 0.6176, 0.5514>> vPoint = <<1.0234, -2.1522, -0.2563>> PRINTLN("MODEL = STANIER") BREAK //--------------------------------------- CASE TAILGATER vAttach = <<0.2166, 0.6582, 0.5162>> vPoint = <<1.2456, -2.0704, -0.1882>> PRINTLN("MODEL = TAILGATER") BREAK //--------------------------------------- DEFAULT vAttach = <<-0.0255, 0.4396, 0.6165>> vPoint = <<2.1178, -1.5317, -0.1047>> PRINTLN("USING DEFAULT") BREAK ENDSWITCH fFov = 61.4303 BREAK CASE NODE_TYPE_ACCIDENT vAttach = <<3.1631, 4.1912, 1.4362>> vPoint = <<1.1460, 2.1282, 0.6146>> fFov = 45 BREAK ENDSWITCH IF NOT DOES_CAM_EXIST(towArgs.towCam) towArgs.towCam = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, <<0,0,0>>, <<0,0,0>>, fFov, FALSE) ENDIF ATTACH_CAM_TO_ENTITY(towArgs.towCam, entity, vAttach) POINT_CAM_AT_ENTITY(towArgs.towCam, entity, vPoint) SET_CAM_CONTROLS_MINI_MAP_HEADING(towArgs.towCam, TRUE) SET_CAM_ACTIVE(towArgs.towCam, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) RETURN TRUE ENDFUNC //Camera that looks at the train from inside the stalled car FUNC BOOL SETUP_TRAIN_CAM(TOW_CAM_ARGS& towArgs, ENTITY_INDEX entity, ENTITY_INDEX train, INT& iToggle, BOOL bDisablePedCam) VECTOR vTemp, vTemp2 FLOAT fDistance DEBUG_MESSAGE("SETUP_TRAIN_CAM") DESTROY_CAM(towArgs.towCam) RENDER_SCRIPT_CAMS(FALSE, FALSE) //TODO if the vehicle isn't flying.. don't do bomb cam. //IF EVALUATE_DROP_CONDITIONS(cargoArgs) IF NOT DOES_CAM_EXIST(towArgs.towCam) towArgs.towCam = CREATE_CAMERA_WITH_PARAMS(CAMTYPE_SCRIPTED, <<0,0,0>>, <<0,0,0>>, 45, FALSE) SET_CAM_CONTROLS_MINI_MAP_HEADING(towArgs.towCam, TRUE) ENDIF IF bDisablePedCam IF iToggle = 0 iToggle = 1 ENDIF ENDIF IF iToggle = 0 PRINTLN("iToggle = 0") vTemp = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(entity, <<0.8612, 0.2242, 0.6459>>) fDistance = GET_ENTITY_DISTANCE_FROM_LOCATION(train, vTemp) vTemp2 = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(entity, <<-1.0507, -0.0044, 0.6659>>) IF fDistance < GET_ENTITY_DISTANCE_FROM_LOCATION(train, vTemp2) ATTACH_CAM_TO_ENTITY(towArgs.towCam, entity, <<-1.0507, -0.0044, 0.6659>>) //SET_CAM_COORD(towArgs.towCam, vTemp2) POINT_CAM_AT_ENTITY(towArgs.towCam, entity, <<1.9171, 0.4113, 0.5271>>) SET_CAM_FOV(towArgs.towCam, 45.0000) // Stop train scene if it's running IF IS_AUDIO_SCENE_ACTIVE("TOWING_FOCUS_CAM_INSIDE_TRAIN") STOP_AUDIO_SCENE("TOWING_FOCUS_CAM_INSIDE_TRAIN") PRINTLN("STOPPING AUDIO SCENE - TOWING_FOCUS_CAM_INSIDE_TRAIN") ENDIF // Start inside care if it's not running IF NOT IS_AUDIO_SCENE_ACTIVE("TOWING_FOCUS_CAM_INSIDE_CAR") START_AUDIO_SCENE("TOWING_FOCUS_CAM_INSIDE_CAR") PRINTLN("STARTING AUDIO SCENE - TOWING_FOCUS_CAM_INSIDE_CAR") ENDIF ELSE ATTACH_CAM_TO_ENTITY(towArgs.towCam, entity, <<0.8612, 0.2242, 0.6459>>) //SET_CAM_COORD(towArgs.towCam, vTemp) POINT_CAM_AT_ENTITY(towArgs.towCam, entity, <<-2.1158, -0.0459, 0.3911>>) SET_CAM_FOV(towArgs.towCam, 50.0000) // Stop train scene if it's running IF IS_AUDIO_SCENE_ACTIVE("TOWING_FOCUS_CAM_INSIDE_TRAIN") STOP_AUDIO_SCENE("TOWING_FOCUS_CAM_INSIDE_TRAIN") PRINTLN("STOPPING AUDIO SCENE - TOWING_FOCUS_CAM_INSIDE_TRAIN") ENDIF // Start inside care if it's not running IF NOT IS_AUDIO_SCENE_ACTIVE("TOWING_FOCUS_CAM_INSIDE_CAR") START_AUDIO_SCENE("TOWING_FOCUS_CAM_INSIDE_CAR") PRINTLN("STARTING AUDIO SCENE - TOWING_FOCUS_CAM_INSIDE_CAR") ENDIF ENDIF iToggle++ ELIF iToggle = 1 PRINTLN("iToggle = 1") ATTACH_CAM_TO_ENTITY(towArgs.towCam, train, <<-0.0021, 6.5179, 3.2083>>) POINT_CAM_AT_ENTITY(towArgs.towCam, train, <<0.0107, 9.1227, 1.7200>>) SET_CAM_FOV(towArgs.towCam, 67.9193) iToggle = 0 IF IS_AUDIO_SCENE_ACTIVE("TOWING_FOCUS_CAM_INSIDE_CAR") STOP_AUDIO_SCENE("TOWING_FOCUS_CAM_INSIDE_CAR") PRINTLN("STOPPING AUDIO SCENE INSIDE CAR - 02") ENDIF IF NOT IS_AUDIO_SCENE_ACTIVE("TOWING_FOCUS_CAM_INSIDE_TRAIN") START_AUDIO_SCENE("TOWING_FOCUS_CAM_INSIDE_TRAIN") PRINTLN("GOING INSIDE TRAIN") ENDIF ENDIF SET_CAM_ACTIVE(towArgs.towCam, TRUE) RENDER_SCRIPT_CAMS(TRUE, FALSE) towArgs.iCamTime = GET_GAME_TIMER() RETURN TRUE ENDFUNC PROC CLEANUP_CAM(TOW_CAM_ARGS& towArgs) towArgs.iCamTime = 0 DESTROY_CAM(towArgs.towCam) RENDER_SCRIPT_CAMS(FALSE, FALSE) ENDPROC