Files
gtav-src/script/dev_ng/singleplayer/scripts/Ambient/BaseJumping/bj_camera.sch
T
2025-09-29 00:52:08 +02:00

66 lines
1.8 KiB
XML
Executable File

//////////////////////////////////////////////////////////////////////
/* bj_camera.sch */
/* Authors: DJ Jones & Yomal Perera */
/* Camera definitions for base jumping oddjob. */
//////////////////////////////////////////////////////////////////////
// List of available cameras.
ENUM BJ_CAMERA_ID
BJCAMERAID_PRIMARY_CAM,
BJCAMERAID_SECONDARY_CAM,
BJCAMERAIDS
ENDENUM
// Keep track of interp to game cam.
ENUM BJ_CAMERA_INTERP_STATE
BJCAMERAINTERPSTATE_NOT_STARTED,
BJCAMERAINTERPSTATE_SCRIPTED_INTERP,
BJCAMERAINTERPSTATE_INTERP_TO_GAME,
BJCAMERAINTERPSTATE_FINISHED
ENDENUM
// Set of all available cameras.
STRUCT BJ_CAMERA_SET
CAMERA_INDEX cameras[BJCAMERAIDS]
BJ_CAMERA_INTERP_STATE bjCamInterpState
ENDSTRUCT
// Accessor for camera index.
FUNC CAMERA_INDEX BJ_GET_CAMERA_OBJECT(BJ_CAMERA_SET& cameraSet, BJ_CAMERA_ID camID)
IF camID >= BJCAMERAIDS
SCRIPT_ASSERT("Passed an invalid camera ID to BJ_GET_CAMERA_OBJECT!")
RETURN NULL
ENDIF
RETURN cameraSet.cameras[camID]
ENDFUNC
// Mutator for camera index.
PROC BJ_SET_CAMERA_OBJECT(BJ_CAMERA_SET& cameraSet, BJ_CAMERA_ID camID, CAMERA_INDEX camIndex, BOOL bCheckValid = TRUE)
IF camID >= BJCAMERAIDS
SCRIPT_ASSERT("Passed an invalid camera ID to BJ_SET_CAMERA_OBJECT!")
EXIT
ENDIF
IF bCheckValid AND NOT DOES_CAM_EXIST(camIndex)
SCRIPT_ASSERT("Tried to assign nonexistent entity to camera! NOT GONNA HAPPEN!")
EXIT
ENDIF
cameraSet.cameras[camID] = camIndex
ENDPROC
// Mutator for current active camera.
PROC BJ_SET_ACTIVE_CAMERA(BJ_CAMERA_SET& cameraSet, BJ_CAMERA_ID activeCam, BOOL bTurnOn = FALSE)
IF activeCam >= BJCAMERAIDS
SCRIPT_ASSERT("Passed an invalid camera ID to BJ_SET_ACTIVE_CAMERA!")
EXIT
ENDIF
SET_CAM_ACTIVE(cameraSet.cameras[activeCam], bTurnOn)
ENDPROC