4040 lines
164 KiB
C++
4040 lines
164 KiB
C++
//
|
|
// script/commands_camera.cpp
|
|
//
|
|
// Copyright (C) 1999-2011 Rockstar Games. All Rights Reserved.
|
|
//
|
|
|
|
#include "script/wrapper.h"
|
|
|
|
#include "fwanimation/directorcomponentsyncedscene.h"
|
|
|
|
#include "animation/debug/AnimViewer.h"
|
|
#include "camera/CamInterface.h"
|
|
#include "camera/cinematic/CinematicDirector.h"
|
|
#include "camera/cinematic/camera/mounted/CinematicMountedCamera.h"
|
|
#include "camera/cinematic/context/CinematicInVehicleContext.h"
|
|
#include "camera/cinematic/context/CinematicInVehicleOverriddenFirstPersonContext.h"
|
|
#include "camera/cinematic/context/CinematicScriptContext.h"
|
|
#include "camera/debug/DebugDirector.h"
|
|
#include "camera/cutscene/CutsceneDirector.h"
|
|
#include "camera/debug/FreeCamera.h"
|
|
#include "camera/gameplay/GameplayDirector.h"
|
|
#include "camera/gameplay/aim/ThirdPersonAimCamera.h"
|
|
#include "camera/gameplay/aim/FirstPersonShooterCamera.h"
|
|
#include "camera/gameplay/follow/FollowPedCamera.h"
|
|
#include "camera/helpers/ControlHelper.h"
|
|
#include "camera/helpers/FrameInterpolator.h"
|
|
#include "camera/helpers/FrameShaker.h"
|
|
#include "camera/helpers/AnimatedFrameShaker.h"
|
|
#include "camera/replay/ReplayDirector.h"
|
|
#include "camera/scripted/BaseSplineCamera.h"
|
|
#include "camera/scripted/CustomTimedSplineCamera.h"
|
|
#include "camera/scripted/ScriptDirector.h"
|
|
#include "camera/scripted/ScriptedCamera.h"
|
|
#include "camera/scripted/ScriptedFlyCamera.h"
|
|
#include "camera/syncedscene/SyncedSceneDirector.h"
|
|
#include "camera/system/CameraManager.h"
|
|
#include "camera/viewports/ViewportManager.h"
|
|
#include "frontend/PauseMenu.h"
|
|
#include "peds/ped.h"
|
|
#include "peds/pedpopulation.h"
|
|
#include "renderer/PostProcessFX.h"
|
|
#include "script/script_channel.h"
|
|
#include "script/Handlers/GameScriptResources.h"
|
|
#include "script/script_helper.h"
|
|
#include "task/Animation/TaskScriptedAnimation.h"
|
|
#include "vehicles/vehiclepopulation.h"
|
|
|
|
#include "control/replay/replay.h"
|
|
|
|
CAMERA_OPTIMISATIONS()
|
|
|
|
const s32 INVALID_CAM_INDEX = -1;
|
|
|
|
#if __BANK
|
|
#define REGISTER_CAMERA_SCRIPT_COMMAND(FORMAT, ...) camManager::DebugRegisterScriptCommand(__FUNCTION__, FORMAT, __VA_ARGS__)
|
|
#define REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS() camManager::DebugRegisterScriptCommand(__FUNCTION__, "")
|
|
#else
|
|
#define REGISTER_CAMERA_SCRIPT_COMMAND(FORMAT, ...)
|
|
#define REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS()
|
|
#endif //SCRIPT_DEBUGGING
|
|
|
|
namespace camera_commands
|
|
{
|
|
camBaseCamera* GetCameraFromIndex(int cameraIndex, const char* ASSERT_ONLY(commandName))
|
|
{
|
|
camBaseCamera* camera = camBaseCamera::GetCameraAtPoolIndex(cameraIndex);
|
|
SCRIPT_ASSERT_TWO_STRINGS(camera, commandName, "- Camera does not exist");
|
|
|
|
return camera;
|
|
}
|
|
|
|
void CommandRenderScriptCams(bool bSetActive, bool bInterp, int iDuration, bool bShouldLockInterpolationSourceFrame, bool bShouldApplyAcrossAllThreads, int RenderOptions)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
|
|
scriptcameraDebugf3("FC: %d - CommandRenderScriptCams( bSetActive(%d), bInterp (%d), iDuration (%d), bShouldLockInterpolationSourceFrame(%d), bShouldApplyAcrossAllThreads(%d), %s )",
|
|
fwTimer::GetFrameCount(), bSetActive, bInterp, iDuration, bShouldLockInterpolationSourceFrame, bShouldApplyAcrossAllThreads, CTheScripts::GetCurrentScriptNameAndProgramCounter());
|
|
|
|
const u32 interpolationDuration = bInterp ? static_cast<u32>(Max(iDuration, 0)) : 0;
|
|
|
|
//These options will get reset when the update runs
|
|
camInterface::GetScriptDirector().SetRenderOptions(RenderOptions);
|
|
|
|
if(bSetActive)
|
|
{
|
|
camInterface::GetScriptDirector().Render(interpolationDuration, bShouldLockInterpolationSourceFrame);
|
|
}
|
|
else if(bShouldApplyAcrossAllThreads)
|
|
{
|
|
//NOTE: This should only be exercised by scripts that absolutely require such global behaviour, as this can result in conflicts between
|
|
//concurrent script threads.
|
|
camInterface::GetScriptDirector().ForceStopRendering(false, interpolationDuration, bShouldLockInterpolationSourceFrame);
|
|
}
|
|
else
|
|
{
|
|
camInterface::GetScriptDirector().StopRendering(interpolationDuration, bShouldLockInterpolationSourceFrame);
|
|
}
|
|
}
|
|
|
|
void CommandStopRenderingScriptCamsUsingCatchUp(bool bShouldApplyAcrossAllThreads, float distanceToBlend, int blendType, int RenderOptions)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
|
|
//These options will get reset when the update runs
|
|
camInterface::GetScriptDirector().SetRenderOptions(RenderOptions);
|
|
|
|
scriptcameraDebugf3("FC: %d - CommandStopRenderingScriptCamsUsingCatchUp( bShouldApplyAcrossAllThreads(%d), distanceToBlend (%f), blendType (%d) )",
|
|
fwTimer::GetFrameCount(), bShouldApplyAcrossAllThreads, distanceToBlend, blendType);
|
|
|
|
if(bShouldApplyAcrossAllThreads)
|
|
{
|
|
//NOTE: This should only be exercised by scripts that absolutely require such global behaviour,
|
|
// as this can result in conflicts between concurrent script threads.
|
|
camInterface::GetScriptDirector().ForceStopRendering(true, 0, false, distanceToBlend, blendType);
|
|
}
|
|
else
|
|
{
|
|
camInterface::GetScriptDirector().StopRendering(true, 0, false, distanceToBlend, blendType);
|
|
}
|
|
}
|
|
|
|
int CommandCreateCam(const char* CameraName, bool bActivate)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
|
|
CScriptResource_Camera camera(CameraName, bActivate);
|
|
|
|
// cameras are referenced using their real pool index, this is inconsistent with the other resources. Everything should use the resource id.
|
|
return CTheScripts::GetCurrentGtaScriptHandler()->RegisterScriptResourceAndGetRef(camera);
|
|
}
|
|
|
|
int CommandCreateCameraFromHash(int CameraHash, bool bActivate)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
|
|
CScriptResource_Camera camera(CameraHash, bActivate);
|
|
|
|
// cameras are referenced using their real pool index, this is inconsistent with the other resources. Everything should use the resource id.
|
|
return CTheScripts::GetCurrentGtaScriptHandler()->RegisterScriptResourceAndGetRef(camera);
|
|
}
|
|
|
|
int CommandCreateCameraWithParams(int CameraHash, const scrVector &scrCamPos, const scrVector &scrCamRot, float fCamFov, bool bActivate, int RotOrder) //add pos, rot and fov
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
|
|
int CameraIndex = CommandCreateCameraFromHash(CameraHash, bActivate);
|
|
|
|
Vector3 vPos (scrCamPos);
|
|
Vector3 vRot (scrCamRot);
|
|
|
|
camInterface::GetScriptDirector().SetCameraFrameParameters(CameraIndex, vPos, vRot * DtoR, fCamFov, 0, camFrameInterpolator::LINEAR,
|
|
camFrameInterpolator::LINEAR, RotOrder);
|
|
|
|
// cameras are referenced using their real pool index, this is inconsistent with the other resources. Everything should use the resource id.
|
|
return CameraIndex;
|
|
}
|
|
|
|
int CommandCreateCamWithParams(const char* CameraName, const scrVector &scrCamPos, const scrVector &scrCamRot, float fCamFov, bool bActivate, int RotOrder) //add pos, rot and fov
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
|
|
int CameraIndex = CommandCreateCam(CameraName, bActivate);
|
|
|
|
Vector3 vPos (scrCamPos);
|
|
Vector3 vRot (scrCamRot);
|
|
|
|
camInterface::GetScriptDirector().SetCameraFrameParameters(CameraIndex, vPos, vRot * DtoR, fCamFov, 0, camFrameInterpolator::LINEAR,
|
|
camFrameInterpolator::LINEAR, RotOrder);
|
|
|
|
// cameras are referenced using their real pool index, this is inconsistent with the other resources. Everything should use the resource id.
|
|
return CameraIndex;
|
|
}
|
|
|
|
void CommandDestroyCam(int CameraIndex, bool bShouldApplyAcrossAllThreads)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
// cameras are referenced using their real pool index, this is inconsistent with the other resources. Everything should use the resource id.
|
|
|
|
if(bShouldApplyAcrossAllThreads)
|
|
{
|
|
//Destroy this cameras, no matter which script thread owns it.
|
|
//NOTE: This should only be exercised by scripts that absolutely require such global behaviour, as this can result in conflicts between
|
|
//concurrent script threads.
|
|
CTheScripts::GetScriptHandlerMgr().RemoveScriptResource(CGameScriptResource::SCRIPT_RESOURCE_CAMERA, CameraIndex);
|
|
}
|
|
else
|
|
{
|
|
//Only destroy the camera if it's associated with the current script thread.
|
|
CTheScripts::GetCurrentGtaScriptHandler()->RemoveScriptResource(CGameScriptResource::SCRIPT_RESOURCE_CAMERA, CameraIndex);
|
|
}
|
|
}
|
|
|
|
void CommandDestroyAllCams(bool bShouldApplyAcrossAllThreads)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if(bShouldApplyAcrossAllThreads)
|
|
{
|
|
//Destroy all script-controlled cameras, no matter which script thread owns them.
|
|
//NOTE: This should only be exercised by scripts that absolutely require such global behaviour, as this can result in conflicts between
|
|
//concurrent script threads.
|
|
CTheScripts::GetScriptHandlerMgr().RemoveAllScriptResourcesOfType(CGameScriptResource::SCRIPT_RESOURCE_CAMERA);
|
|
}
|
|
else
|
|
{
|
|
//Only destroy the cameras associated with the current script thread.
|
|
CTheScripts::GetCurrentGtaScriptHandler()->RemoveAllScriptResourcesOfType(CGameScriptResource::SCRIPT_RESOURCE_CAMERA);
|
|
}
|
|
}
|
|
|
|
bool CommandDoesCamExist(int CameraIndex)
|
|
{
|
|
camBaseCamera* pCamera = camBaseCamera::GetCameraAtPoolIndex(CameraIndex);
|
|
|
|
return (pCamera!=NULL);
|
|
}
|
|
|
|
void CommandSetCamActive(int CameraIndex, bool bActiveState)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_ACTIVE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY (camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_ACTIVE - Camera is not a script controllable "))
|
|
{
|
|
if(bActiveState)
|
|
{
|
|
camInterface::GetScriptDirector().ActivateCamera(CameraIndex); //Inform the script director that a camera it may own is being activated.
|
|
}
|
|
else
|
|
{
|
|
camInterface::GetScriptDirector().DeactivateCamera(CameraIndex); //Inform the script director that a camera it may own is being deactivated.
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
bool CommandIsCamActive(int CameraIndex)
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "IS_CAM_ACTIVE");
|
|
if (pCamera)
|
|
{
|
|
if(camInterface::GetScriptDirector().IsCameraActive(CameraIndex))
|
|
{
|
|
return true;
|
|
}
|
|
#if __BANK
|
|
else if (pCamera->GetIsClassId(camFreeCamera::GetStaticClassId()) &&
|
|
camInterface::GetDebugDirector().IsFreeCamActive())
|
|
{
|
|
return true;
|
|
}
|
|
#endif // __BANK
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool CommandIsCamRendering (int CameraIndex)
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "IS_CAM_RENDERING");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY (camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"IS_CAM_RENDERING - Camera is not a script controllable " ))
|
|
{
|
|
const bool isRendering = camInterface::IsDominantRenderedCamera(*pCamera);
|
|
|
|
return isRendering;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
int CommandGetRenderingCam ()
|
|
{
|
|
int iCamIndex = INVALID_CAM_INDEX;
|
|
|
|
const camBaseCamera* pCamera = camInterface::GetDominantRenderedCamera();
|
|
|
|
if (pCamera)
|
|
{
|
|
int tempCamIndex = pCamera->GetPoolIndex();
|
|
if (camInterface::GetScriptDirector().IsCameraScriptControllable(tempCamIndex))
|
|
{
|
|
iCamIndex = tempCamIndex;
|
|
}
|
|
}
|
|
|
|
return iCamIndex;
|
|
}
|
|
|
|
scrVector CommandGetCamCoord(int CameraIndex)
|
|
{
|
|
Vector3 vPos(VEC3_ZERO);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_COORD");
|
|
if(pCamera)
|
|
{
|
|
vPos = pCamera->GetFrame().GetPosition();
|
|
}
|
|
|
|
return vPos;
|
|
}
|
|
|
|
scrVector CommandGetCamRotation(int CameraIndex, int RotOrder)
|
|
{
|
|
Vector3 vRot(VEC3_ZERO);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_ROT");
|
|
if(pCamera)
|
|
{
|
|
const Matrix34& worldMatrix = pCamera->GetFrame().GetWorldMatrix();
|
|
vRot = CScriptEulers::MatrixToEulers(worldMatrix, static_cast<EulerAngleOrder>(RotOrder));
|
|
vRot *= RtoD;
|
|
}
|
|
|
|
return vRot;
|
|
}
|
|
|
|
float CommandGetCamFov(int CameraIndex)
|
|
{
|
|
float fov = 0.0f;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_FOV");
|
|
if(pCamera)
|
|
{
|
|
fov = pCamera->GetFrame().GetFov();
|
|
}
|
|
|
|
return fov;
|
|
}
|
|
|
|
float CommandGetCamNearClip(int CameraIndex)
|
|
{
|
|
float nearClip = 0.0f;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_NEAR_CLIP");
|
|
if(pCamera)
|
|
{
|
|
nearClip = pCamera->GetFrame().GetNearClip();
|
|
}
|
|
|
|
return nearClip;
|
|
}
|
|
|
|
float CommandGetCamFarClip(int CameraIndex)
|
|
{
|
|
float farClip = 0.0f;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_FAR_CLIP");
|
|
if(pCamera)
|
|
{
|
|
farClip = pCamera->GetFrame().GetFarClip();
|
|
}
|
|
|
|
return farClip;
|
|
}
|
|
|
|
float CommandGetCamNearDof(int CameraIndex)
|
|
{
|
|
float nearDof = 0.0f;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_NEAR_DOF");
|
|
if(pCamera)
|
|
{
|
|
nearDof = pCamera->GetFrame().GetNearInFocusDofPlane();
|
|
}
|
|
|
|
return nearDof;
|
|
}
|
|
|
|
float CommandGetCamFarDof(int CameraIndex)
|
|
{
|
|
float farDof = 0.0f;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_FAR_DOF");
|
|
if(pCamera)
|
|
{
|
|
farDof = pCamera->GetFrame().GetFarInFocusDofPlane();
|
|
}
|
|
|
|
return farDof;
|
|
}
|
|
|
|
float CommandGetCamDofStrength(int CameraIndex)
|
|
{
|
|
float dofStrength = 0.0f;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_DOF_STRENGTH");
|
|
if(pCamera)
|
|
{
|
|
dofStrength = pCamera->GetFrame().GetDofStrength();
|
|
}
|
|
|
|
return dofStrength;
|
|
}
|
|
|
|
void CommandGetCamDofPlanes(int CameraIndex, float& nearOutOfFocusPlane, float& nearInFocusPlane, float& farInFocusPlane, float& farOutOfFocusPlane)
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_DOF_PLANES");
|
|
if(pCamera)
|
|
{
|
|
Vector4 dofPlanes;
|
|
pCamera->GetFrame().ComputeDofPlanes(dofPlanes);
|
|
|
|
nearOutOfFocusPlane = dofPlanes[camFrame::NEAR_OUT_OF_FOCUS_DOF_PLANE];
|
|
nearInFocusPlane = dofPlanes[camFrame::NEAR_IN_FOCUS_DOF_PLANE];
|
|
farInFocusPlane = dofPlanes[camFrame::FAR_IN_FOCUS_DOF_PLANE];
|
|
farOutOfFocusPlane = dofPlanes[camFrame::FAR_OUT_OF_FOCUS_DOF_PLANE];
|
|
}
|
|
else
|
|
{
|
|
nearOutOfFocusPlane = nearInFocusPlane = farInFocusPlane = farOutOfFocusPlane = 0.0f;
|
|
}
|
|
}
|
|
|
|
bool CommandGetCamUseShallowDofMode(int CameraIndex)
|
|
{
|
|
bool shouldUseShallowDof = false;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_USE_SHALLOW_DOF_MODE");
|
|
if(pCamera)
|
|
{
|
|
shouldUseShallowDof = pCamera->GetFrame().GetFlags().IsFlagSet(camFrame::Flag_ShouldUseShallowDof);
|
|
}
|
|
|
|
return shouldUseShallowDof;
|
|
}
|
|
|
|
float CommandGetCamMotionBlurStrength(int CameraIndex)
|
|
{
|
|
float motionBlurStrength = 0.0f;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_MOTION_BLUR_STRENGTH");
|
|
if(pCamera)
|
|
{
|
|
motionBlurStrength = pCamera->GetFrame().GetMotionBlurStrength();
|
|
}
|
|
|
|
return motionBlurStrength;
|
|
}
|
|
|
|
void CommandSetCamParams (int CameraIndex, const scrVector &scrCamPos, const scrVector &scrCamRot, float fCamFov, int duration, int graphTypePos, int graphTypeRot, int RotOrder)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 vPos (scrCamPos);
|
|
Vector3 vRot (scrCamRot);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_PARAMS");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY (camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_PARAMS - Camera is not a script controllable " ))
|
|
{
|
|
camInterface::GetScriptDirector().SetCameraFrameParameters(CameraIndex, vPos, vRot * DtoR, fCamFov, duration, graphTypePos, graphTypeRot, RotOrder);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamCoord(int CameraIndex, const scrVector &scrVecNewCoors)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 vPos (scrVecNewCoors);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_COORD");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY (camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_COORD - Camera is not a script controllable " ))
|
|
{
|
|
//Terminate any existing interpolation, as the script wants to cut to the new position.
|
|
pCamera->StopInterpolating();
|
|
|
|
camFrame& cameraFrame = pCamera->GetFrameNonConst();
|
|
cameraFrame.SetPosition(vPos);
|
|
//The camera position is being modified, so we must report a cut. It is unlikely that a script would manually animate a camera
|
|
//using this interface.
|
|
cameraFrame.GetFlags().SetFlag(camFrame::Flag_HasCutPosition);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamRotation(int CameraIndex, const scrVector &scrVecNewRot, int RotOrder)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_ROT");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY (camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_ROT - Camera is not a script controllable " ))
|
|
{
|
|
Vector3 vRot(scrVecNewRot);
|
|
|
|
Matrix34 worldMatrix;
|
|
CScriptEulers::MatrixFromEulers(worldMatrix, vRot * DtoR, static_cast<EulerAngleOrder>(RotOrder));
|
|
|
|
//Terminate any existing interpolation, as the script wants to cut to the new rotation.
|
|
pCamera->StopInterpolating();
|
|
|
|
camFrame& cameraFrame = pCamera->GetFrameNonConst();
|
|
cameraFrame.SetWorldMatrix(worldMatrix);
|
|
|
|
//The camera orientation is being modified, so we must report a cut. It is unlikely that a script would manually animate a camera
|
|
//using this interface.
|
|
cameraFrame.GetFlags().SetFlag(camFrame::Flag_HasCutOrientation);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamFov(int CameraIndex, float fov)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_FOV");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_FOV - Camera is not a script controllable "))
|
|
{
|
|
//Terminate any existing interpolation, as the script wants to cut to the new FOV.
|
|
pCamera->StopInterpolating();
|
|
|
|
pCamera->GetFrameNonConst().SetFov(fov);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamNearClip(int CameraIndex, float nearClip)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_NEAR_CLIP");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_NEAR_CLIP - Camera is not a script controllable "))
|
|
{
|
|
cameraDebugf3("%u SET_CAM_NEAR_CLIP %i %.3f %s", fwTimer::GetFrameCount(), CameraIndex, nearClip, CTheScripts::GetCurrentScriptNameAndProgramCounter());
|
|
|
|
pCamera->GetFrameNonConst().SetNearClip(nearClip);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamFarClip(int CameraIndex, float farClip)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_FAR_CLIP");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_FAR_CLIP - Camera is not a script controllable "))
|
|
{
|
|
pCamera->GetFrameNonConst().SetFarClip(farClip);
|
|
|
|
if(pCamera->GetIsClassId(camAnimatedCamera::GetStaticClassId()))
|
|
{
|
|
camAnimatedCamera* pAnimatedCamera = static_cast<camAnimatedCamera*>(pCamera);
|
|
pAnimatedCamera->SetScriptShouldOverrideFarClip(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandForceCamFarClip(int CameraIndex, float farClip)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "FORCE_CAM_FAR_CLIP");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "FORCE_CAM_FAR_CLIP - Camera is not a script controllable "))
|
|
{
|
|
pCamera->GetFrameNonConst().SetFarClip(farClip);
|
|
|
|
if(pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* pScriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
pScriptedCamera->SetShouldOverrideFarClip(true);
|
|
}
|
|
else if(pCamera->GetIsClassId(camAnimatedCamera::GetStaticClassId()))
|
|
{
|
|
camAnimatedCamera* pAnimatedCamera = static_cast<camAnimatedCamera*>(pCamera);
|
|
pAnimatedCamera->SetScriptShouldOverrideFarClip(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamMotionBlurStrength(int CameraIndex, float strength)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_MOTION_BLUR_STRENGTH");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_MOTION_BLUR_STRENGTH - Camera is not a script controllable "))
|
|
{
|
|
pCamera->GetFrameNonConst().SetMotionBlurStrength(strength);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamNearDof(int CameraIndex, float nearDof)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_NEAR_DOF");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_NEAR_DOF - Camera is not a script controllable "))
|
|
{
|
|
pCamera->GetFrameNonConst().SetNearInFocusDofPlane(nearDof);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamFarDof(int CameraIndex, float farDof)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_FAR_DOF");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_FAR_DOF - Camera is not a script controllable "))
|
|
{
|
|
pCamera->GetFrameNonConst().SetFarInFocusDofPlane(farDof);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamDofStrength(int CameraIndex, float dofStrength)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_DOF_STRENGTH");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_DOF_STRENGTH - Camera is not a script controllable "))
|
|
{
|
|
pCamera->GetFrameNonConst().SetDofStrength(dofStrength);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamDofPlanes(int CameraIndex, float nearOutOfFocusPlane, float nearInFocusPlane, float farInFocusPlane, float farOutOfFocusPlane)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_DOF_PLANES");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_DOF_PLANES - Camera is not a script controllable "))
|
|
{
|
|
Vector4 dofPlanes;
|
|
dofPlanes[camFrame::NEAR_OUT_OF_FOCUS_DOF_PLANE] = nearOutOfFocusPlane;
|
|
dofPlanes[camFrame::NEAR_IN_FOCUS_DOF_PLANE] = nearInFocusPlane;
|
|
dofPlanes[camFrame::FAR_IN_FOCUS_DOF_PLANE] = farInFocusPlane;
|
|
dofPlanes[camFrame::FAR_OUT_OF_FOCUS_DOF_PLANE] = farOutOfFocusPlane;
|
|
|
|
pCamera->GetFrameNonConst().SetDofPlanes(dofPlanes);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamUseShallowDofMode(int CameraIndex, bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_USE_SHALLOW_DOF_MODE");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_USE_SHALLOW_DOF_MODE - Camera is not a script controllable "))
|
|
{
|
|
pCamera->GetFrameNonConst().GetFlags().ChangeFlag(camFrame::Flag_ShouldUseShallowDof, state);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Use the high-quality DOF effect that handles four planes.
|
|
void CommandUseHiDof()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetScriptDirector().SetHighQualityDofThisUpdate(true);
|
|
}
|
|
|
|
void CommandUseHiDofOnSyncedSceneThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetSyncedSceneDirector().SetHighQualityDofThisUpdate(true);
|
|
}
|
|
|
|
void CommandSetDofOverriddenFocusDistance(int CameraIndex, float distance)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE - Camera is not a script controllable "))
|
|
{
|
|
distance = Clamp(distance, 0.0f, 99999.0f);
|
|
|
|
if(pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
static_cast<camScriptedCamera*>(pCamera)->SetOverriddenDofFocusDistance(distance);
|
|
}
|
|
else if(pCamera->GetIsClassId(camAnimatedCamera::GetStaticClassId()))
|
|
{
|
|
static_cast<camAnimatedCamera*>(pCamera)->SetOverriddenDofFocusDistance(distance);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetDofOverriddenFocusDistanceBlendLevel(int CameraIndex, float blendLevel)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL - Camera is not a script controllable "))
|
|
{
|
|
blendLevel = Clamp(blendLevel, 0.0f, 1.0f);
|
|
|
|
if(pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
static_cast<camScriptedCamera*>(pCamera)->SetOverriddenDofFocusDistanceBlendLevel(blendLevel);
|
|
}
|
|
else if(pCamera->GetIsClassId(camAnimatedCamera::GetStaticClassId()))
|
|
{
|
|
static_cast<camAnimatedCamera*>(pCamera)->SetOverriddenDofFocusDistanceBlendLevel(blendLevel);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
camDepthOfFieldSettingsMetadata* GetOverriddenDepthOfFieldSettingsFromCameraIndex(int CameraIndex, const char* commandName)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = NULL;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, commandName);
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY_TWO_STRINGS(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), commandName, " - Camera is not a script controllable "))
|
|
{
|
|
if(pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
overriddenDofSettings = static_cast<camScriptedCamera*>(pCamera)->GetOverriddenDofSettings();
|
|
}
|
|
else if(pCamera->GetIsClassId(camAnimatedCamera::GetStaticClassId()))
|
|
{
|
|
overriddenDofSettings = static_cast<camAnimatedCamera*>(pCamera)->GetOverriddenDofSettings();
|
|
}
|
|
|
|
SCRIPT_ASSERT_TWO_STRINGS(overriddenDofSettings, commandName, " - Camera has no depth of field settings to be overridden");
|
|
}
|
|
}
|
|
|
|
return overriddenDofSettings;
|
|
}
|
|
|
|
void CommandSetDofFocusDistanceGridScaling(int CameraIndex, float gridScalingX, float gridScalingY)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_FOCUS_DISTANCE_GRID_SCALING");
|
|
if(overriddenDofSettings)
|
|
{
|
|
gridScalingX = Clamp(gridScalingX, 0.0f, 1.0f);
|
|
gridScalingY = Clamp(gridScalingY, 0.0f, 1.0f);
|
|
|
|
const Vector2 gridScaling(gridScalingX, gridScalingY);
|
|
overriddenDofSettings->m_FocusDistanceGridScaling.Set(gridScaling);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofSubjectMagnificationPowerFactorNearFar(int CameraIndex, float powerFactorNear, float powerFactorFar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_SUBJECT_MAGNIFICATION_POWER_FACTOR_NEAR_FAR");
|
|
if(overriddenDofSettings)
|
|
{
|
|
powerFactorNear = Clamp(powerFactorNear, 0.0f, 1.0f);
|
|
powerFactorFar = Clamp(powerFactorFar, 0.0f, 1.0f);
|
|
|
|
const Vector2 powerFactorNearFar(powerFactorNear, powerFactorFar);
|
|
overriddenDofSettings->m_SubjectMagnificationPowerFactorNearFar.Set(powerFactorNearFar);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofMaxPixelDepth(int CameraIndex, float depth)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_MAX_PIXEL_DEPTH");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_MaxPixelDepth = Clamp(depth, 0.0f, 99999.0f);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofPixelDepthPowerFactor(int CameraIndex, float powerFactor)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_PIXEL_DEPTH_POWER_FACTOR");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_PixelDepthPowerFactor = Clamp(powerFactor, 0.0f, 1.0f);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofFNumberOfLens(int CameraIndex, float fNumber)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_FNUMBER_OF_LENS");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_FNumberOfLens = Clamp(fNumber, 0.5f, 256.0f);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofFocalLengthMultiplier(int CameraIndex, float multiplier)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_FOCAL_LENGTH_MULTIPLIER");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_FocalLengthMultiplier = Clamp(multiplier, 0.1f, 10.0f);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofFocusDistanceBias(int CameraIndex, float distanceBias)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_FOCUS_DISTANCE_BIAS");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_FocusDistanceBias = Clamp(distanceBias, -100.0f, 100.0f);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofMaxNearInFocusDistance(int CameraIndex, float distance)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_MaxNearInFocusDistance = Clamp(distance, 0.0f, 99999.0f);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofMaxNearInFocusDistanceBlendLevel(int CameraIndex, float blendLevel)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_MaxNearInFocusDistanceBlendLevel = Clamp(blendLevel, 0.0f, 1.0f);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofMaxBlurRadiusAtNearInFocusLimit(int CameraIndex, float radius)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_MAX_BLUR_RADIUS_AT_NEAR_IN_FOCUS_LIMIT");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_MaxBlurRadiusAtNearInFocusLimit = Clamp(radius, 0.0f, 30.0f);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofFocusDistanceIncreaseSpringConstant(int CameraIndex, float springConstant)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_FOCUS_DISTANCE_INCREASE_SPRING_CONSTANT");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_FocusDistanceIncreaseSpringConstant = Clamp(springConstant, 0.0f, 1000.0f);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofFocusDistanceDecreaseSpringConstant(int CameraIndex, float springConstant)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_FOCUS_DISTANCE_DECREASE_SPRING_CONSTANT");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_FocusDistanceDecreaseSpringConstant = Clamp(springConstant, 0.0f, 1000.0f);
|
|
}
|
|
}
|
|
|
|
void CommandSetDofShouldFocusOnLookAtTarget(int CameraIndex, bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_SHOULD_FOCUS_ON_LOOK_AT_TARGET");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_ShouldFocusOnLookAtTarget = state;
|
|
}
|
|
}
|
|
|
|
void CommandSetDofShouldFocusOnAttachParent(int CameraIndex, bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_SHOULD_FOCUS_ON_ATTACH_PARENT");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_ShouldFocusOnAttachParent = state;
|
|
}
|
|
}
|
|
|
|
void CommandSetDofShouldKeepLookAtTargetInFocus(int CameraIndex, bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_SHOULD_KEEP_LOOK_AT_TARGET_IN_FOCUS");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_ShouldKeepLookAtTargetInFocus = state;
|
|
}
|
|
}
|
|
|
|
void CommandSetDofShouldKeepAttachParentInFocus(int CameraIndex, bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_SHOULD_KEEP_ATTACH_PARENT_IN_FOCUS");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_ShouldKeepAttachParentInFocus = state;
|
|
}
|
|
}
|
|
|
|
void CommandSetDofShouldMeasurePostAlphaPixelDepth(int CameraIndex, bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camDepthOfFieldSettingsMetadata* overriddenDofSettings = GetOverriddenDepthOfFieldSettingsFromCameraIndex(CameraIndex, "SET_CAM_DOF_SHOULD_MEASURE_POST_ALPHA_PIXEL_DEPTH");
|
|
if(overriddenDofSettings)
|
|
{
|
|
overriddenDofSettings->m_ShouldMeasurePostAlphaPixelDepth = state;
|
|
}
|
|
}
|
|
|
|
void CommandAttachCamToEntity(int CameraIndex, int EntityIndex, const scrVector &scrCamOffset, bool bRelativeOffset)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 VecCamOffset (scrCamOffset);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "ATTACH_CAM_TO_ENTITY");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "ATTACH_CAM_TO_ENTITY - Camera is not script controlled" ))
|
|
{
|
|
const CEntity *pEntity = CTheScripts::GetEntityToQueryFromGUID<CEntity>(EntityIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
|
|
if (pEntity)
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->AttachTo(pEntity);
|
|
scriptedCamera->SetAttachBoneTag(-1);
|
|
scriptedCamera->SetAttachOffset(VecCamOffset);
|
|
scriptedCamera->SetAttachOffsetRelativeToMatrixState(bRelativeOffset);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandAttachCamToPedBone(int CameraIndex, int PedIndex, int BoneTag, const scrVector &scrCamOffset, bool bRelativeOffset)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 VecCamOffset (scrCamOffset);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "ATTACH_CAM_TO_PED_BONE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "ATTACH_CAM_TO_PED_BONE - Camera is not script controlled" ))
|
|
{
|
|
const CPed *pPed = CTheScripts::GetEntityToQueryFromGUID<CPed>(PedIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
if (pPed)
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->AttachTo(pPed);
|
|
scriptedCamera->SetAttachBoneTag(BoneTag);
|
|
scriptedCamera->SetAttachOffset(VecCamOffset);
|
|
scriptedCamera->SetAttachOffsetRelativeToMatrixState(bRelativeOffset);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandHardAttachCamToPedBone(int CameraIndex, int PedIndex, int BoneTag, const scrVector &scrCamRotationOffset, const scrVector &scrCamOffset, bool bRelativeOffset)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 VecCamOffset(scrCamOffset);
|
|
Vector3 VecCamRotationOffset(scrCamRotationOffset);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "HARD_ATTACH_CAM_TO_PED_BONE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "HARD_ATTACH_CAM_TO_PED_BONE - Camera is not script controlled" ))
|
|
{
|
|
const CPed *pPed = CTheScripts::GetEntityToQueryFromGUID<CPed>(PedIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
if (pPed)
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->AttachTo(pPed);
|
|
scriptedCamera->SetAttachBoneTag(BoneTag, true);
|
|
scriptedCamera->SetAttachRotationOffset(VecCamRotationOffset);
|
|
scriptedCamera->SetAttachOffset(VecCamOffset);
|
|
scriptedCamera->SetAttachOffsetRelativeToMatrixState(bRelativeOffset);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandHardAttachCamToEntity(int CameraIndex, int EntityIndex, const scrVector &scrCamRotationOffset, const scrVector &scrCamOffset, bool bRelativeOffset)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 VecCamOffset(scrCamOffset);
|
|
Vector3 VecCamRotationOffset(scrCamRotationOffset);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "HARD_ATTACH_CAM_TO_ENTITY");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "HARD_ATTACH_CAM_TO_ENTITY - Camera is not script controlled" ))
|
|
{
|
|
const CEntity *pEntity = CTheScripts::GetEntityToQueryFromGUID<CEntity>(EntityIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
if (pEntity)
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->AttachTo(pEntity);
|
|
scriptedCamera->SetAttachBoneTag(-1, true);
|
|
scriptedCamera->SetAttachRotationOffset(VecCamRotationOffset);
|
|
scriptedCamera->SetAttachOffset(VecCamOffset);
|
|
scriptedCamera->SetAttachOffsetRelativeToMatrixState(bRelativeOffset);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandAttachCamToVehicleBone(int CameraIndex, int VehicleIndex, int vehicleBone, bool bHardAttachment, const scrVector &scrCamRotationOffset, const scrVector &scrCamOffset, bool bRelativeOffset)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 VecCamOffset(scrCamOffset);
|
|
Vector3 VecCamRotationOffset(scrCamRotationOffset);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "ATTACH_CAM_TO_VEHICLE_BONE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "ATTACH_CAM_TO_VEHICLE_BONE - Camera is not script controlled" ))
|
|
{
|
|
const CVehicle *pVehicle = CTheScripts::GetEntityToQueryFromGUID<CVehicle>(VehicleIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
if (pVehicle)
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->AttachTo(pVehicle);
|
|
scriptedCamera->SetAttachBoneTag(vehicleBone, bHardAttachment);
|
|
scriptedCamera->SetAttachRotationOffset(VecCamRotationOffset);
|
|
scriptedCamera->SetAttachOffset(VecCamOffset);
|
|
scriptedCamera->SetAttachOffsetRelativeToMatrixState(bRelativeOffset);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandDetachCam(int CameraIndex)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "DETTACH_CAM");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"DETTACH_CAM - Camera is not script controlled" ))
|
|
{
|
|
if(pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->AttachTo(NULL);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// roll
|
|
|
|
void CommandSetCamInheritRollObject(int CameraIndex, int ObjectIndex)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_INHERIT_OBJECT_ROLL");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"SET_CAM_INHERIT_OBJECT_ROLL - Camera is not script controlled" ))
|
|
{
|
|
const CObject* pObject = CTheScripts::GetEntityToQueryFromGUID<CObject>(ObjectIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
if (pObject)
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->SetRollTarget(pObject);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamInheritRollVehicle(int CameraIndex, int VehicleIndex)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_INHERIT_VEHICLE_ROLL");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"SET_CAM_INHERIT_VEHICLE_ROLL - Camera is not script controlled" ))
|
|
{
|
|
const CVehicle* pVehicle = CTheScripts::GetEntityToQueryFromGUID<CVehicle>(VehicleIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
if (pVehicle)
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->SetRollTarget(pVehicle);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandStopInheritedRoll (int CameraIndex)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "STOP_CAM_INHERIT_ROLL");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"STOP_CAM_INHERIT_ROLL - Camera is not script controlled" ))
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->ClearRollTarget();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Pointing
|
|
|
|
void CommandPointCamAtCoord(int CameraIndex, const scrVector &scrVecCoors)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 vecPos (scrVecCoors);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "POINT_CAM_AT_COORD");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"POINT_CAM_AT_COORD - Camera is not script controlled" ))
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->LookAt(vecPos);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandPointCamAtCam(int LookingCameraIndex, int LookedAtCameraIndex)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pLookingCamera = GetCameraFromIndex(LookingCameraIndex, "POINT_CAM_AT_CAM");
|
|
camBaseCamera* pLookedAtCamera = GetCameraFromIndex(LookedAtCameraIndex, "POINT_CAM_AT_CAM");
|
|
|
|
if(pLookingCamera && pLookedAtCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(LookingCameraIndex),"POINT_CAM_AT_CAM - Camera is not script controlled" ))
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(LookedAtCameraIndex),"POINT_CAM_AT_CAM - Camera is not script controlled" ))
|
|
{
|
|
if(pLookingCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()) && pLookedAtCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedLookingCamera = static_cast<camScriptedCamera*>(pLookingCamera);
|
|
scriptedLookingCamera->LookAt(pLookedAtCamera);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandPointCamAtEntity(int CameraIndex, int EntityIndex, const scrVector &scrCamOffset, bool bRelativeOffset)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 vecOffset (scrCamOffset);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "POINT_CAM_AT_ENTITY");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"POINT_CAM_AT_ENTITY - Camera is not script controlled" ))
|
|
{
|
|
const CEntity *pEntity = CTheScripts::GetEntityToQueryFromGUID<CEntity>(EntityIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
if (pEntity)
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->LookAt(pEntity);
|
|
scriptedCamera->SetLookAtBoneTag(-1);
|
|
scriptedCamera->SetLookAtOffset(vecOffset);
|
|
scriptedCamera->SetLookAtOffsetRelativeToMatrixState(bRelativeOffset);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandPointCamAtPedBone(int CameraIndex, int PedIndex, int BoneTag, const scrVector &scrCamOffset, bool bRelativeOffset)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 vecOffset (scrCamOffset);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "POINT_CAM_AT_PED_BONE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"POINT_CAM_AT_PED_BONE - Camera is not script controlled" ))
|
|
{
|
|
const CPed* pPed = CTheScripts::GetEntityToQueryFromGUID<CPed>(PedIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
if (pPed)
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->LookAt(pPed);
|
|
scriptedCamera->SetLookAtBoneTag(BoneTag);
|
|
scriptedCamera->SetLookAtOffset(vecOffset);
|
|
scriptedCamera->SetLookAtOffsetRelativeToMatrixState(bRelativeOffset);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandStopCamPointing(int CameraIndex)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "STOP_CAM_POINTING");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"STOP_CAM_POINTING - Camera is not script controlled" ))
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->ClearLookAtTarget();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamAffectsAiming(int CameraIndex, bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_AFFECTS_AIMING");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),
|
|
"SET_CAM_AFFECTS_AIMING - Camera is not script controlled"))
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->SetShouldAffectAiming(state);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamControlsMiniMapHeading(int CameraIndex, bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_CONTROLS_MINI_MAP_HEADING");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),
|
|
"SET_CAM_CONTROLS_MINI_MAP_HEADING - Camera is not script controlled"))
|
|
{
|
|
if(pCamera)
|
|
{
|
|
if(pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->SetShouldControlMiniMapHeading(state);
|
|
}
|
|
else if(pCamera->GetIsClassId(camAnimatedCamera::GetStaticClassId()))
|
|
{
|
|
camAnimatedCamera* animatedCamera = static_cast<camAnimatedCamera*>(pCamera);
|
|
animatedCamera->SetShouldControlMiniMapHeading(state);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamIsInsideVehicle(int CameraIndex, bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_IS_INSIDE_VEHICLE");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),
|
|
"SET_CAM_IS_INSIDE_VEHICLE - Camera is not script controlled"))
|
|
{
|
|
if(pCamera)
|
|
{
|
|
if(pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->SetIsInsideVehicle(state);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCustomMaxNearClip(int CameraIndex, float customMaxNearClip)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_CUSTOM_MAX_NEAR_CLIP");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),
|
|
"SET_CAM_CUSTOM_MAX_NEAR_CLIP - Camera is not script controlled"))
|
|
{
|
|
if(pCamera)
|
|
{
|
|
if(pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->SetCustomMaxNearClip(customMaxNearClip);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandAllowMotionBlurDecay(int CameraIndex, bool enable)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "ALLOW_MOTION_BLUR_DECAY");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "ALLOW_MOTION_BLUR_DECAY - Camera is not script controlled" ))
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
pCamera->AllowMotionBlurDecay(enable);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamDebugName(int BANK_ONLY(CameraIndex), const char* BANK_ONLY(szDebugName))
|
|
{
|
|
#if __BANK
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_DEBUG_NAME");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),
|
|
"SET_CAM_DEBUG_NAME - Camera is not script controlled"))
|
|
{
|
|
if(pCamera && pCamera->GetIsClassId(camScriptedCamera::GetStaticClassId()))
|
|
{
|
|
camScriptedCamera* scriptedCamera = static_cast<camScriptedCamera*>(pCamera);
|
|
scriptedCamera->SetDebugName(szDebugName);
|
|
}
|
|
}
|
|
}
|
|
#endif // __BANK
|
|
}
|
|
|
|
int CommandGetDebugCam()
|
|
{
|
|
camBaseCamera* freeCam = (camBaseCamera*)camInterface::GetDebugDirector().GetFreeCam();
|
|
|
|
if (SCRIPT_VERIFY(freeCam, "GET_DEBUG_CAM - Failed to get the Debug cam see a coder"))
|
|
{
|
|
return freeCam->GetPoolIndex();
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
void CommandSetDebugCamActive(bool state, bool shouldIgnoreDebugPadCameraToggle)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
//NOTE: The debug pad camera toggle can only be ignored when the free camera is being activated by script.
|
|
camInterface::GetDebugDirector().SetFreeCamActiveState(state);
|
|
camInterface::GetDebugDirector().SetShouldIgnoreDebugPadCameraToggle(state ? shouldIgnoreDebugPadCameraToggle : false);
|
|
}
|
|
|
|
//new spline
|
|
void CommandAddCamSplineNode(int CameraIndex, const scrVector &scrVecPos, const scrVector &scrVecRot, int iDuration, int Flags, int RotOrder)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 vPos (scrVecPos);
|
|
Vector3 vRot (scrVecRot);
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "ADD_CAM_SPLINE_NODE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"ADD_CAM_SPLINE_NODE - Camera is not script controlled" ))
|
|
{
|
|
if (SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()),"ADD_CAM_SPLINE_NODE - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
splineCamera->AddNodeWithOrientation(vPos, (vRot * DtoR), static_cast<u32>(iDuration), (camSplineNode::eFlags)Flags, RotOrder);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandAddCamSplineNodeUsingCameraFrame(int CameraIndex, int SourceCameraIndex, int iDuration, int Flags)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pSourceCamera = GetCameraFromIndex(SourceCameraIndex, "ADD_CAM_SPLINE_NODE_USING_CAMERA_FRAME");
|
|
camBaseCamera* pDestinationCamera = GetCameraFromIndex(CameraIndex, "ADD_CAM_SPLINE_NODE_USING_CAMERA_FRAME");
|
|
|
|
if(pSourceCamera && pDestinationCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"ADD_CAM_SPLINE_NODE_USING_CAMERA_FRAME - Camera is not script controlled" ))
|
|
{
|
|
if (SCRIPT_VERIFY(pDestinationCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()),"ADD_CAM_SPLINE_NODE_USING_CAMERA_FRAME - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pDestinationCamera);
|
|
const camFrame& sourceFrame = pSourceCamera->GetFrame();
|
|
splineCamera->AddNode(sourceFrame, static_cast<u32>(iDuration), (camSplineNode::eFlags)Flags);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandAddCamSplineNodeUsingCamera(int CameraIndex, int SourceCameraIndex, int iDuration, int Flags)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pSourceCamera = GetCameraFromIndex(SourceCameraIndex, "ADD_CAM_SPLINE_NODE_USING_CAMERA");
|
|
camBaseCamera* pDestinationCamera = GetCameraFromIndex(CameraIndex, "ADD_CAM_SPLINE_NODE_USING_CAMERA");
|
|
|
|
if(pSourceCamera && pDestinationCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"ADD_CAM_SPLINE_NODE_USING_CAMERA - Camera is not script controlled" ))
|
|
{
|
|
if (SCRIPT_VERIFY(pDestinationCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()),"ADD_CAM_SPLINE_NODE_USING_CAMERA - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pDestinationCamera);
|
|
splineCamera->AddNode(pSourceCamera, static_cast<u32>(iDuration), (camSplineNode::eFlags)Flags);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandAddCamSplineNodeUsingGameplayFrame(int CameraIndex, int iDuration, int Flags)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME - Camera is not script controlled" ))
|
|
{
|
|
if (SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()),"ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
splineCamera->AddNode(camInterface::GetGameplayDirector(), static_cast<u32>(iDuration), (camSplineNode::eFlags)Flags);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamSplinePhase(int CameraIndex, float phase)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_SPLINE_PHASE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"SET_CAM_SPLINE_PHASE - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()),"SET_CAM_SPLINE_PHASE - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
splineCamera->SetPhase(phase);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
float CommandGetCamSplinePhase(int CameraIndex)
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_SPLINE_PHASE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"GET_CAM_SPLINE_PHASE - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()),"GET_CAM_SPLINE_PHASE - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
return splineCamera->GetPhase(NULL);
|
|
}
|
|
}
|
|
}
|
|
return 0.0f;
|
|
}
|
|
|
|
float CommandGetCamSplineNodePhase(int CameraIndex)
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_SPLINE_NODE_PHASE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"GET_CAM_SPLINE_NODE_PHASE - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()),"GET_CAM_SPLINE_NODE_PHASE - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
return splineCamera->GetNodePhase();
|
|
}
|
|
}
|
|
}
|
|
return 0.0f;
|
|
}
|
|
|
|
int CommandGetCamSplineNodeIndex(int CameraIndex)
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "GET_CAM_SPLINE_NODE_INDEX");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"GET_CAM_SPLINE_NODE_INDEX - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()),"GET_CAM_SPLINE_NODE_INDEX - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
return (int)splineCamera->GetCurrentNode();
|
|
}
|
|
}
|
|
}
|
|
return (int)0;
|
|
}
|
|
|
|
void CommandSetCamSplineDuration(int CameraIndex, int Duration)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_SPLINE_CAM_DURATION");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"SET_SPLINE_CAM_DURATION - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()) ,"SET_SPLINE_CAM_DURATION - Cam is not a spline camera" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
return splineCamera->SetDuration(Duration);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamSplineSmoothingStyle(int CameraIndex, int Smoothing)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_SPLINE_SMOOTHING_STYLE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"SET_CAM_SPLINE_SMOOTHING_STYLE - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()),"SET_CAM_SPLINE_SMOOTHING_STYLE - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
splineCamera->SetSmoothingStyle((camBaseSplineCamera::eSmoothingStyle) Smoothing);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamSplineNodeEase(int CameraIndex, int NodeIndex, int Flags, float Scale)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if (SCRIPT_VERIFY(NodeIndex >= 0, "SET_CAM_SPLINE_NODE_EASE - NodeIndex must be >= 0") &&
|
|
SCRIPT_VERIFY(Flags >= 0, "SET_CAM_SPLINE_NODE_EASE - Flags must be >= 0"))
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_SPLINE_NODE_EASE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_SPLINE_NODE_EASE - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()), "SET_CAM_SPLINE_NODE_EASE - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
if (SCRIPT_VERIFY(NodeIndex < splineCamera->GetNumNodes(), "SET_CAM_SPLINE_NODE_EASE - NodeIndex must be < number of nodes"))
|
|
{
|
|
splineCamera->SetEase((u32)NodeIndex, (u32)Flags, Scale);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamSplineNodeVelocityScale(int CameraIndex, int NodeIndex, float Scale)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if (SCRIPT_VERIFY(NodeIndex >= 0, "SET_CAM_SPLINE_NODE_EASE - NodeIndex must be >= 0"))
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_SPLINE_NODE_VELOCITY_SCALE");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_SPLINE_NODE_VELOCITY_SCALE - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()), "SET_CAM_SPLINE_NODE_VELOCITY_SCALE - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
if (SCRIPT_VERIFY(NodeIndex < splineCamera->GetNumNodes(), "SET_CAM_SPLINE_NODE_VELOCITY_SCALE - NodeIndex must be < number of nodes"))
|
|
{
|
|
if (SCRIPT_VERIFY(Scale >= -1.0f && Scale <= 1.0f, "SET_CAM_SPLINE_NODE_VELOCITY_SCALE - Scale must be between -1 and 1 (inclusive)"))
|
|
{
|
|
splineCamera->SetVelocityScale((u32)NodeIndex, Scale);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandOverrideCamSplineVelocity(int CameraIndex, int Entry, float Start, float Speed)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if (SCRIPT_VERIFY(Entry >= 0, "OVERRIDE_CAM_SPLINE_VELOCITY - Entry must be >= 0") &&
|
|
SCRIPT_VERIFY(Entry < MAX_VEL_CHANGES, "OVERRIDE_CAM_SPLINE_VELOCITY - Entry must be >= 0"))
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "OVERRIDE_CAM_SPLINE_VELOCITY");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "OVERRIDE_CAM_SPLINE_VELOCITY - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camCustomTimedSplineCamera::GetStaticClassId()), "OVERRIDE_CAM_SPLINE_VELOCITY - Cam is not a timed spline cam" ))
|
|
{
|
|
camCustomTimedSplineCamera* timedSplineCamera = static_cast<camCustomTimedSplineCamera*>(pCamera);
|
|
if (SCRIPT_VERIFY(Start < (float)timedSplineCamera->GetNumNodes(), "OVERRIDE_CAM_SPLINE_VELOCITY - Start must be < number of nodes"))
|
|
{
|
|
timedSplineCamera->OverrideVelocity((u32)Entry, Start, Speed);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandOverrideCamSplineMotionBlur(int CameraIndex, int Entry, float BlurStart, float MotionBlur)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if (SCRIPT_VERIFY(Entry >= 0, "OVERRIDE_CAM_SPLINE_MOTION_BLUR - Entry must be >= 0") &&
|
|
SCRIPT_VERIFY(Entry < MAX_BLUR_CHANGES, "OVERRIDE_CAM_SPLINE_MOTION_BLUR - Entry must be >= 0"))
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "OVERRIDE_CAM_SPLINE_MOTION_BLUR");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "OVERRIDE_CAM_SPLINE_MOTION_BLUR - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camCustomTimedSplineCamera::GetStaticClassId()), "OVERRIDE_CAM_SPLINE_MOTION_BLUR - Cam is not a timed spline cam" ))
|
|
{
|
|
camCustomTimedSplineCamera* timedSplineCamera = static_cast<camCustomTimedSplineCamera*>(pCamera);
|
|
if (SCRIPT_VERIFY(BlurStart < (float)timedSplineCamera->GetNumNodes(), "OVERRIDE_CAM_SPLINE_MOTION_BLUR - Start must be < number of nodes"))
|
|
{
|
|
timedSplineCamera->OverrideMotionBlur((u32)Entry, BlurStart, MotionBlur);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetCamSplineNodeExtraFlags(int CameraIndex, int NodeIndex, int Flags)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if (SCRIPT_VERIFY(NodeIndex >= 0, "SET_CAM_SPLINE_NODE_FORCE_LINEAR - NodeIndex must be >= 0"))
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_SPLINE_NODE_FORCE_LINEAR");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_SPLINE_NODE_FORCE_LINEAR - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()), "SET_CAM_SPLINE_NODE_FORCE_LINEAR - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
if (SCRIPT_VERIFY(NodeIndex < splineCamera->GetNumNodes(), "SET_CAM_SPLINE_NODE_FORCE_LINEAR - NodeIndex must be < number of nodes"))
|
|
{
|
|
splineCamera->ForceLinearBlend( (u32)NodeIndex, (Flags & camSplineNode::FORCE_LINEAR) != 0);
|
|
|
|
splineCamera->ForceCut( (u32)NodeIndex, (Flags & camSplineNode::FORCE_CUT) != 0);
|
|
|
|
splineCamera->ForcePause( (u32)NodeIndex, (Flags & camSplineNode::FORCE_PAUSE) != 0);
|
|
|
|
splineCamera->ForceLevel( (u32)NodeIndex, (Flags & camSplineNode::FORCE_LEVEL) != 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bool CommandIsCamSplinePaused(int CameraIndex)
|
|
{
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "IS_CAM_SPLINE_PAUSED");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "IS_CAM_SPLINE_PAUSED - Camera is not script controlled" ))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()), "IS_CAM_SPLINE_PAUSED - Cam is not a named spline cam" ))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
return splineCamera->IsPaused();
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// interp
|
|
void CommandSetCamActiveWithInterp (int CameraIndexDest, int CameraIndexSource, int iDuration, int graphTypePos, int graphTypeRot )
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
CommandSetCamActive(CameraIndexDest, true);
|
|
|
|
camBaseCamera* sourceCamera = camBaseCamera::GetCameraAtPoolIndex(CameraIndexSource);
|
|
camBaseCamera* destinationCamera = camBaseCamera::GetCameraAtPoolIndex(CameraIndexDest);
|
|
|
|
if (SCRIPT_VERIFY (sourceCamera, "SET_CAM_ACTIVE_WITH_INTERP - Source camera does not exist") &&
|
|
SCRIPT_VERIFY (destinationCamera, "SET_CAM_ACTIVE_WITH_INTERP - Destination camera does not exist"))
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndexDest),"SET_CAM_ACTIVE_WITH_INTERP - Destination camera is not script controlled" ) &&
|
|
SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndexSource),"SET_CAM_ACTIVE_WITH_INTERP - Source Camera is not script controlled" ) )
|
|
{
|
|
camFrameInterpolator* sourceCameraFrameInterpolator = sourceCamera->GetFrameInterpolator();
|
|
if(sourceCameraFrameInterpolator && (sourceCameraFrameInterpolator->GetSourceCamera() == destinationCamera))
|
|
{
|
|
//The interpolation source camera is currently interpolating from our new destination camera, so we must lock the existing
|
|
//interpolation to a static (destination-relative) frame. Otherwise we would get a circular reference that can result in
|
|
//camera glitches.
|
|
sourceCameraFrameInterpolator->SetSourceCamera(NULL);
|
|
}
|
|
|
|
destinationCamera->InterpolateFromCamera(*sourceCamera, iDuration);
|
|
|
|
camFrameInterpolator* interpolator = destinationCamera->GetFrameInterpolator();
|
|
if(interpolator)
|
|
{
|
|
interpolator->SetCurveTypeForFrameComponent(camFrame::CAM_FRAME_COMPONENT_POS, (camFrameInterpolator::eCurveTypes)graphTypePos);
|
|
interpolator->SetCurveTypeForFrameComponent(camFrame::CAM_FRAME_COMPONENT_MATRIX, (camFrameInterpolator::eCurveTypes)graphTypeRot);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bool CommandIsCamInterpolating(int CameraIndex)
|
|
{
|
|
bool isInterpolating = false;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "IS_CAM_INTERPOLATING");
|
|
if(pCamera)
|
|
{
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex),"IS_CAM_INTERPOLATING - Camera is not script controlled" ))
|
|
{
|
|
if(pCamera->GetIsClassId(camBaseSplineCamera::GetStaticClassId()))
|
|
{
|
|
camBaseSplineCamera* splineCamera = static_cast<camBaseSplineCamera*>(pCamera);
|
|
isInterpolating = !splineCamera->HasReachedEnd();
|
|
}
|
|
else
|
|
{
|
|
isInterpolating = pCamera->IsInterpolating();
|
|
}
|
|
}
|
|
}
|
|
|
|
return isInterpolating;
|
|
}
|
|
|
|
bool CommandIsInterpolatingFromScriptCams()
|
|
{
|
|
const bool isInterpolatingOut = (camInterface::GetScriptDirector().GetRenderState() == camBaseDirector::RS_INTERPOLATING_OUT);
|
|
|
|
return isInterpolatingOut;
|
|
}
|
|
|
|
bool CommandIsInterpolatingToScriptCams()
|
|
{
|
|
const bool isInterpolatingIn = (camInterface::GetScriptDirector().GetRenderState() == camBaseDirector::RS_INTERPOLATING_IN);
|
|
|
|
return isInterpolatingIn;
|
|
}
|
|
|
|
void CommandSetGameplayCamAltitudeFovScalingState(bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetPersistentHighAltitudeFovScalingState(state);
|
|
}
|
|
|
|
void CommandDisableGameplayCamAltitudeFovScalingThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().DisableHighAltitudeFovScalingThisUpdate();
|
|
}
|
|
|
|
bool CommandIsGameplayCamLookingBehind()
|
|
{
|
|
const bool isLookingBehind = camInterface::GetGameplayDirector().IsLookingBehind();
|
|
|
|
return isLookingBehind;
|
|
}
|
|
|
|
void CommandSetIgnoreCollisionForEntityThisUpdate(int index)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
const CEntity* pEntity = CTheScripts::GetEntityToQueryFromGUID<CEntity>(index, CTheScripts::GUID_ASSERT_FLAG_ENTITY_EXISTS);
|
|
|
|
if(pEntity)
|
|
{
|
|
camInterface::GetGameplayDirector().SetScriptEntityToIgnoreCollisionThisUpdate(pEntity);
|
|
}
|
|
}
|
|
|
|
void CommandDisableCamCollisionForObject(int index)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
CObject* pObject = CTheScripts::GetEntityToModifyFromGUID<CObject>(index, CTheScripts::GUID_ASSERT_FLAG_ENTITY_EXISTS);
|
|
|
|
if(pObject)
|
|
{
|
|
phInst* pObjectPhysicsInst = pObject->GetCurrentPhysicsInst();
|
|
if(pObjectPhysicsInst)
|
|
{
|
|
phArchetype* pObjectArchetype = pObjectPhysicsInst->GetArchetype();
|
|
if(pObjectArchetype)
|
|
{
|
|
pObjectArchetype->RemoveIncludeFlags(ArchetypeFlags::GTA_CAMERA_TEST);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandBypassCameraCollisionBuoyancyTestThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camThirdPersonCamera* pThirdPersonCamera = camInterface::GetGameplayDirector().GetThirdPersonCamera();
|
|
if(pThirdPersonCamera)
|
|
{
|
|
pThirdPersonCamera->BypassBuoyancyThisUpdate();
|
|
}
|
|
}
|
|
|
|
void CommandSetGameplayCamEntityToLimitFocusOverBoundingSphereThisUpdate(int index)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
const CEntity* entity = CTheScripts::GetEntityToQueryFromGUID<CEntity>(index, CTheScripts::GUID_ASSERT_FLAG_ENTITY_EXISTS);
|
|
if(entity)
|
|
{
|
|
camInterface::GetGameplayDirector().SetScriptEntityToLimitFocusOverBoundingSphereThisUpdate(entity);
|
|
}
|
|
}
|
|
|
|
void CommandDisableFirstPersonCameraWaterClippingTestThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().ScriptDisableWaterClippingTestThisUpdate();
|
|
}
|
|
|
|
//shake
|
|
|
|
void CommandShakeCam(int CameraIndex, const char* ShakeName, float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SHAKE_CAM");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SHAKE_CAM - Camera is not script controlled"))
|
|
{
|
|
pCamera->StopShaking();
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptDisabledShake();
|
|
#endif // __BANK
|
|
|
|
SCRIPT_VERIFY_TWO_STRINGS(pCamera->Shake(ShakeName, fAmplitudeScalar),
|
|
"SHAKE_CAM - Failed to create the requested shake: ", ShakeName);
|
|
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeName(ShakeName);
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandAnimatedShakeCam(int CameraIndex, const char* AnimDictName, const char* AnimClipName, const char* ShakeName, float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "ANIMATED_SHAKE_CAM");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "ANIMATED_SHAKE_CAM - Camera is not script controlled"))
|
|
{
|
|
pCamera->StopShaking();
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptDisabledShake();
|
|
#endif // __BANK
|
|
|
|
SCRIPT_VERIFY_TWO_STRINGS(pCamera->Shake(AnimDictName, AnimClipName, ShakeName, fAmplitudeScalar),
|
|
"ANIMATED_SHAKE_CAM - Failed to create the requested shake using anim: ", AnimClipName);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeName(ShakeName);
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
}
|
|
}
|
|
|
|
bool CommandIsCamShaking(int CameraIndex)
|
|
{
|
|
bool isShaking = false;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "IS_CAM_SHAKING");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "IS_CAM_SHAKING - Camera is not script controlled"))
|
|
{
|
|
isShaking = pCamera->IsShaking();
|
|
}
|
|
}
|
|
|
|
return isShaking;
|
|
}
|
|
|
|
void CommandSetCamShakeAmplitude(int CameraIndex, float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_CAM_SHAKE_AMPLITUDE");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_SHAKE_AMPLITUDE - Camera is not script controlled"))
|
|
{
|
|
SCRIPT_VERIFY(pCamera->SetShakeAmplitude(fAmplitudeScalar), "SET_CAM_SHAKE_AMPLITUDE - Camera is not shaking");
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandStopCamShaking(int CameraIndex, bool shouldStopImmediately)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "STOP_CAM_SHAKING");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "STOP_CAM_SHAKING - Camera is not script controlled"))
|
|
{
|
|
pCamera->StopShaking(shouldStopImmediately);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptDisabledShake();
|
|
#endif // __BANK
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandShakeScriptGlobal(const char* ShakeName, float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
SCRIPT_VERIFY_TWO_STRINGS(camInterface::GetScriptDirector().Shake(ShakeName, fAmplitudeScalar),
|
|
"SHAKE_SCRIPT_GLOBAL - Failed to create the requested shake: ", ShakeName);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeName(ShakeName);
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
|
|
void CommandAnimatedShakeScriptGlobal(const char* AnimDictName, const char* AnimClipName, const char* ShakeName, float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
SCRIPT_VERIFY_TWO_STRINGS(camInterface::GetScriptDirector().Shake(AnimDictName, AnimClipName, ShakeName, fAmplitudeScalar),
|
|
"ANIMATED_SHAKE_SCRIPT_GLOBAL - Failed to create the requested shake: ", AnimClipName);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeName(ShakeName);
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
|
|
bool CommandIsScriptGlobalShaking()
|
|
{
|
|
const bool isShaking = camInterface::GetScriptDirector().IsShaking();
|
|
|
|
return isShaking;
|
|
}
|
|
|
|
void CommandSetScriptGlobalShakeAmplitude(float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
SCRIPT_VERIFY(camInterface::GetScriptDirector().SetShakeAmplitude(fAmplitudeScalar),
|
|
"SET_SCRIPT_GLOBAL_SHAKE_AMPLITUDE - The script director is not shaking");
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
|
|
void CommandStopScriptGlobalShaking(bool shouldStopImmediately)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetScriptDirector().StopShaking(shouldStopImmediately);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptDisabledShake();
|
|
#endif // __BANK
|
|
}
|
|
|
|
void CommandTriggerVehiclePartBrokenCameraShake(int vehicleIndex, int vehiclePart, float amplitude)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND("vehicleIndex(%d) vehiclePart(%d) amplitude(%.2f)", vehicleIndex, vehiclePart, amplitude);
|
|
|
|
const CVehicle* vehicle = CTheScripts::GetEntityToModifyFromGUID<CVehicle>(vehicleIndex, CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
|
|
|
|
if(SCRIPT_VERIFY(vehicle, "Invalid vehicle index passed to the TRIGGER_VEHICLE_PART_BROKEN_CAMERA_SHAKE native"))
|
|
{
|
|
vehiclePart += VEH_EXTRA_1 - 1;
|
|
if (SCRIPT_VERIFY(vehiclePart >= VEH_EXTRA_1 && vehiclePart <= VEH_LAST_EXTRA, "TRIGGER_VEHICLE_PART_BROKEN_CAMERA_SHAKE - Extra is outside range"))
|
|
{
|
|
camInterface::GetGameplayDirector().RegisterVehiclePartBroken(*vehicle, static_cast<eHierarchyId>(vehiclePart), Max(0.0f, amplitude));
|
|
}
|
|
}
|
|
}
|
|
|
|
//camera animation
|
|
|
|
void GetAnimInfoFromControlFlags(int nControlFlags, u32& iFlags)
|
|
{
|
|
bool bLooped = (nControlFlags & BIT(AF_LOOPING)) ? true : false;
|
|
|
|
// Animation is looped if it has to play for a certain length of time
|
|
if ( (bLooped) /*&&(bHoldLastFrame == false)*/ )
|
|
{
|
|
iFlags |= APF_ISLOOPED;
|
|
}
|
|
}
|
|
|
|
bool CommandPlayCamAnim(int CameraIndex, const char* animName, const char* animDictName, const scrVector &scrVecOriginPosition, const scrVector &scrVecOriginRotation, int iflags, int RotOrder)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
bool hasSucceeded = false;
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "PLAY_CAM_ANIM - Camera is not script controlled"))
|
|
{
|
|
const crClip* clip = fwAnimManager::GetClipIfExistsByName(animDictName, animName);
|
|
if (SCRIPT_VERIFYF(clip, "PLAY_CAM_ANIM - Couldn't find animation \"%s\\%s\". Has it been loaded?", animDictName, animName))
|
|
{
|
|
u32 iAnimFlags = 0;
|
|
GetAnimInfoFromControlFlags(iflags, iAnimFlags);
|
|
|
|
Matrix34 sceneOrigin;
|
|
CScriptEulers::MatrixFromEulers(sceneOrigin, Vector3(scrVecOriginRotation) * DtoR, static_cast<EulerAngleOrder>(RotOrder));
|
|
|
|
sceneOrigin.d = Vector3(scrVecOriginPosition);
|
|
hasSucceeded = camInterface::GetScriptDirector().AnimateCamera(CameraIndex, animDictName, *clip, sceneOrigin, -1, iAnimFlags);
|
|
}
|
|
}
|
|
|
|
return hasSucceeded;
|
|
}
|
|
|
|
bool CommandPlaySynchronizedCamAnim(int CameraIndex, int sceneId, const char* animName, const char* animDictName)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
bool hasSucceeded = false;
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "PLAY_SYNCHRONIZED_CAM_ANIM - Camera is not script controlled"))
|
|
{
|
|
if (SCRIPT_VERIFY(fwAnimDirectorComponentSyncedScene::IsValidSceneId(static_cast<fwSyncedSceneId>(sceneId)), "PLAY_SYNCHRONIZED_CAM_ANIM - Invalid scene ID!"))
|
|
{
|
|
const crClip* clip = fwAnimManager::GetClipIfExistsByName(animDictName, animName);
|
|
if (SCRIPT_VERIFYF(clip, "PLAY_SYNCHRONIZED_CAM_ANIM - Couldn't find animation \"%s\\%s\". Has it been loaded?", animDictName, animName))
|
|
{
|
|
Matrix34 sceneOrigin;
|
|
fwAnimDirectorComponentSyncedScene::GetSyncedSceneOrigin(static_cast<fwSyncedSceneId>(sceneId), sceneOrigin);
|
|
hasSucceeded = camInterface::GetScriptDirector().AnimateCamera(CameraIndex, animDictName, *clip, sceneOrigin, sceneId);
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
return hasSucceeded;
|
|
}
|
|
|
|
bool CommandIsCamPlayingAnim(int CameraIndex, const char* animName, const char* animDictName)
|
|
{
|
|
bool isPlaying = false;
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "IS_CAM_PLAYING_ANIM - Camera is not script controlled"))
|
|
{
|
|
const crClip* clip = fwAnimManager::GetClipIfExistsByName(animDictName, animName);
|
|
if (SCRIPT_VERIFYF(clip, "IS_CAM_PLAYING_ANIM - Couldn't find animation \"%s\\%s\". Has it been loaded?", animDictName, animName))
|
|
{
|
|
isPlaying = camInterface::GetScriptDirector().IsCameraPlayingAnimation(CameraIndex, animDictName, *clip);
|
|
}
|
|
}
|
|
|
|
return isPlaying;
|
|
}
|
|
|
|
void CommandSetCamAnimCurrentPhase(int CameraIndex, float phase)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_CAM_ANIM_CURRENT_PHASE - Camera is not script controlled"))
|
|
{
|
|
if (SCRIPT_VERIFY((phase >= 0.0f), "SET_CAM_ANIM_CURRENT_PHASE - phase should be greater than or equal to 0.0") &&
|
|
SCRIPT_VERIFY((phase <= 1.0f), "SET_CAM_ANIM_CURRENT_PHASE - phase should be less than or equal to 1.0"))
|
|
{
|
|
camInterface::GetScriptDirector().SetCameraAnimationPhase(CameraIndex, phase);
|
|
}
|
|
}
|
|
}
|
|
|
|
float CommandGetCamAnimCurrentPhase(int CameraIndex)
|
|
{
|
|
float phase = 0.0f;
|
|
|
|
if (SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "GET_CAM_ANIM_CURRENT_PHASE - Camera is not script controlled"))
|
|
{
|
|
phase = camInterface::GetScriptDirector().GetCameraAnimationPhase(CameraIndex);
|
|
}
|
|
|
|
return phase;
|
|
}
|
|
|
|
//Scene Transition - deprecated!
|
|
|
|
void CommandStartSceneTransition(int UNUSED_PARAM(CameraIndex), const scrVector &UNUSED_PARAM(vStartPos), const scrVector &UNUSED_PARAM(vEndPos))
|
|
{
|
|
cameraAssertf(false, "START_CAM_TRANSITION is deprecated!");
|
|
}
|
|
|
|
bool CommandIsCameraTransitioning(int UNUSED_PARAM(CameraIndex))
|
|
{
|
|
cameraAssertf(false, "IS_CAMERA_TRANSITIONING is deprecated!");
|
|
|
|
return false;
|
|
}
|
|
|
|
float CommandGetCamTransitionPhase(int UNUSED_PARAM(CameraIndex))
|
|
{
|
|
cameraAssertf(false, "GET_CAM_TRANSITION_PHASE is deprecated!");
|
|
|
|
return 0.0f;
|
|
}
|
|
|
|
//Scripted fly camera
|
|
|
|
void CommandSetFlyCamHorizontalResponse(int CameraIndex, float maxSpeed, float maxAcceleration, float maxDeceleration)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_FLY_CAM_HORIZONTAL_RESPONSE");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_FLY_CAM_HORIZONTAL_RESPONSE - Camera is not script controlled"))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camScriptedFlyCamera::GetStaticClassId()), "SET_FLY_CAM_HORIZONTAL_RESPONSE - Camera is not a scripted fly camera"))
|
|
{
|
|
camScriptedFlyCamera* pScriptedFlyCamera = static_cast<camScriptedFlyCamera*>(pCamera);
|
|
camScriptedFlyCameraMetadata& metadata = pScriptedFlyCamera->GetMetadata();
|
|
|
|
metadata.m_HorizontalTranslationInputResponse.m_MaxAcceleration = maxAcceleration;
|
|
metadata.m_HorizontalTranslationInputResponse.m_MaxDeceleration = maxDeceleration;
|
|
metadata.m_HorizontalTranslationInputResponse.m_MaxSpeed = maxSpeed;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetFlyCamVerticalResponse(int CameraIndex, float maxSpeed, float maxAcceleration, float maxDeceleration)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_FLY_CAM_VERTICAL_RESPONSE");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_FLY_CAM_VERTICAL_RESPONSE - Camera is not script controlled"))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camScriptedFlyCamera::GetStaticClassId()), "SET_FLY_CAM_VERTICAL_RESPONSE - Camera is not a scripted fly camera"))
|
|
{
|
|
camScriptedFlyCamera* pScriptedFlyCamera = static_cast<camScriptedFlyCamera*>(pCamera);
|
|
camScriptedFlyCameraMetadata& metadata = pScriptedFlyCamera->GetMetadata();
|
|
|
|
metadata.m_VerticalTranslationInputResponse.m_MaxAcceleration = maxAcceleration;
|
|
metadata.m_VerticalTranslationInputResponse.m_MaxDeceleration = maxDeceleration;
|
|
metadata.m_VerticalTranslationInputResponse.m_MaxSpeed = maxSpeed;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetFlyCamMaxHeight(int CameraIndex, float maxHeight)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_FLY_CAM_MAX_HEIGHT");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_FLY_CAM_MAX_HEIGHT - Camera is not script controlled"))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camScriptedFlyCamera::GetStaticClassId()), "SET_FLY_CAM_MAX_HEIGHT - Camera is not a scripted fly camera"))
|
|
{
|
|
camScriptedFlyCamera* pScriptedFlyCamera = static_cast<camScriptedFlyCamera*>(pCamera);
|
|
camScriptedFlyCameraMetadata& metadata = pScriptedFlyCamera->GetMetadata();
|
|
metadata.m_MaxHeight = maxHeight;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetFlyCamCoordAndConstrain(int CameraIndex, const scrVector &position)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_FLY_CAM_COORD_AND_CONSTRAIN");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_FLY_CAM_COORD_AND_CONSTRAIN - Camera is not script controlled"))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camScriptedFlyCamera::GetStaticClassId()), "SET_FLY_CAM_COORD_AND_CONSTRAIN - Camera is not a scripted fly camera"))
|
|
{
|
|
Vector3 vOverridePos(position);
|
|
camScriptedFlyCamera* pScriptedFlyCamera = static_cast<camScriptedFlyCamera*>(pCamera);
|
|
pScriptedFlyCamera->SetScriptPosition(vOverridePos);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommandSetFlyCamVerticalControlsThisUpdate(int CameraIndex)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "SET_FLY_CAM_VERTICAL_CONTROLS_THIS_UPDATE");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "SET_FLY_CAM_VERTICAL_CONTROLS_THIS_UPDATE - Camera is not script controlled"))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camScriptedFlyCamera::GetStaticClassId()), "SET_FLY_CAM_VERTICAL_CONTROLS_THIS_UPDATE - Camera is not a scripted fly camera"))
|
|
{
|
|
camScriptedFlyCamera* pScriptedFlyCamera = static_cast<camScriptedFlyCamera*>(pCamera);
|
|
pScriptedFlyCamera->SetVerticalControlThisUpdate(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bool CommandWasFlyCamConstrainedOnPreviousUpdate(int CameraIndex)
|
|
{
|
|
bool wasConstrained = false;
|
|
|
|
camBaseCamera* pCamera = GetCameraFromIndex(CameraIndex, "WAS_FLY_CAM_CONSTRAINED_ON_PREVIOUS_UDPATE");
|
|
if(pCamera)
|
|
{
|
|
if(SCRIPT_VERIFY(camInterface::GetScriptDirector().IsCameraScriptControllable(CameraIndex), "WAS_FLY_CAM_CONSTRAINED_ON_PREVIOUS_UDPATE - Camera is not script controlled"))
|
|
{
|
|
if(SCRIPT_VERIFY(pCamera->GetIsClassId(camScriptedFlyCamera::GetStaticClassId()), "WAS_FLY_CAM_CONSTRAINED_ON_PREVIOUS_UDPATE - Camera is not a scripted fly camera"))
|
|
{
|
|
camScriptedFlyCamera* pScriptedFlyCamera = static_cast<camScriptedFlyCamera*>(pCamera);
|
|
wasConstrained = pScriptedFlyCamera->WasConstrained();
|
|
}
|
|
}
|
|
}
|
|
|
|
return wasConstrained;
|
|
}
|
|
|
|
//Fade
|
|
|
|
bool CommandIsScreenFadingIn()
|
|
{
|
|
return (camInterface::IsFadingIn());
|
|
}
|
|
|
|
bool CommandIsScreenFadingOut()
|
|
{
|
|
return (camInterface::IsFadingOut());
|
|
}
|
|
|
|
bool CommandIsScreenFadedOut()
|
|
{
|
|
return (camInterface::IsFadedOut());
|
|
}
|
|
|
|
bool CommandIsScreenFadedIn()
|
|
{
|
|
return (camInterface::IsFadedIn());
|
|
}
|
|
|
|
void CommandDoScreenFadeIn(int fadeTime)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
#if __BANK
|
|
char DebugString[64];
|
|
sprintf(DebugString, "DO_SCREEN_FADE_IN %d ms", fadeTime);
|
|
CScriptDebug::SetContentsOfFadeCommandTextWidget(DebugString);
|
|
#endif
|
|
|
|
#if GTA_REPLAY && !__FINAL
|
|
if( CReplayMgr::IsReplayInControlOfWorld())
|
|
{
|
|
scriptAssertf( 0, "CommandDoScreenFadeIn: Called during replay %s", CTheScripts::GetCurrentScriptNameAndProgramCounter());
|
|
}
|
|
#endif //GTA_REPLAY
|
|
// Handle Fade Ins, as an extra precaution, for our position tracking, as we'll need some safety there
|
|
camInterface::FadeIn(fadeTime);
|
|
}
|
|
|
|
void CommandDoScreenFadeOut(int fadeTime)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
// stop opening the frontend if the script initiates a fade
|
|
//CFrontEnd::StopOpeningFrontend();
|
|
#if __BANK
|
|
char DebugString[64];
|
|
sprintf(DebugString, "DO_SCREEN_FADE_OUT %d ms", fadeTime);
|
|
CScriptDebug::SetContentsOfFadeCommandTextWidget(DebugString);
|
|
#endif
|
|
|
|
#if GTA_REPLAY && !__FINAL
|
|
if( CReplayMgr::IsReplayInControlOfWorld())
|
|
{
|
|
scriptAssertf( 0, "CommandDoScreenFadeOut: Called during replay %s", CTheScripts::GetCurrentScriptNameAndProgramCounter());
|
|
}
|
|
#endif //GTA_REPLAY
|
|
// Handle fade outs, because these are always going to cause awkwardness
|
|
camInterface::FadeOut(fadeTime);
|
|
}
|
|
|
|
//wide screen
|
|
void CommandSetWidescreenBorders(bool bSet, int duration)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
gVpMan.SetWidescreenBorders(bSet, duration);
|
|
}
|
|
|
|
bool CommandAreWidescreenBordersActive()
|
|
{
|
|
return gVpMan.AreWidescreenBordersActive();
|
|
}
|
|
|
|
//Game Cam
|
|
scrVector CommandGetGameplayCamCoord ()
|
|
{
|
|
return camInterface::GetGameplayDirector().GetFrame().GetPosition();
|
|
}
|
|
|
|
scrVector CommandGetGameplayCamRot (int RotOrder)
|
|
{
|
|
const Matrix34& worldMatrix = camInterface::GetGameplayDirector().GetFrame().GetWorldMatrix();
|
|
Vector3 vRot = CScriptEulers::MatrixToEulers(worldMatrix, static_cast<EulerAngleOrder>(RotOrder));
|
|
vRot *= RtoD;
|
|
|
|
return vRot;
|
|
}
|
|
|
|
float CommandGetGameplayCamFov ()
|
|
{
|
|
return camInterface::GetGameplayDirector().GetFrame().GetFov();
|
|
}
|
|
|
|
void CommandSetGameplayCamMotionBlurScalingThisUpdate(float scaling)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
scaling = Max(scaling, 0.0f); //Do not allow negative scaling to be specified by script.
|
|
|
|
camInterface::GetGameplayDirector().SetScriptControlledMotionBlurScalingThisUpdate(scaling);
|
|
}
|
|
|
|
void CommandSetGameplayCamMaxMotionBlurStrengthThisUpdate(float maxStrength)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
maxStrength = Clamp(maxStrength, 0.0f, 1.0f); //Clamp the script input to the valid range for motion blur strength.
|
|
|
|
camInterface::GetGameplayDirector().SetScriptControlledMaxMotionBlurStrengthThisUpdate(maxStrength);
|
|
}
|
|
|
|
float CommandGetGameplayCamRelativeHeading()
|
|
{
|
|
float heading = camInterface::GetGameplayDirector().GetRelativeCameraHeading();
|
|
heading *= RtoD;
|
|
|
|
return heading;
|
|
}
|
|
|
|
void CommandSetGameplayCamRelativeHeading(float fCamHeading)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
scriptcameraDebugf3("FC: %d - CommandSetGameplayCamRelativeHeading( fCamHeading(%f) )", fwTimer::GetFrameCount(), fCamHeading);
|
|
|
|
const float relativeHeadingToApply = fwAngle::LimitRadianAngleSafe(fCamHeading * DtoR);
|
|
camInterface::GetGameplayDirector().SetUseScriptHeading(relativeHeadingToApply);
|
|
|
|
// If we're rendering a cinematic mounted camera (e.g. in vehicle POV) we want to force the relative heading to what script are setting (instead of cloning the gameplay camera heading)
|
|
const camBaseDirector* renderedDirector = camInterface::GetDominantRenderedDirector();
|
|
const bool isCinematicDirector = renderedDirector && renderedDirector->GetIsClassId(camCinematicDirector::GetStaticClassId());
|
|
if(isCinematicDirector)
|
|
{
|
|
camCinematicMountedCamera* firstPersonVehicleCamera = camInterface::GetCinematicDirector().GetFirstPersonVehicleCamera();
|
|
if(firstPersonVehicleCamera)
|
|
{
|
|
firstPersonVehicleCamera->SetUseScriptHeading(relativeHeadingToApply);
|
|
}
|
|
}
|
|
}
|
|
|
|
float CommandGetGameplayCamRelativePitch()
|
|
{
|
|
float pitch = camInterface::GetGameplayDirector().GetRelativeCameraPitch();
|
|
pitch *= RtoD;
|
|
|
|
return pitch;
|
|
}
|
|
|
|
void CommandSetGameplayCamRelativePitch(float fCamPitch, float smoothRate)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
scriptcameraDebugf3("FC: %d - CommandSetGameplayCamRelativePitch( fCamPitch(%f), smoothRate(%f) )", fwTimer::GetFrameCount(), fCamPitch, smoothRate);
|
|
|
|
const float relativePitchToApply = Clamp(fCamPitch * DtoR, -HALF_PI, HALF_PI);
|
|
camInterface::GetGameplayDirector().SetUseScriptPitch(relativePitchToApply, smoothRate );
|
|
|
|
//we intentionally don't set the pitch for the camCinematicMountedCamera because it might affect existing script code that
|
|
//rely on this function on doing nothing for POVs.
|
|
//If script want to set the heading and pitch on any gameplay camera (including POVs) it should use the function below CommandForceCameraRelativeHeadingAndPitch
|
|
}
|
|
|
|
void CommandResetGameplayCamFullAttachParentTransformTimer()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
|
|
camThirdPersonCamera* thirdPersonCamera = camInterface::GetGameplayDirector().GetThirdPersonCamera();
|
|
if(thirdPersonCamera)
|
|
{
|
|
thirdPersonCamera->ResetFullAttachParentMatrixForRelativeOrbitTimer();
|
|
}
|
|
}
|
|
|
|
void CommandForceCameraRelativeHeadingAndPitch(float fHeading, float fPitch, float fPitchSmoothRate)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
scriptcameraDebugf3("FC: %d - CommandForceCameraRelativeHeadingAndPitch( fHeading(%f), fPitch(%f), fPitchSmoothRate(%f) )", fwTimer::GetFrameCount(), fHeading, fPitch, fPitchSmoothRate);
|
|
|
|
const float relativeHeadingToApply = fwAngle::LimitRadianAngleSafe(fHeading * DtoR);
|
|
camInterface::GetGameplayDirector().SetUseScriptHeading(relativeHeadingToApply);
|
|
|
|
const float relativePitchToApply = Clamp(fPitch * DtoR, -HALF_PI, HALF_PI);
|
|
camInterface::GetGameplayDirector().SetUseScriptPitch(relativePitchToApply, fPitchSmoothRate);
|
|
|
|
//Get the cinematic director and check it is rendering a first person vehicle camera
|
|
camCinematicDirector& cinematicDirector = camInterface::GetCinematicDirector();
|
|
camCinematicMountedCamera* firstPersonVehicleCamera = cinematicDirector.GetFirstPersonVehicleCamera();
|
|
if(firstPersonVehicleCamera)
|
|
{
|
|
firstPersonVehicleCamera->SetUseScriptHeading(relativeHeadingToApply);
|
|
firstPersonVehicleCamera->SetUseScriptPitch(relativePitchToApply);
|
|
}
|
|
}
|
|
|
|
void CommandForceBonnetCameraRelativeHeadingAndPitch(float fHeading, float fPitch)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
const float relativeHeadingToApply = fwAngle::LimitRadianAngleSafe(fHeading * DtoR);
|
|
const float relativePitchToApply = Clamp(fPitch * DtoR, -HALF_PI, HALF_PI);
|
|
|
|
//Get the cinematic director and check it is rendering a first person vehicle camera
|
|
camCinematicDirector& cinematicDirector = camInterface::GetCinematicDirector();
|
|
|
|
//check the bonnet camera
|
|
camCinematicMountedCamera* bonnetVehicleCamera = cinematicDirector.GetBonnetVehicleCamera();
|
|
if(bonnetVehicleCamera)
|
|
{
|
|
bonnetVehicleCamera->SetUseScriptHeading(relativeHeadingToApply);
|
|
bonnetVehicleCamera->SetUseScriptPitch(relativePitchToApply);
|
|
}
|
|
}
|
|
|
|
void CommandSetFirstPersonShooterCameraHeading(float heading)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetFirstPersonShooterCameraHeading( heading * DtoR );
|
|
}
|
|
|
|
void CommandSetFirstPersonShooterCameraPitch(float pitch)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
const float relativePitchToApply = Clamp(pitch * DtoR, -HALF_PI, HALF_PI);
|
|
camInterface::GetGameplayDirector().SetFirstPersonShooterCameraPitch( relativePitchToApply );
|
|
}
|
|
|
|
void CommandSetScriptedCameraIsFirstPersonThisFrame(bool isFirstPersonThisFrame)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
#if FPS_MODE_SUPPORTED
|
|
camInterface::SetScriptedCameraIsFirstPersonThisFrame(isFirstPersonThisFrame);
|
|
#endif
|
|
}
|
|
|
|
void CommandSetFollowCamIgnoreAttachParentMovementThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetShouldFollowCameraIgnoreAttachParentMovementThisUpdateForScript();
|
|
}
|
|
|
|
bool CommandIsGameFollowPedCamActive()
|
|
{
|
|
bool isActive = camInterface::GetGameplayDirector().IsFollowingPed();
|
|
return isActive;
|
|
}
|
|
|
|
bool CommandSetFollowPedCamThisUpdate(const char* cameraName, int interpolationDuration)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if(!SCRIPT_VERIFY(cameraName, "SET_FOLLOW_PED_CAM_THIS_UPDATE - NULL camera name"))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
const u32 cameraNameHash = atStringHash(cameraName);
|
|
tGameplayCameraSettings settings(NULL, cameraNameHash, interpolationDuration);
|
|
|
|
const bool hasSucceeded = camInterface::GetGameplayDirector().SetScriptOverriddenFollowPedCameraSettingsThisUpdate(settings);
|
|
|
|
SCRIPT_ASSERT_TWO_STRINGS(hasSucceeded, "SET_FOLLOW_PED_CAM_THIS_UPDATE has failed. Is this camera name valid: ", cameraName);
|
|
|
|
return hasSucceeded;
|
|
}
|
|
|
|
int CommandGetFollowPedCamViewMode()
|
|
{
|
|
const int viewMode = camControlHelper::GetViewModeForContext(camControlHelperMetadataViewMode::ON_FOOT);
|
|
|
|
return viewMode;
|
|
}
|
|
|
|
void CommandSetFollowPedCamViewMode(int viewMode)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
ASSERT_ONLY(const bool hasSucceeded =) camControlHelper::SetViewModeForContext(camControlHelperMetadataViewMode::ON_FOOT, viewMode);
|
|
SCRIPT_ASSERT(hasSucceeded, "SET_FOLLOW_PED_CAM_VIEW_MODE failed, is the view mode valid?");
|
|
}
|
|
|
|
bool CommandIsGameFollowVehicleCamActive()
|
|
{
|
|
bool isActive = camInterface::GetGameplayDirector().IsFollowingVehicle();
|
|
return isActive;
|
|
}
|
|
|
|
bool CommandSetFollowVehicleCamThisUpdate(const char* cameraName, int interpolationDuration)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if(!SCRIPT_VERIFY(cameraName, "SET_FOLLOW_VEHICLE_CAM_THIS_UPDATE - NULL camera name"))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
const u32 cameraNameHash = atStringHash(cameraName);
|
|
tGameplayCameraSettings settings(NULL, cameraNameHash, interpolationDuration);
|
|
|
|
const bool hasSucceeded = camInterface::GetGameplayDirector().SetScriptOverriddenFollowVehicleCameraSettingsThisUpdate(settings);
|
|
|
|
SCRIPT_ASSERT_TWO_STRINGS(hasSucceeded, "SET_FOLLOW_VEHICLE_CAM_THIS_UPDATE has failed. Is this camera name valid: ", cameraName);
|
|
|
|
return hasSucceeded;
|
|
}
|
|
|
|
void CommandSetFollowVehicleCamHighAngleModeThisUpdate(bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetScriptOverriddenFollowVehicleCameraHighAngleModeThisUpdate(state);
|
|
}
|
|
|
|
void CommandSetFollowVehicleCamHighAngleModeEveryUpdate(bool ShouldOverride, bool OverriddenState)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetScriptOverriddenFollowVehicleCameraHighAngleModeEveryUpdate(ShouldOverride, OverriddenState);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Table games camera API
|
|
bool CommandSetTableGamesCameraThisUpdate(int cameraNameHash)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
const atHashString cameraName((u32)cameraNameHash);
|
|
if (!SCRIPT_VERIFY(cameraName.IsNotNull(), "SET_TABLE_GAMES_CAMERA_THIS_UPDATE - NULL camera name"))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
tGameplayCameraSettings settings(nullptr, cameraName.GetHash(), 0); //interpolation duration is red from the camera metadata.
|
|
|
|
const bool hasSucceeded = camInterface::GetGameplayDirector().SetScriptOverriddenTableGamesCameraSettingsThisUpdate(settings);
|
|
|
|
SCRIPT_ASSERT_TWO_STRINGS(hasSucceeded, "SET_TABLE_GAMES_CAMERA_THIS_UPDATE has failed. Is this camera name valid: %s", SAFE_CSTRING(cameraName.GetCStr()));
|
|
|
|
return hasSucceeded;
|
|
}
|
|
|
|
bool CommandIsTableGamesCameraActive()
|
|
{
|
|
return camInterface::GetGameplayDirector().IsTableGamesCameraRunning();
|
|
}
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//Deprecated! Replaced by CommandSetFollowVehicleCamViewMode
|
|
void CommandSetGameFollowVehicleCamZoomLevel(int viewMode)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
//NOTE: The new view modes now match the legacy zoom levels, so it is not necessary to map the enum.
|
|
ASSERT_ONLY(const bool hasSucceeded =) camControlHelper::SetViewModeForContext(camControlHelperMetadataViewMode::IN_VEHICLE, viewMode);
|
|
SCRIPT_ASSERT(hasSucceeded, "SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL failed, is the view mode valid?");
|
|
}
|
|
|
|
int CommandGetFollowVehicleCamViewMode()
|
|
{
|
|
const int viewMode = camControlHelper::GetViewModeForContext(camControlHelperMetadataViewMode::IN_VEHICLE);
|
|
|
|
return viewMode;
|
|
}
|
|
|
|
void CommandSetFollowVehicleCamViewMode(int viewMode)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
ASSERT_ONLY(const bool hasSucceeded =) camControlHelper::SetViewModeForContext(camControlHelperMetadataViewMode::IN_VEHICLE, viewMode);
|
|
SCRIPT_ASSERT(hasSucceeded, "SET_FOLLOW_VEHICLE_CAM_VIEW_MODE failed, is the view mode valid?");
|
|
}
|
|
|
|
int CommandGetCamViewModeForContext(int context)
|
|
{
|
|
const int viewMode = camControlHelper::GetViewModeForContext(context);
|
|
|
|
return viewMode;
|
|
}
|
|
|
|
void CommandSetCamViewModeForContext(int context, int viewMode)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
ASSERT_ONLY(const bool hasSucceeded =) camControlHelper::SetViewModeForContext(context, viewMode);
|
|
SCRIPT_ASSERT(hasSucceeded, "SET_CAM_VIEW_MODE_FOR_CONTEXT failed, are the context and view mode valid?");
|
|
}
|
|
|
|
int CommandGetCamActiveViewModeContext()
|
|
{
|
|
const int viewModeContext = camInterface::GetGameplayDirector().GetActiveViewModeContext();
|
|
|
|
return viewModeContext;
|
|
}
|
|
|
|
void CommandUseVehicleCamStuntSettingsThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().ScriptRequestVehicleCamStuntSettingsThisUpdate();
|
|
}
|
|
|
|
void CommandUseDedicatedStuntCameraThisUpdate(const char* stuntCameraName)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().ScriptRequestDedicatedStuntCameraThisUpdate(stuntCameraName);
|
|
}
|
|
|
|
void CommandForceVehicleCamStuntSettingsThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().ScriptForceVehicleCamStuntSettingsThisUpdate();
|
|
}
|
|
|
|
void CommandSetFollowVehicleCamSeatThisUpdate(int seatIndex)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().ScriptOverrideFollowVehicleCameraSeatThisUpdate(seatIndex);
|
|
}
|
|
|
|
bool CommandIsGameAimCamActive()
|
|
{
|
|
const bool isActive = camInterface::GetGameplayDirector().IsAiming();
|
|
|
|
return isActive;
|
|
}
|
|
|
|
bool CommandIsGameAimCamActiveInAccurateMode()
|
|
{
|
|
const camThirdPersonAimCamera* camera = camInterface::GetGameplayDirector().GetThirdPersonAimCamera();
|
|
const bool isInAccurateMode = camera && camera->IsInAccurateMode();
|
|
|
|
return isInAccurateMode;
|
|
}
|
|
|
|
bool CommandIsGameFirstPersonAimCamActive()
|
|
{
|
|
const bool isActive = camInterface::GetGameplayDirector().IsFirstPersonAiming();
|
|
|
|
return isActive;
|
|
}
|
|
|
|
void CommandDisableGameAimCamThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
CPed* followPed = const_cast<CPed*>(camInterface::FindFollowPed());
|
|
if(followPed && followPed->IsLocalPlayer())
|
|
{
|
|
CPlayerInfo* playerInfo = followPed->GetPlayerInfo();
|
|
if(playerInfo)
|
|
{
|
|
playerInfo->GetPlayerResetFlags().SetFlag(CPlayerResetFlags::PRF_DISABLE_AIM_CAMERA);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Deprecated! We no longer maintain a separate view mode for on foot aiming.
|
|
int CommandGetPedAimCamViewMode()
|
|
{
|
|
return camControlHelperMetadataViewMode::THIRD_PERSON_MEDIUM;
|
|
}
|
|
|
|
//Deprecated! We no longer maintain a separate view mode for on foot aiming.
|
|
void CommandSetPedAimCamViewMode(int UNUSED_PARAM(viewMode))
|
|
{
|
|
}
|
|
|
|
float CommandGetGameFirstPersonAimCamZoomFactor()
|
|
{
|
|
const float zoomFactor = camControlHelper::GetZoomFactor();
|
|
|
|
return zoomFactor;
|
|
}
|
|
|
|
void CommandSetGameFirstPersonAimCamZoomFactor(float zoomFactor)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camControlHelper::SetZoomFactor(zoomFactor);
|
|
}
|
|
|
|
void CommandSetGameFirstPersonAimCamZoomFactorLimitsThisUpdate(float minZoomFactor, float maxZoomFactor)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camControlHelper::OverrideZoomFactorLimits(minZoomFactor, maxZoomFactor);
|
|
}
|
|
|
|
void CommandSetGameFirstPersonAimCamNearClipThisUpdate(float NearClip)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
cameraDebugf3("%u SET_FIRST_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE %.3f %s", fwTimer::GetFrameCount(), NearClip, CTheScripts::GetCurrentScriptNameAndProgramCounter());
|
|
|
|
camInterface::GetGameplayDirector().SetScriptOverriddenFirstPersonAimCameraNearClipThisUpdate(NearClip);
|
|
}
|
|
|
|
void CommandSetGameThirdPersonAimCamNearClipThisUpdate(float NearClip)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
cameraDebugf3("%u SET_THIRD_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE %.3f %s", fwTimer::GetFrameCount(), NearClip, CTheScripts::GetCurrentScriptNameAndProgramCounter());
|
|
|
|
camInterface::GetGameplayDirector().SetScriptOverriddenThirdPersonAimCameraNearClipThisUpdate(NearClip);
|
|
}
|
|
|
|
void CommandSetGameFirstPersonAimCamRelativeHeadingLimitsThisUpdate(float minRelativeHeading, float maxRelativeHeading)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
const float minRelativeHeadingToApply = fwAngle::LimitRadianAngleSafe(minRelativeHeading * DtoR);
|
|
const float maxRelativeHeadingToApply = fwAngle::LimitRadianAngleSafe(maxRelativeHeading * DtoR);
|
|
|
|
Vector2 limits(minRelativeHeadingToApply, maxRelativeHeadingToApply);
|
|
|
|
camInterface::GetGameplayDirector().SetScriptOverriddenFirstPersonAimCameraRelativeHeadingLimitsThisUpdate(limits);
|
|
}
|
|
|
|
void CommandSetGameFirstPersonAimCamRelativePitchLimitsThisUpdate(float minRelativePitch, float maxRelativePitch)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
minRelativePitch = Clamp(minRelativePitch, -90.0f, 90.0f);
|
|
maxRelativePitch = Clamp(maxRelativePitch, -90.0f, 90.0f);
|
|
|
|
Vector2 limits(minRelativePitch, maxRelativePitch);
|
|
limits.Scale(DtoR);
|
|
|
|
camInterface::GetGameplayDirector().SetScriptOverriddenFirstPersonAimCameraRelativePitchLimitsThisUpdate(limits);
|
|
}
|
|
|
|
void CommandSetAllowCustomVehicleDriveByCamThisUpdate(bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetShouldAllowCustomVehicleDriveByCamerasThisUpdate(state);
|
|
}
|
|
|
|
void CommandForceTightSpaceCustomFramingThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
cameraDebugf3("Script is forcing the tight space custom framing this update");
|
|
camInterface::GetGameplayDirector().ScriptForceUseTightSpaceCustomFramingThisUpdate();
|
|
}
|
|
|
|
bool CommandIsSphereVisible( const scrVector &scrVecCoors, float radius)
|
|
{
|
|
Vector3 vCoors (scrVecCoors);
|
|
|
|
return camInterface::IsSphereVisibleInGameViewport(vCoors, radius);
|
|
}
|
|
|
|
void CommandShakeGameplayCam(const char* ShakeName, float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().Shake(ShakeName, fAmplitudeScalar);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeName(ShakeName);
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
|
|
bool CommandIsGameplayCamShaking()
|
|
{
|
|
bool isShaking = camInterface::GetGameplayDirector().IsShaking();
|
|
return isShaking;
|
|
}
|
|
|
|
void CommandSetGameplayCamShakeAmplitude(float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetShakeAmplitude(fAmplitudeScalar);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
|
|
void CommandStopGameplayCamShaking(bool shouldStopImmediately)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().StopShaking(shouldStopImmediately);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptDisabledShake();
|
|
#endif // __BANK
|
|
}
|
|
|
|
void CommandBypassCutsceneCamRenderingThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCutsceneDirector().BypassRenderingThisUpdate();
|
|
}
|
|
|
|
void CommandShakeCutsceneCam(const char* ShakeName, float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCutsceneDirector().Shake(ShakeName, fAmplitudeScalar);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeName(ShakeName);
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
|
|
bool CommandIsCutsceneCamShaking()
|
|
{
|
|
bool isShaking = camInterface::GetCutsceneDirector().IsShaking();
|
|
return isShaking;
|
|
}
|
|
|
|
void CommandSetCutsceneCamShakeAmplitude(float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCutsceneDirector().SetShakeAmplitude(fAmplitudeScalar);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
|
|
void CommandStopCutsceneCamShaking(bool shouldStopImmediately)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCutsceneDirector().StopShaking(shouldStopImmediately);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptDisabledShake();
|
|
#endif // __BANK
|
|
}
|
|
|
|
void CommandSetCutsceneCamFarClipThisUpdate(float farClip)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
//NOTE: This functionality is multiplayer-only, as the single player game is now locked.
|
|
if(NetworkInterface::IsGameInProgress())
|
|
{
|
|
camInterface::GetCutsceneDirector().OverrideFarClipThisUpdate(farClip);
|
|
}
|
|
}
|
|
|
|
void CommandSetGameplayCamFollowPedThisUpdate(int pedIndex)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
const CPed* ped = CTheScripts::GetEntityToQueryFromGUID<CPed>(pedIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
cameraDebugf2("SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE: pedIndex %d pedName %s pedPosition <%.3f,%.3f,%.3f>", pedIndex, ped? ped->GetModelName() : "INVALID PED", ped ? VEC3V_ARGS(ped->GetMatrix().d()) : VEC3V_ARGS(Vec3V(V_ZERO)));
|
|
if(ped)
|
|
{
|
|
camInterface::SetScriptControlledFollowPedThisUpdate(ped);
|
|
}
|
|
}
|
|
|
|
bool CommandIsGameplayCamRendering()
|
|
{
|
|
const camGameplayDirector& gameplayDirector = camInterface::GetGameplayDirector();
|
|
const bool isRendering = camInterface::IsDominantRenderedDirector(gameplayDirector);
|
|
|
|
return isRendering;
|
|
}
|
|
|
|
//Cinematic
|
|
void CommandSetCinematicButtonActive(bool bActive)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().SetCinematicButtonDisabledByScriptState(!bActive);
|
|
}
|
|
|
|
bool CommandIsCinematicCamRendering()
|
|
{
|
|
const camCinematicDirector& cinematicDirector = camInterface::GetCinematicDirector();
|
|
const bool isRendering = camInterface::IsDominantRenderedDirector(cinematicDirector);
|
|
|
|
return isRendering;
|
|
}
|
|
|
|
void CommandShakeCinematicCam(const char* ShakeName, float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().Shake(ShakeName, fAmplitudeScalar);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeName(ShakeName);
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
|
|
bool CommandIsCinematicCamShaking()
|
|
{
|
|
bool isShaking = camInterface::GetCinematicDirector().IsShaking();
|
|
return isShaking;
|
|
}
|
|
|
|
void CommandSetCinematicCamShakeAmplitude(float fAmplitudeScalar)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().SetShakeAmplitude(fAmplitudeScalar);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptEnabledShakeAmplitude(fAmplitudeScalar);
|
|
#endif // __BANK
|
|
}
|
|
|
|
void CommandStopCinematicCamShaking(bool shouldStopImmediately)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().StopShaking(shouldStopImmediately);
|
|
#if __BANK
|
|
camInterface::GetScriptDirector().DebugSetScriptDisabledShake();
|
|
#endif // __BANK
|
|
}
|
|
|
|
void CommandDisableCinematicBonnetCameraThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().DisableFirstPersonInVehicleThisUpdate();
|
|
}
|
|
|
|
void CommandDisableCinematicVehicleIdleModeThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().DisableVehicleIdleModeThisUpdate();
|
|
}
|
|
|
|
void CommandInvalidateCinematicVehicleIdleMode()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().InvalidateCinematicVehicleIdleMode();
|
|
}
|
|
|
|
bool CommandIsCinematicIdleCamRendering()
|
|
{
|
|
return camInterface::GetCinematicDirector().IsRenderingCinematicIdleCamera();
|
|
}
|
|
|
|
void CommandDisableCinematicSlowModeThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().DisableCinematicSlowMoThisUpdate();
|
|
}
|
|
|
|
bool CommandIsBonnetCinematicCamRendering()
|
|
{
|
|
// Note: this also returns true for point of view cinematic mounted cameras.
|
|
return camInterface::GetCinematicDirector().IsRenderingCinematicMountedCamera();
|
|
}
|
|
|
|
bool CommandIsCinematicCamInputActive()
|
|
{
|
|
return camInterface::GetCinematicDirector().IsCinematicInputActive();
|
|
}
|
|
|
|
bool CommandIsCinematicFirstPersonVehicleInteriorCamRendering()
|
|
{
|
|
return camInterface::GetCinematicDirector().IsRenderingCinematicPointOfViewCamera();
|
|
}
|
|
|
|
void CommandInvalidateIdleCam()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().InvalidateIdleCamera();
|
|
}
|
|
|
|
void CommandCreateCinematicShot(int ShotRef, int Duration, int AttachEntityIndex, int LookAtEntityIndex)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camCinematicDirector& cinematicDirector = camInterface::GetCinematicDirector();
|
|
camBaseCinematicContext* pContext = cinematicDirector.FindContext(camCinematicScriptContext::GetStaticClassId());
|
|
|
|
if(pContext)
|
|
{
|
|
camCinematicScriptContext* pScriptContext = static_cast<camCinematicScriptContext*>(pContext);
|
|
scrThreadId scriptThreadId = CTheScripts::GetCurrentGtaScriptThread()->GetThreadId();
|
|
|
|
const CEntity* pAttachEntity = NULL;
|
|
const CEntity* pLookAtEntity = NULL;
|
|
|
|
if(AttachEntityIndex != NULL_IN_SCRIPTING_LANGUAGE)
|
|
{
|
|
pAttachEntity = CTheScripts::GetEntityToQueryFromGUID<CEntity>(AttachEntityIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
|
|
if(!scriptVerifyf(pAttachEntity, "COMMAND_CREATE_CINEMATIC_SHOT: Attach entity is null %s", CTheScripts::GetCurrentScriptNameAndProgramCounter()))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(LookAtEntityIndex != NULL_IN_SCRIPTING_LANGUAGE)
|
|
{
|
|
pLookAtEntity = CTheScripts::GetEntityToQueryFromGUID<CEntity>(LookAtEntityIndex, CTheScripts::GUID_ASSERT_FLAGS_NO_DEAD_CHECK);
|
|
|
|
if(!scriptVerifyf(pLookAtEntity, "COMMAND_CREATE_CINEMATIC_SHOT: Look at entity is null %s", CTheScripts::GetCurrentScriptNameAndProgramCounter()))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(!pScriptContext->CreateScriptCinematicShot((u32)ShotRef, Duration, scriptThreadId, pAttachEntity, pLookAtEntity))
|
|
{
|
|
scriptAssertf( 0, "CREATE_CINEMATIC_SHOT: %s: Failed to create a cinematic shot: %d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), ShotRef);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
bool CommandIsCinematicShotActive(int ShotRef)
|
|
{
|
|
camCinematicDirector& cinematicDirector = camInterface::GetCinematicDirector();
|
|
camBaseCinematicContext* pContext = cinematicDirector.FindContext(camCinematicScriptContext::GetStaticClassId());
|
|
|
|
bool IsActive = false;
|
|
|
|
if(pContext->IsValid())
|
|
{
|
|
camCinematicScriptContext* pScriptContext = static_cast<camCinematicScriptContext*>(pContext);
|
|
|
|
if(pScriptContext)
|
|
{
|
|
IsActive = pScriptContext->IsScriptCinematicShotActive((u32)ShotRef);
|
|
}
|
|
}
|
|
return IsActive;
|
|
}
|
|
|
|
void CommandStopCinematicShot(int ShotRef)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camCinematicDirector& cinematicDirector = camInterface::GetCinematicDirector();
|
|
camBaseCinematicContext* pContext = cinematicDirector.FindContext(camCinematicScriptContext::GetStaticClassId());
|
|
|
|
if(pContext->IsValid())
|
|
{
|
|
camCinematicScriptContext* pScriptContext = static_cast<camCinematicScriptContext*>(pContext);
|
|
|
|
if(pScriptContext)
|
|
{
|
|
scrThreadId scriptThreadId = CTheScripts::GetCurrentGtaScriptThread()->GetThreadId();
|
|
if(!pScriptContext->DeleteCinematicShot((u32)ShotRef, scriptThreadId))
|
|
{
|
|
scriptAssertf(0,"STOP_CINEMATIC_SHOT: %s: Failed to delete cinematic shot %d", CTheScripts::GetCurrentScriptNameAndProgramCounter(), ShotRef );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bool CommandIsCinematicShotRendering(int ShotRef)
|
|
{
|
|
camCinematicDirector& cinematicDirector = camInterface::GetCinematicDirector();
|
|
camBaseCinematicContext* pContext = cinematicDirector.FindContext(camCinematicScriptContext::GetStaticClassId());
|
|
|
|
bool IsRendering = false;
|
|
|
|
if(pContext)
|
|
{
|
|
const camCinematicScriptContext* pScriptContext = static_cast<camCinematicScriptContext*>(pContext);
|
|
|
|
if(pScriptContext->IsValid())
|
|
{
|
|
const camBaseCinematicShot* pShot = static_cast<const camBaseCinematicShot*>(pScriptContext->GetCurrentShot());
|
|
|
|
if(pShot && pShot->GetNameHash () == (u32)ShotRef)
|
|
{
|
|
const camBaseCamera* renderedCamera = camInterface::GetDominantRenderedCamera();
|
|
if(renderedCamera && pContext->GetCurrentShotsCamera() && renderedCamera == pContext->GetCurrentShotsCamera())
|
|
{
|
|
IsRendering = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return IsRendering;
|
|
}
|
|
|
|
void CommandScriptForceCinematicRenderingThisUpdate(bool OverrideCinematicInput)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().SetScriptOverridesCinematicInputThisFrame(OverrideCinematicInput);
|
|
}
|
|
|
|
void CommandSetCinematicNewsChannelActiveThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().SetCanActivateNewsChannelContext(true);
|
|
}
|
|
|
|
void CommandCinematicMissionCreatorFailContextActiveThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().SetCanActivateMissionCreatorFailContext(true);
|
|
}
|
|
|
|
void CommandSetCinematicModeActive(bool Active)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().SetCinematicLatchedStateForScript(Active);
|
|
}
|
|
|
|
bool CommandRegisterRaceCheckPoint(const scrVector &scrVecCoors)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 vCoors (scrVecCoors);
|
|
|
|
camCinematicDirector& cinematicDirector = camInterface::GetCinematicDirector();
|
|
camBaseCinematicContext* pContext = cinematicDirector.FindContext(camCinematicScriptedRaceCheckPointContext::GetStaticClassId());
|
|
|
|
if(pContext)
|
|
{
|
|
camCinematicScriptedRaceCheckPointContext* pScriptContext = static_cast<camCinematicScriptedRaceCheckPointContext*>(pContext);
|
|
|
|
if(pScriptContext)
|
|
{
|
|
return pScriptContext->RegisterPosition(vCoors);
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool CommandIsInVehicleMobilePhoneCameraRendering()
|
|
{
|
|
bool IsRendering = false;
|
|
|
|
const camBaseCamera* renderedCamera = camInterface::GetDominantRenderedCamera();
|
|
|
|
camCinematicDirector& cinematicDirector = camInterface::GetCinematicDirector();
|
|
|
|
//First check the custom first-person context that is conventionally used for the mobile phone camera in a vehicle.
|
|
camBaseCinematicContext* pContext = cinematicDirector.FindContext(camCinematicInVehicleOverriddenFirstPersonContext::GetStaticClassId());
|
|
if(pContext)
|
|
{
|
|
const camCinematicInVehicleOverriddenFirstPersonContext* pFirstPersonContext = static_cast<const camCinematicInVehicleOverriddenFirstPersonContext*>(pContext);
|
|
|
|
if(pFirstPersonContext)
|
|
{
|
|
if(pFirstPersonContext->IsValid())
|
|
{
|
|
const camBaseCinematicShot* pShot = static_cast<const camBaseCinematicShot*>(pFirstPersonContext->GetCurrentShot());
|
|
|
|
if(pShot)
|
|
{
|
|
if(renderedCamera && pContext->GetCurrentShotsCamera() && renderedCamera == pContext->GetCurrentShotsCamera())
|
|
{
|
|
IsRendering = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!IsRendering)
|
|
{
|
|
//Otherwise, check the context that is used to render a first-person POV shot for passengers in certain vehicles within Multiplayer.
|
|
pContext = cinematicDirector.FindContext(camCinematicInVehicleMultiplayerPassengerContext::GetStaticClassId());
|
|
if(pContext)
|
|
{
|
|
const camCinematicInVehicleMultiplayerPassengerContext* pMultiplayerPassengerContext = static_cast<const camCinematicInVehicleMultiplayerPassengerContext*>(pContext);
|
|
|
|
if(pMultiplayerPassengerContext)
|
|
{
|
|
if(pMultiplayerPassengerContext->IsValid())
|
|
{
|
|
const camBaseCinematicShot* pShot = static_cast<const camBaseCinematicShot*>(pMultiplayerPassengerContext->GetCurrentShot());
|
|
|
|
if(pShot)
|
|
{
|
|
if(renderedCamera && pContext->GetCurrentShotsCamera() && renderedCamera == pContext->GetCurrentShotsCamera())
|
|
{
|
|
IsRendering = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return IsRendering;
|
|
}
|
|
|
|
void CommandIgnoreMenuPreferenceForBonnetCameraThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetCinematicDirector().IgnoreMenuPreferenceForBonnetCameraThisUpdate();
|
|
}
|
|
|
|
//Hint
|
|
//legacy
|
|
|
|
void CommandSetGameplayHintRelativePitch(float UNUSED_PARAM(relativePitch), float UNUSED_PARAM(smoothRate))
|
|
{
|
|
//camInterface::GetGameplayDirector().GetHintHelper().SetDesiredRelativePitch(relativePitch * DtoR, smoothRate);
|
|
}
|
|
|
|
void CommandSetGameplayHintFov(float fFov)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if(fFov >= g_MinFov && fFov <= g_MaxFov)
|
|
{
|
|
camInterface::GetGameplayDirector().SetScriptHintFov(fFov);
|
|
}
|
|
}
|
|
|
|
void CommandSetGameplayHintFollowDistanceScalar(float Distance)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetScriptHintDistanceScalar(Distance);
|
|
}
|
|
|
|
void CommandSetGameplayHintBaseOrbitPitchOffset(float fOffset)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetScriptHintBaseOrbitPitchOffset(fOffset);
|
|
}
|
|
|
|
void CommandSetGameplayHintCameraRelativeSideOffsetAdditive(float fOffset)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetScriptHintCameraRelativeSideOffsetAdditive(fOffset);
|
|
}
|
|
|
|
void CommandSetGameplayHintCameraRelativeVerticalOffsetAdditive(float fOffset)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetScriptHintCameraRelativeVerticalOffsetAdditive(fOffset);
|
|
}
|
|
|
|
void CommandSetGameplayHintCameraBlendToFollowPedMediumViewMode(bool state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetScriptHintCameraBlendToFollowPedMediumViewMode(state);
|
|
}
|
|
|
|
void CommandSetGameplayCoordHint(const scrVector &scrVecCoors,int dwellDuration, int interpolateInDuration, int interpolateOutDuration, int HintType)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 vCoors (scrVecCoors);
|
|
|
|
camInterface::GetGameplayDirector().StartHinting(vCoors, interpolateInDuration, dwellDuration, interpolateOutDuration, HintType);
|
|
|
|
}
|
|
|
|
void CommandSetGameplayEntityHint(int EntityIndex, const scrVector &scrOffset, bool bRelativeOffset, int dwellDuration, int interpolateInDuration, int interpolateOutDuration, int HintType)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 OffsetCoords (scrOffset);
|
|
|
|
CEntity* pEntity = CTheScripts::GetEntityToModifyFromGUID<CEntity>(EntityIndex, CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
|
|
|
|
if (pEntity)
|
|
{
|
|
camInterface::GetGameplayDirector().StartHinting(pEntity, OffsetCoords , bRelativeOffset , interpolateInDuration, dwellDuration, interpolateOutDuration, HintType);
|
|
}
|
|
}
|
|
|
|
bool CommandIsGameplayHintActive()
|
|
{
|
|
if (!camInterface::GetGameplayDirector().IsCodeHintActive() && camInterface::GetGameplayDirector().IsHintActive())
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool CommandIsCodeGameplayHintActive()
|
|
{
|
|
return camInterface::GetGameplayDirector().IsCodeHintActive();
|
|
}
|
|
|
|
void CommandStopGameplayHint(bool bStopImmediately)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if(!camInterface::GetGameplayDirector().IsCodeHintActive() BANK_ONLY(&& !camInterface::GetGameplayDirector().IsDebugHintActive()))
|
|
{
|
|
camInterface::GetGameplayDirector().StopHinting(bStopImmediately);
|
|
}
|
|
}
|
|
|
|
void CommandStopCodeGamePlayHint(bool bStopImmediately)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if(camInterface::GetGameplayDirector().IsCodeHintActive())
|
|
{
|
|
camInterface::GetGameplayDirector().StopHinting(bStopImmediately);
|
|
}
|
|
}
|
|
|
|
void CommandStopGameplayHintBeingCancelledUsingRightStick(bool UNUSED_PARAM(bCanCancel))
|
|
{
|
|
//Deprecated.
|
|
//camInterface::GetGameplayDirector().SetStopHintBeingCancelled(bCanCancel);
|
|
}
|
|
|
|
void CommmandBlockCodeHintThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().BlockCodeHintThisUpdate();
|
|
}
|
|
|
|
//Cached frame
|
|
scrVector CommandGetRenderedCamCoord()
|
|
{
|
|
return camInterface::GetPos();
|
|
}
|
|
|
|
scrVector CommandGetRenderedCamRot (int RotOrder)
|
|
{
|
|
Vector3 vRot(VEC3_ZERO);
|
|
|
|
const Matrix34& worldMatrix = camInterface::GetMat();
|
|
vRot = CScriptEulers::MatrixToEulers(worldMatrix, static_cast<EulerAngleOrder>(RotOrder));
|
|
vRot *= RtoD;
|
|
|
|
return vRot;
|
|
}
|
|
|
|
scrVector CommandGetRenderedRemotePlayerCamRot(int PlayerIndex, int RotOrder)
|
|
{
|
|
Vector3 vRot(VEC3_ZERO);
|
|
|
|
CPed *pPlayerPed = CTheScripts::FindNetworkPlayerPed(PlayerIndex);
|
|
|
|
if(pPlayerPed)
|
|
{
|
|
SCRIPT_ASSERT(!pPlayerPed->IsLocalPlayer(), "GET_FINAL_RENDERED_REMOTE_PLAYER_CAM_ROT - Can't call this on the local player!");
|
|
|
|
if(!pPlayerPed->IsLocalPlayer())
|
|
{
|
|
Matrix34 worldMatrix;
|
|
NetworkInterface::GetRemotePlayerCameraMatrix(pPlayerPed, worldMatrix);
|
|
|
|
vRot = CScriptEulers::MatrixToEulers(worldMatrix, static_cast<EulerAngleOrder>(RotOrder));
|
|
vRot *= RtoD;
|
|
}
|
|
}
|
|
|
|
return vRot;
|
|
}
|
|
|
|
float CommandGetRenderedCamFov()
|
|
{
|
|
return camInterface::GetFov();
|
|
}
|
|
|
|
float CommandGetRenderedRemotePlayerCamFov(int PlayerIndex)
|
|
{
|
|
CPed *pPlayerPed = CTheScripts::FindNetworkPlayerPed(PlayerIndex);
|
|
|
|
if(pPlayerPed)
|
|
{
|
|
SCRIPT_ASSERT(!pPlayerPed->IsLocalPlayer(), "GET_FINAL_RENDERED_REMOTE_PLAYER_CAM_FOV - Can't call this on the local player!");
|
|
|
|
if(!pPlayerPed->IsLocalPlayer())
|
|
{
|
|
return NetworkInterface::GetRemotePlayerCameraFov(pPlayerPed);
|
|
}
|
|
}
|
|
|
|
return g_DefaultFov;
|
|
}
|
|
|
|
float CommandGetRenderedCamNearClip()
|
|
{
|
|
return camInterface::GetNear();
|
|
}
|
|
|
|
float CommandGetRenderedCamFarClip()
|
|
{
|
|
return camInterface::GetFar();
|
|
}
|
|
|
|
float CommandGetRenderedCamNearDof()
|
|
{
|
|
return camInterface::GetNearDof();
|
|
}
|
|
|
|
float CommandGetRenderedCamFarDof()
|
|
{
|
|
return camInterface::GetFarDof();
|
|
}
|
|
|
|
float CommandGetRenderedCamMotionBlurStrength()
|
|
{
|
|
return camInterface::GetMotionBlurStrength();
|
|
}
|
|
|
|
void CommandUseScriptCamForAmbientPopulationOriginThisFrame(bool bVehicles, bool bPeds)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if(camInterface::GetScriptDirector().IsRendering())
|
|
{
|
|
if(bVehicles)
|
|
CVehiclePopulation::SetScriptCamPopulationOriginOverride();
|
|
|
|
if(bPeds)
|
|
CPedPopulation::SetScriptCamPopulationOriginOverride();
|
|
}
|
|
}
|
|
|
|
void CommandSetFollowPedCamLadderAlignThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camFollowPedCamera* followPedCamera = camInterface::GetGameplayDirector().GetFollowPedCamera();
|
|
if(followPedCamera)
|
|
{
|
|
followPedCamera->SetScriptForceLadder(true);
|
|
}
|
|
}
|
|
|
|
void CommandSetThirdPersonOrbitDistanceThisUpdate(float minDistance, float maxDistance)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector2 limits(minDistance, maxDistance);
|
|
camInterface::GetGameplayDirector().SetScriptOverriddenThirdPersonCameraOrbitDistanceLimitsThisUpdate(limits);
|
|
}
|
|
|
|
void CommandSetThirdPersonRelativePitchThisUpdate(float minRelativePitch, float maxRelativePitch)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
minRelativePitch = Clamp(minRelativePitch, -90.0f, 90.0f);
|
|
maxRelativePitch = Clamp(maxRelativePitch, -90.0f, 90.0f);
|
|
|
|
Vector2 limits(minRelativePitch, maxRelativePitch);
|
|
limits.Scale(DtoR);
|
|
|
|
camInterface::GetGameplayDirector().SetScriptOverriddenThirdPersonCameraRelativePitchLimitsThisUpdate(limits);
|
|
}
|
|
|
|
void CommandSetThirdPersonRelativeHeadingThisUpdate(float minRelativeHeading, float maxRelativeHeading)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
minRelativeHeading = Clamp(minRelativeHeading, -180.0f, 180.0f);
|
|
maxRelativeHeading = Clamp(maxRelativeHeading, -180.0f, 180.0f);
|
|
|
|
Vector2 limits(minRelativeHeading, maxRelativeHeading);
|
|
limits.Scale(DtoR);
|
|
|
|
camInterface::GetGameplayDirector().SetScriptOverriddenThirdPersonCameraRelativeHeadingLimitsThisUpdate(limits);
|
|
}
|
|
|
|
void CommandSetInVehicleCameraStateThisUpdate(int VehicleIndex, int CamInVehicleState )
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if(CamInVehicleState != camGameplayDirector::OUTSIDE_VEHICLE)
|
|
{
|
|
CVehicle* pVehicle = CTheScripts::GetEntityToModifyFromGUID<CVehicle>(VehicleIndex, CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
|
|
|
|
if(pVehicle)
|
|
{
|
|
camInterface::GetGameplayDirector().SetScriptOverriddenVehicleExitEntryState(pVehicle, CamInVehicleState);
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
camInterface::GetGameplayDirector().SetScriptOverriddenVehicleExitEntryState(NULL, CamInVehicleState);
|
|
}
|
|
}
|
|
|
|
void CommandDisableOnFootFirstPersonViewThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
FPS_MODE_SUPPORTED_ONLY( camInterface::GetGameplayDirector().DisableFirstPersonThisUpdate(NULL, true); )
|
|
}
|
|
|
|
void CommandDisableFirstPersonFlashEffectThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
FPS_MODE_SUPPORTED_ONLY( camManager::SuppressFirstPersonFlashEffectsThisFrame(true); )
|
|
}
|
|
|
|
void CommandForceThirdPersonAferAimingBlendThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().ForceAfterAimingBlendThisUpdate();
|
|
}
|
|
|
|
void CommandDisableThirdPersonAferAimingBlendThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().DisableAfterAimingBlendThisUpdate();
|
|
}
|
|
|
|
void CommandBlockFirstPersonOrientationResetThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camFirstPersonShooterCamera* firstPersonShooterCamera = camInterface::GetGameplayDirector().GetFirstPersonShooterCamera();
|
|
if(firstPersonShooterCamera)
|
|
{
|
|
firstPersonShooterCamera->SetScriptPreventingOrientationResetWhenRenderingAnotherCamera();
|
|
}
|
|
}
|
|
|
|
//to be removed
|
|
void CommandSetGameplayPedHint( int PedIndex, const scrVector &scrOffset, bool bRelativeOffset, int dwellDuration, int interpolateInDuration, int interpolateOutDuration )
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 vOffset (scrOffset);
|
|
CPed* pPed = CTheScripts::GetEntityToModifyFromGUID<CPed>(PedIndex, CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
|
|
|
|
if (pPed)
|
|
{
|
|
camInterface::GetGameplayDirector().StartHinting(pPed, vOffset , bRelativeOffset , interpolateInDuration, dwellDuration, interpolateOutDuration, 0);
|
|
}
|
|
}
|
|
//to be removed
|
|
void CommandSetGameplayVehicleHint(int VehicleIndex, const scrVector &scrOffset, bool bRelativeOffset, int dwellDuration, int interpolateInDuration, int interpolateOutDuration )
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 vOffset (scrOffset);
|
|
CVehicle* pVehicle = CTheScripts::GetEntityToModifyFromGUID<CVehicle>(VehicleIndex, CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
|
|
|
|
if (pVehicle)
|
|
{
|
|
camInterface::GetGameplayDirector().StartHinting(pVehicle, vOffset , bRelativeOffset , interpolateInDuration, dwellDuration, interpolateOutDuration, 0);
|
|
}
|
|
}
|
|
//to be removed
|
|
void CommandSetGameplayObjectHint(int ObjectIndex , const scrVector &scrOffset, bool bRelativeOffset, int dwellDuration, int interpolateInDuration, int interpolateOutDuration)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
Vector3 vOffset (scrOffset);
|
|
CObject* pObject = CTheScripts::GetEntityToModifyFromGUID<CObject>(ObjectIndex, CTheScripts::GUID_ASSERT_FLAGS_INCLUDE_CLONES);
|
|
|
|
if (pObject)
|
|
{
|
|
camInterface::GetGameplayDirector().StartHinting(pObject, vOffset , bRelativeOffset , interpolateInDuration, dwellDuration, interpolateOutDuration, 0);
|
|
}
|
|
}
|
|
|
|
int CommandGetFocusPedOnScreen(float maxValidDistance, int screenPositionTestBoneTag, float maxScreenWidthRatioAroundCentreForTestBone, float maxScreenHeightRatioAroundCentreForTestBone, float minRelativeHeadingScore, float maxScreenCentreScoreBoost, float maxScreenRatioAroundCentreForScoreBoost, int losTestBoneTag1, int losTestBoneTag2)
|
|
{
|
|
CPed* focusPed = camInterface::ComputeFocusPedOnScreen(maxValidDistance, screenPositionTestBoneTag,
|
|
maxScreenWidthRatioAroundCentreForTestBone, maxScreenHeightRatioAroundCentreForTestBone, minRelativeHeadingScore,
|
|
maxScreenCentreScoreBoost, maxScreenRatioAroundCentreForScoreBoost, losTestBoneTag1, losTestBoneTag2);
|
|
int focusPedIndex = focusPed ? CTheScripts::GetGUIDFromEntity(*focusPed) : 0;
|
|
|
|
return focusPedIndex;
|
|
}
|
|
|
|
void CommandDisableNearClipScanThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::DisableNearClipScanThisUpdate();
|
|
}
|
|
|
|
void CommandSetCamDeathFailEffectState(s32 state)
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::SetDeathFailEffectState(state);
|
|
}
|
|
|
|
void CommandStartCameraCapture(int BANK_ONLY(cameraIndex), const char* BANK_ONLY(animName))
|
|
{
|
|
#if __BANK
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camBaseCamera* pCamera = GetCameraFromIndex(cameraIndex, "START_CAMERA_CAPTURE");
|
|
if (pCamera)
|
|
{
|
|
camBaseCamera::Pool *pBaseCameraPool = camBaseCamera::GetPool();
|
|
if(SCRIPT_VERIFY(pBaseCameraPool, "START_CAMERA_CAPTURE - Could not get specified camera!"))
|
|
{
|
|
for(int i = 0; i < pBaseCameraPool->GetSize(); i ++)
|
|
{
|
|
if(pCamera == pBaseCameraPool->GetSlot(i))
|
|
{
|
|
cameraIndex = i;
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(SCRIPT_VERIFY(pCamera == pBaseCameraPool->GetSlot(cameraIndex), "START_CAMERA_CAPTURE"))
|
|
{
|
|
if (SCRIPT_VERIFY(animName && strlen(animName) > 0, "START_CAMERA_CAPTURE - No anim name was specified!"))
|
|
{
|
|
if (SCRIPT_VERIFY(!CAnimViewer::m_bCameraCapture_Started, "START_CAMERA_CAPTURE - Camera capture is already running!"))
|
|
{
|
|
CAnimViewer::CameraCapture_Start(cameraIndex, animName);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void CommandStopCameraCapture()
|
|
{
|
|
#if __BANK
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
if (SCRIPT_VERIFY(CAnimViewer::m_bCameraCapture_Started, "STOP_CAMERA_CAPTURE - Camera capture has not been started!"))
|
|
{
|
|
CAnimViewer::CameraCapture_Stop();
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void CommandSetFirstPersonFlashEffectType(s32 type)
|
|
{
|
|
#if FPS_MODE_SUPPORTED
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetScriptDirector().SetFirstPersonFlashEffectType((u32)type);
|
|
#endif //FPS_MODE_SUPPORTED
|
|
}
|
|
|
|
void CommandSetFirstPersonFlashEffectVehicleModelName(const char * pName)
|
|
{
|
|
#if FPS_MODE_SUPPORTED
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetScriptDirector().SetFirstPersonFlashEffectVehicleModelHash(atStringHash(pName));
|
|
#endif //FPS_MODE_SUPPORTED
|
|
}
|
|
|
|
void CommandSetFirstPersonFlashEffectVehicleModelHash(int modelHash)
|
|
{
|
|
#if FPS_MODE_SUPPORTED
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetScriptDirector().SetFirstPersonFlashEffectVehicleModelHash((u32)modelHash);
|
|
#endif //FPS_MODE_SUPPORTED
|
|
}
|
|
|
|
bool CommandIsAllowedIndependentCameraModes()
|
|
{
|
|
#if FPS_MODE_SUPPORTED
|
|
const bool bAllowIndependentViewModes = (CPauseMenu::GetMenuPreference( PREF_FPS_PERSISTANT_VIEW ) == TRUE);
|
|
return bAllowIndependentViewModes;
|
|
#else
|
|
return true;
|
|
#endif
|
|
}
|
|
|
|
void CommandPreventCollisionSettingsForTripleHeadInInteriorsThisUpdate()
|
|
{
|
|
REGISTER_CAMERA_SCRIPT_COMMAND_NO_ARGS();
|
|
camInterface::GetGameplayDirector().SetScriptPreventCollisionSettingsForTripleHeadInInteriorsThisUpdate();
|
|
}
|
|
|
|
float CommandReplayGetMaxDistanceAllowedFromPlayer()
|
|
{
|
|
#if GTA_REPLAY
|
|
return camInterface::GetReplayDirector().GetMaxDistanceAllowedFromPlayer();
|
|
#else
|
|
return 0.0f;
|
|
#endif
|
|
}
|
|
|
|
//
|
|
// --------------------------------------------------------------------
|
|
//
|
|
void SetupScriptCommands()
|
|
{
|
|
//Render cams
|
|
SCR_REGISTER_SECURE(RENDER_SCRIPT_CAMS,0x850d4ef3d40fb068, CommandRenderScriptCams);
|
|
SCR_REGISTER_SECURE(STOP_RENDERING_SCRIPT_CAMS_USING_CATCH_UP,0xbaea2321313356d0, CommandStopRenderingScriptCamsUsingCatchUp);
|
|
|
|
//create/destroy
|
|
SCR_REGISTER_SECURE(CREATE_CAM,0xb93a4265cb0f5b1f, CommandCreateCam);
|
|
SCR_REGISTER_SECURE(CREATE_CAM_WITH_PARAMS,0x6729fa3af971be2a, CommandCreateCamWithParams);
|
|
SCR_REGISTER_SECURE(CREATE_CAMERA,0xae96f9aff21228dc, CommandCreateCameraFromHash);
|
|
SCR_REGISTER_SECURE(CREATE_CAMERA_WITH_PARAMS,0x1bcec0b1056bd6ac, CommandCreateCameraWithParams);
|
|
SCR_REGISTER_SECURE(DESTROY_CAM,0x588ddcb644c6486a, CommandDestroyCam);
|
|
SCR_REGISTER_SECURE(DESTROY_ALL_CAMS,0x4b248030f70a5d8b, CommandDestroyAllCams);
|
|
SCR_REGISTER_SECURE(DOES_CAM_EXIST,0x876b1078e90c91cb, CommandDoesCamExist);
|
|
//activate cam
|
|
SCR_REGISTER_SECURE(SET_CAM_ACTIVE,0xdd786b89b15aa63f, CommandSetCamActive);
|
|
SCR_REGISTER_SECURE(IS_CAM_ACTIVE,0xa24fda4986456697, CommandIsCamActive);
|
|
SCR_REGISTER_SECURE(IS_CAM_RENDERING,0x4b0b4e357722c507, CommandIsCamRendering);
|
|
SCR_REGISTER_SECURE(GET_RENDERING_CAM,0x0065a2cb8ececaf1, CommandGetRenderingCam);
|
|
//frame parameters
|
|
SCR_REGISTER_SECURE(GET_CAM_COORD,0x97a9bb81c66772b5, CommandGetCamCoord);
|
|
SCR_REGISTER_SECURE(GET_CAM_ROT,0xe42645792657f001, CommandGetCamRotation);
|
|
SCR_REGISTER_SECURE(GET_CAM_FOV,0x703cb0b4057dddf5, CommandGetCamFov);
|
|
SCR_REGISTER_SECURE(GET_CAM_NEAR_CLIP,0x998fe8dab2221f27, CommandGetCamNearClip);
|
|
SCR_REGISTER_SECURE(GET_CAM_FAR_CLIP,0x9953cc74efa4f571, CommandGetCamFarClip);
|
|
SCR_REGISTER_SECURE(GET_CAM_NEAR_DOF,0xc2612d223d915a1c, CommandGetCamNearDof);
|
|
SCR_REGISTER_SECURE(GET_CAM_FAR_DOF,0x1abe956c93973baa, CommandGetCamFarDof);
|
|
SCR_REGISTER_SECURE(GET_CAM_DOF_STRENGTH,0x06d153c0b99b6128, CommandGetCamDofStrength);
|
|
SCR_REGISTER_UNUSED(GET_CAM_DOF_PLANES,0xa914246d4f8a957c, CommandGetCamDofPlanes);
|
|
SCR_REGISTER_UNUSED(GET_CAM_USE_SHALLOW_DOF_MODE,0xd119f6b1fb0b65b6, CommandGetCamUseShallowDofMode);
|
|
SCR_REGISTER_UNUSED(GET_CAM_MOTION_BLUR_STRENGTH,0xf1ccbbc140a5d518, CommandGetCamMotionBlurStrength);
|
|
|
|
SCR_REGISTER_SECURE(SET_CAM_PARAMS,0x15f5db94f871e803, CommandSetCamParams);
|
|
|
|
SCR_REGISTER_SECURE(SET_CAM_COORD,0xdee4f5f0b93be664, CommandSetCamCoord);
|
|
SCR_REGISTER_SECURE(SET_CAM_ROT,0x93150d31ce38fe75, CommandSetCamRotation);
|
|
SCR_REGISTER_SECURE(SET_CAM_FOV,0x0a18c027350d3c19, CommandSetCamFov);
|
|
SCR_REGISTER_SECURE(SET_CAM_NEAR_CLIP,0x74789da66781db64, CommandSetCamNearClip);
|
|
SCR_REGISTER_SECURE(SET_CAM_FAR_CLIP,0xac79343a28cea8e0, CommandSetCamFarClip);
|
|
SCR_REGISTER_SECURE(FORCE_CAM_FAR_CLIP,0xd9b532b49a80dfe1, CommandForceCamFarClip);
|
|
SCR_REGISTER_SECURE(SET_CAM_MOTION_BLUR_STRENGTH,0x8e55b7fed2291f41, CommandSetCamMotionBlurStrength);
|
|
|
|
//depth of field
|
|
SCR_REGISTER_SECURE(SET_CAM_NEAR_DOF,0x1d809c24759a3fed, CommandSetCamNearDof);
|
|
SCR_REGISTER_SECURE(SET_CAM_FAR_DOF,0xe13ce1cd336ffac9, CommandSetCamFarDof);
|
|
SCR_REGISTER_SECURE(SET_CAM_DOF_STRENGTH,0xd6a650055b44902e, CommandSetCamDofStrength);
|
|
SCR_REGISTER_SECURE(SET_CAM_DOF_PLANES,0xe5744a8f282963ce, CommandSetCamDofPlanes);
|
|
SCR_REGISTER_SECURE(SET_CAM_USE_SHALLOW_DOF_MODE,0xcaadf41aa439a01f, CommandSetCamUseShallowDofMode);
|
|
SCR_REGISTER_SECURE(SET_USE_HI_DOF,0x44908cda9d1050c9, CommandUseHiDof);
|
|
SCR_REGISTER_SECURE(SET_USE_HI_DOF_ON_SYNCED_SCENE_THIS_UPDATE, 0x731a880555da3647, CommandUseHiDofOnSyncedSceneThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE,0x1bf7583954f8933d, CommandSetDofOverriddenFocusDistance);
|
|
SCR_REGISTER_SECURE(SET_CAM_DOF_OVERRIDDEN_FOCUS_DISTANCE_BLEND_LEVEL,0x718303d9313f7a97, CommandSetDofOverriddenFocusDistanceBlendLevel);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_FOCUS_DISTANCE_GRID_SCALING,0xe9ac8c191ff37e64, CommandSetDofFocusDistanceGridScaling);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_SUBJECT_MAGNIFICATION_POWER_FACTOR_NEAR_FAR,0x432e7a511de8170c, CommandSetDofSubjectMagnificationPowerFactorNearFar);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_MAX_PIXEL_DEPTH,0xe8cd4c1732381e72, CommandSetDofMaxPixelDepth);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_PIXEL_DEPTH_POWER_FACTOR,0xddbcf51529e88a3f, CommandSetDofPixelDepthPowerFactor);
|
|
SCR_REGISTER_SECURE(SET_CAM_DOF_FNUMBER_OF_LENS,0x5ac409e1be1df384, CommandSetDofFNumberOfLens);
|
|
SCR_REGISTER_SECURE(SET_CAM_DOF_FOCAL_LENGTH_MULTIPLIER,0xd3a34fb28d95d754, CommandSetDofFocalLengthMultiplier);
|
|
SCR_REGISTER_SECURE(SET_CAM_DOF_FOCUS_DISTANCE_BIAS,0x6610a3e15c9aba9b, CommandSetDofFocusDistanceBias);
|
|
SCR_REGISTER_SECURE(SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE,0xd4bc9962fda90b40, CommandSetDofMaxNearInFocusDistance);
|
|
SCR_REGISTER_SECURE(SET_CAM_DOF_MAX_NEAR_IN_FOCUS_DISTANCE_BLEND_LEVEL,0x6344c0c82c899078, CommandSetDofMaxNearInFocusDistanceBlendLevel);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_MAX_BLUR_RADIUS_AT_NEAR_IN_FOCUS_LIMIT,0xace748c80de5bf76, CommandSetDofMaxBlurRadiusAtNearInFocusLimit);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_FOCUS_DISTANCE_INCREASE_SPRING_CONSTANT,0xa91ec7a1aa4dbc17, CommandSetDofFocusDistanceIncreaseSpringConstant);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_FOCUS_DISTANCE_DECREASE_SPRING_CONSTANT,0x3ce8a2efc3febd6d, CommandSetDofFocusDistanceDecreaseSpringConstant);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_SHOULD_FOCUS_ON_LOOK_AT_TARGET,0xdc1142c71eefffd2, CommandSetDofShouldFocusOnLookAtTarget);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_SHOULD_FOCUS_ON_ATTACH_PARENT,0xf460dab6f0323c0a, CommandSetDofShouldFocusOnAttachParent);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_SHOULD_KEEP_LOOK_AT_TARGET_IN_FOCUS,0xfcc9acbd7bfa65a0, CommandSetDofShouldKeepLookAtTargetInFocus);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_SHOULD_KEEP_ATTACH_PARENT_IN_FOCUS,0x813b285667a55baf, CommandSetDofShouldKeepAttachParentInFocus);
|
|
SCR_REGISTER_UNUSED(SET_CAM_DOF_SHOULD_MEASURE_POST_ALPHA_PIXEL_DEPTH,0x0264fdab5f244cc5, CommandSetDofShouldMeasurePostAlphaPixelDepth);
|
|
|
|
//attach
|
|
SCR_REGISTER_SECURE(ATTACH_CAM_TO_ENTITY,0x3fb84450a94cb528, CommandAttachCamToEntity);
|
|
SCR_REGISTER_SECURE(ATTACH_CAM_TO_PED_BONE,0xb6b6ac43334c34a7, CommandAttachCamToPedBone);
|
|
SCR_REGISTER_SECURE(HARD_ATTACH_CAM_TO_PED_BONE,0x1cc06cd0e210ff39, CommandHardAttachCamToPedBone);
|
|
SCR_REGISTER_SECURE(HARD_ATTACH_CAM_TO_ENTITY,0x383a38da6b16db3a, CommandHardAttachCamToEntity);
|
|
SCR_REGISTER_SECURE(ATTACH_CAM_TO_VEHICLE_BONE,0xbe3ecd06b6bdf192, CommandAttachCamToVehicleBone);
|
|
SCR_REGISTER_SECURE(DETACH_CAM,0xdf900bcbc752c62a, CommandDetachCam);
|
|
//roll
|
|
SCR_REGISTER_UNUSED(SET_CAM_INHERIT_ROLL_OBJECT,0x465a41a2097c11f0, CommandSetCamInheritRollObject);
|
|
SCR_REGISTER_SECURE(SET_CAM_INHERIT_ROLL_VEHICLE,0x8fd169d152a83209, CommandSetCamInheritRollVehicle);
|
|
//point
|
|
SCR_REGISTER_SECURE(POINT_CAM_AT_COORD,0x46045ff49485808b, CommandPointCamAtCoord);
|
|
SCR_REGISTER_SECURE(POINT_CAM_AT_ENTITY,0x98a99a554b458431, CommandPointCamAtEntity);
|
|
SCR_REGISTER_SECURE(POINT_CAM_AT_PED_BONE,0x4940b67d34c2f6c1, CommandPointCamAtPedBone);
|
|
SCR_REGISTER_UNUSED(POINT_CAM_AT_CAM,0x3482608561b83d01, CommandPointCamAtCam);
|
|
SCR_REGISTER_SECURE(STOP_CAM_POINTING,0x45e6cc1354100c1b, CommandStopCamPointing);
|
|
//miscellaneous camera-specific commands
|
|
SCR_REGISTER_SECURE(SET_CAM_AFFECTS_AIMING,0x156db56766eded12, CommandSetCamAffectsAiming);
|
|
SCR_REGISTER_SECURE(SET_CAM_CONTROLS_MINI_MAP_HEADING,0x8d32379ec749b177, CommandSetCamControlsMiniMapHeading);
|
|
SCR_REGISTER_SECURE(SET_CAM_IS_INSIDE_VEHICLE,0x225b8233719be2b5, CommandSetCamIsInsideVehicle);
|
|
SCR_REGISTER_UNUSED(SET_CAM_CUSTOM_MAX_NEAR_CLIP,0x1df22d878d47fb84, CommandSetCustomMaxNearClip);
|
|
SCR_REGISTER_SECURE(ALLOW_MOTION_BLUR_DECAY,0x7bd08352b65a3135, CommandAllowMotionBlurDecay);
|
|
SCR_REGISTER_SECURE(SET_CAM_DEBUG_NAME,0x3e93523104b9387c, CommandSetCamDebugName);
|
|
//debug
|
|
SCR_REGISTER_SECURE(GET_DEBUG_CAM,0xbc265d4ea63ebdd3, CommandGetDebugCam);
|
|
SCR_REGISTER_UNUSED(SET_DEBUG_CAM_ACTIVE,0xd1614197be2ad548, CommandSetDebugCamActive);
|
|
//spline
|
|
SCR_REGISTER_SECURE(ADD_CAM_SPLINE_NODE,0x8be9d374da4bb99b, CommandAddCamSplineNode);
|
|
SCR_REGISTER_SECURE(ADD_CAM_SPLINE_NODE_USING_CAMERA_FRAME,0x396c6b684ead1b8f, CommandAddCamSplineNodeUsingCameraFrame);
|
|
SCR_REGISTER_SECURE(ADD_CAM_SPLINE_NODE_USING_CAMERA,0x6c12d23212020231, CommandAddCamSplineNodeUsingCamera);
|
|
SCR_REGISTER_SECURE(ADD_CAM_SPLINE_NODE_USING_GAMEPLAY_FRAME,0x5a43b6c214087091, CommandAddCamSplineNodeUsingGameplayFrame);
|
|
SCR_REGISTER_SECURE(SET_CAM_SPLINE_PHASE,0x59489d17dc49b7b3, CommandSetCamSplinePhase);
|
|
SCR_REGISTER_SECURE(GET_CAM_SPLINE_PHASE,0x3f65eb34e4c562f2, CommandGetCamSplinePhase);
|
|
SCR_REGISTER_SECURE(GET_CAM_SPLINE_NODE_PHASE,0xa55408dfc92148e7, CommandGetCamSplineNodePhase);
|
|
SCR_REGISTER_SECURE(SET_CAM_SPLINE_DURATION,0x4bcdeab65827c4e2, CommandSetCamSplineDuration);
|
|
SCR_REGISTER_SECURE(SET_CAM_SPLINE_SMOOTHING_STYLE,0xadb0920102000613, CommandSetCamSplineSmoothingStyle);
|
|
SCR_REGISTER_SECURE(GET_CAM_SPLINE_NODE_INDEX,0x0631106d8d29716a, CommandGetCamSplineNodeIndex);
|
|
SCR_REGISTER_SECURE(SET_CAM_SPLINE_NODE_EASE,0x4617238b97beacf4, CommandSetCamSplineNodeEase);
|
|
SCR_REGISTER_SECURE(SET_CAM_SPLINE_NODE_VELOCITY_SCALE,0xa1d493603e8d15b4, CommandSetCamSplineNodeVelocityScale);
|
|
SCR_REGISTER_SECURE(OVERRIDE_CAM_SPLINE_VELOCITY,0xa20e6cdd67dc817d, CommandOverrideCamSplineVelocity);
|
|
SCR_REGISTER_SECURE(OVERRIDE_CAM_SPLINE_MOTION_BLUR,0x3437c3a2be385970, CommandOverrideCamSplineMotionBlur);
|
|
SCR_REGISTER_SECURE(SET_CAM_SPLINE_NODE_EXTRA_FLAGS,0xcc1998034eecce71, CommandSetCamSplineNodeExtraFlags);
|
|
SCR_REGISTER_SECURE(IS_CAM_SPLINE_PAUSED,0xfb493c3d9e4e7ec9, CommandIsCamSplinePaused);
|
|
|
|
//interp
|
|
SCR_REGISTER_SECURE(SET_CAM_ACTIVE_WITH_INTERP,0x889b4f9d52e23dee, CommandSetCamActiveWithInterp);
|
|
SCR_REGISTER_SECURE(IS_CAM_INTERPOLATING,0x52522e25010580a1, CommandIsCamInterpolating);
|
|
//Shake
|
|
SCR_REGISTER_SECURE(SHAKE_CAM,0x9bae3263d9b1fcb9, CommandShakeCam);
|
|
SCR_REGISTER_SECURE(ANIMATED_SHAKE_CAM,0xbfd7467b93e06b26, CommandAnimatedShakeCam);
|
|
SCR_REGISTER_SECURE(IS_CAM_SHAKING,0x629b37af59212703, CommandIsCamShaking);
|
|
SCR_REGISTER_SECURE(SET_CAM_SHAKE_AMPLITUDE,0x1342e9e0cde9b323, CommandSetCamShakeAmplitude);
|
|
SCR_REGISTER_SECURE(STOP_CAM_SHAKING,0x80b66ef081475250, CommandStopCamShaking);
|
|
SCR_REGISTER_SECURE(SHAKE_SCRIPT_GLOBAL,0x7b6613dcaa2c2c29, CommandShakeScriptGlobal);
|
|
SCR_REGISTER_SECURE(ANIMATED_SHAKE_SCRIPT_GLOBAL,0x0d38c39fb4abd855, CommandAnimatedShakeScriptGlobal);
|
|
SCR_REGISTER_SECURE(IS_SCRIPT_GLOBAL_SHAKING,0xe9331aea6c1820c9, CommandIsScriptGlobalShaking);
|
|
SCR_REGISTER_UNUSED(SET_SCRIPT_GLOBAL_SHAKE_AMPLITUDE,0x7885a971a16a5e27, CommandSetScriptGlobalShakeAmplitude);
|
|
SCR_REGISTER_SECURE(STOP_SCRIPT_GLOBAL_SHAKING,0x8564f0807a5c1cd6, CommandStopScriptGlobalShaking);
|
|
SCR_REGISTER_SECURE(TRIGGER_VEHICLE_PART_BROKEN_CAMERA_SHAKE,0x6ffb2bece4cf4ed7, CommandTriggerVehiclePartBrokenCameraShake);
|
|
//Camera animation
|
|
SCR_REGISTER_SECURE(PLAY_CAM_ANIM,0x8b28384f571e6da9, CommandPlayCamAnim);
|
|
SCR_REGISTER_SECURE(IS_CAM_PLAYING_ANIM,0x4d85bfc31f7d8d41, CommandIsCamPlayingAnim);
|
|
SCR_REGISTER_SECURE(SET_CAM_ANIM_CURRENT_PHASE,0xa35860e818eac5b7, CommandSetCamAnimCurrentPhase);
|
|
SCR_REGISTER_SECURE(GET_CAM_ANIM_CURRENT_PHASE,0x7fdd65163647de8e, CommandGetCamAnimCurrentPhase);
|
|
SCR_REGISTER_SECURE(PLAY_SYNCHRONIZED_CAM_ANIM,0x7b8ce3a05613f41c, CommandPlaySynchronizedCamAnim);
|
|
//Scene Transition - deprecated!
|
|
SCR_REGISTER_UNUSED(START_CAM_TRANSITION,0x5e6e0f6b80397c1d, CommandStartSceneTransition);
|
|
SCR_REGISTER_UNUSED(IS_CAM_TRANSITIONING,0xe7ab8fa2bdb507c1, CommandIsCameraTransitioning);
|
|
SCR_REGISTER_UNUSED(GET_CAM_TRANSITION_PHASE,0xebea23a22c057b10, CommandGetCamTransitionPhase);
|
|
//Scripted fly camera
|
|
SCR_REGISTER_SECURE(SET_FLY_CAM_HORIZONTAL_RESPONSE,0xaea1bfac30053852, CommandSetFlyCamHorizontalResponse);
|
|
SCR_REGISTER_SECURE(SET_FLY_CAM_VERTICAL_RESPONSE,0xa2382ebb79e01e67, CommandSetFlyCamVerticalResponse);
|
|
SCR_REGISTER_SECURE(SET_FLY_CAM_MAX_HEIGHT,0x3099b89127273567, CommandSetFlyCamMaxHeight);
|
|
SCR_REGISTER_SECURE(SET_FLY_CAM_COORD_AND_CONSTRAIN,0x9eb45aa8353bd0b7, CommandSetFlyCamCoordAndConstrain);
|
|
SCR_REGISTER_SECURE(SET_FLY_CAM_VERTICAL_CONTROLS_THIS_UPDATE,0x1aadc2d44870c7d9, CommandSetFlyCamVerticalControlsThisUpdate);
|
|
SCR_REGISTER_SECURE(WAS_FLY_CAM_CONSTRAINED_ON_PREVIOUS_UDPATE,0x7f45f5de364061c3, CommandWasFlyCamConstrainedOnPreviousUpdate);
|
|
//Fade
|
|
SCR_REGISTER_SECURE(IS_SCREEN_FADED_OUT,0xa829c9a2767ac8ef, CommandIsScreenFadedOut);
|
|
SCR_REGISTER_SECURE(IS_SCREEN_FADED_IN,0xe9e8955a780dda01, CommandIsScreenFadedIn);
|
|
SCR_REGISTER_SECURE(IS_SCREEN_FADING_OUT,0xcb1ef1e7b77adf4c, CommandIsScreenFadingOut);
|
|
SCR_REGISTER_SECURE(IS_SCREEN_FADING_IN,0xecd40fef3cf43bdb, CommandIsScreenFadingIn);
|
|
SCR_REGISTER_SECURE(DO_SCREEN_FADE_IN,0x5a7acd1cdf509b0d, CommandDoScreenFadeIn);
|
|
SCR_REGISTER_SECURE(DO_SCREEN_FADE_OUT,0x859006db870314c5, CommandDoScreenFadeOut);
|
|
//Widescreen
|
|
SCR_REGISTER_SECURE(SET_WIDESCREEN_BORDERS,0x43f21fa00a1ce779, CommandSetWidescreenBorders);
|
|
SCR_REGISTER_SECURE(ARE_WIDESCREEN_BORDERS_ACTIVE,0xd0bf3d2e961ae546, CommandAreWidescreenBordersActive);
|
|
//Gameplay
|
|
SCR_REGISTER_SECURE(GET_GAMEPLAY_CAM_COORD,0xcb284f809b594322, CommandGetGameplayCamCoord);
|
|
SCR_REGISTER_SECURE(GET_GAMEPLAY_CAM_ROT,0x9c0ed16b4f524508, CommandGetGameplayCamRot);
|
|
SCR_REGISTER_SECURE(GET_GAMEPLAY_CAM_FOV,0x372e271fe8a97311, CommandGetGameplayCamFov);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_CAM_MOTION_BLUR_SCALING_THIS_UPDATE,0xe776d70a603c3c81, CommandSetGameplayCamMotionBlurScalingThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_CAM_MAX_MOTION_BLUR_STRENGTH_THIS_UPDATE,0x97e56574a6aa6c7d, CommandSetGameplayCamMaxMotionBlurStrengthThisUpdate);
|
|
SCR_REGISTER_SECURE(GET_GAMEPLAY_CAM_RELATIVE_HEADING,0x02ac46bf770385c4, CommandGetGameplayCamRelativeHeading);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_CAM_RELATIVE_HEADING,0x94953c3ff0664f66, CommandSetGameplayCamRelativeHeading);
|
|
SCR_REGISTER_SECURE(GET_GAMEPLAY_CAM_RELATIVE_PITCH,0xd5b0bdc980eeb92f, CommandGetGameplayCamRelativePitch);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_CAM_RELATIVE_PITCH,0x080c97b891e2f3aa, CommandSetGameplayCamRelativePitch);
|
|
SCR_REGISTER_SECURE(RESET_GAMEPLAY_CAM_FULL_ATTACH_PARENT_TRANSFORM_TIMER, 0x7295c203dd659dfe, CommandResetGameplayCamFullAttachParentTransformTimer);
|
|
SCR_REGISTER_SECURE(FORCE_CAMERA_RELATIVE_HEADING_AND_PITCH,0x3f606b4abc46c107, CommandForceCameraRelativeHeadingAndPitch);
|
|
SCR_REGISTER_SECURE(FORCE_BONNET_CAMERA_RELATIVE_HEADING_AND_PITCH,0x23fc9abda1de4638, CommandForceBonnetCameraRelativeHeadingAndPitch);
|
|
SCR_REGISTER_SECURE(SET_FIRST_PERSON_SHOOTER_CAMERA_HEADING,0xe9aef8b7b1101b11, CommandSetFirstPersonShooterCameraHeading);
|
|
SCR_REGISTER_SECURE(SET_FIRST_PERSON_SHOOTER_CAMERA_PITCH,0x4419cdfe572ac96b, CommandSetFirstPersonShooterCameraPitch);
|
|
SCR_REGISTER_SECURE(SET_SCRIPTED_CAMERA_IS_FIRST_PERSON_THIS_FRAME,0x4b6a8fc4666f4a3b, CommandSetScriptedCameraIsFirstPersonThisFrame);
|
|
SCR_REGISTER_SECURE(SHAKE_GAMEPLAY_CAM,0x87ca6430083e790d, CommandShakeGameplayCam);
|
|
SCR_REGISTER_SECURE(IS_GAMEPLAY_CAM_SHAKING,0xf8f3d410542c80db, CommandIsGameplayCamShaking);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_CAM_SHAKE_AMPLITUDE,0x0ed8565383e33da1, CommandSetGameplayCamShakeAmplitude);
|
|
SCR_REGISTER_SECURE(STOP_GAMEPLAY_CAM_SHAKING,0x84cf415aeab83b93, CommandStopGameplayCamShaking);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_CAM_FOLLOW_PED_THIS_UPDATE,0xb50594b7e6670f73, CommandSetGameplayCamFollowPedThisUpdate);
|
|
SCR_REGISTER_SECURE(IS_GAMEPLAY_CAM_RENDERING,0x66def7450747437a, CommandIsGameplayCamRendering);
|
|
SCR_REGISTER_SECURE(IS_INTERPOLATING_FROM_SCRIPT_CAMS,0x4709488c1d867377, CommandIsInterpolatingFromScriptCams);
|
|
SCR_REGISTER_SECURE(IS_INTERPOLATING_TO_SCRIPT_CAMS,0xe19e89b5fb4d4646, CommandIsInterpolatingToScriptCams);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_CAM_ALTITUDE_FOV_SCALING_STATE,0x3d1809e67cb9f79c, CommandSetGameplayCamAltitudeFovScalingState);
|
|
SCR_REGISTER_SECURE(DISABLE_GAMEPLAY_CAM_ALTITUDE_FOV_SCALING_THIS_UPDATE,0x129dd42d09aac47e, CommandDisableGameplayCamAltitudeFovScalingThisUpdate);
|
|
SCR_REGISTER_SECURE(IS_GAMEPLAY_CAM_LOOKING_BEHIND,0x594cc97203485127, CommandIsGameplayCamLookingBehind);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_CAM_IGNORE_ENTITY_COLLISION_THIS_UPDATE,0xa457f1126998c0ba, CommandSetIgnoreCollisionForEntityThisUpdate);
|
|
SCR_REGISTER_SECURE(DISABLE_CAM_COLLISION_FOR_OBJECT,0x31380d810d48740a, CommandDisableCamCollisionForObject);
|
|
SCR_REGISTER_SECURE(BYPASS_CAMERA_COLLISION_BUOYANCY_TEST_THIS_UPDATE,0x84b840750bfb7a66, CommandBypassCameraCollisionBuoyancyTestThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_CAM_ENTITY_TO_LIMIT_FOCUS_OVER_BOUNDING_SPHERE_THIS_UPDATE,0x2d17c0f0a5e54afe, CommandSetGameplayCamEntityToLimitFocusOverBoundingSphereThisUpdate);
|
|
SCR_REGISTER_SECURE(DISABLE_FIRST_PERSON_CAMERA_WATER_CLIPPING_TEST_THIS_UPDATE,0xd15ac77625fb5d5a, CommandDisableFirstPersonCameraWaterClippingTestThisUpdate);
|
|
|
|
SCR_REGISTER_SECURE(SET_FOLLOW_CAM_IGNORE_ATTACH_PARENT_MOVEMENT_THIS_UPDATE,0x328ba0168a94602f, CommandSetFollowCamIgnoreAttachParentMovementThisUpdate);
|
|
|
|
SCR_REGISTER_SECURE(IS_SPHERE_VISIBLE,0x0318e2ee6fb4563f, CommandIsSphereVisible);
|
|
|
|
SCR_REGISTER_SECURE(IS_FOLLOW_PED_CAM_ACTIVE,0x72b75b6d474267d5, CommandIsGameFollowPedCamActive);
|
|
SCR_REGISTER_SECURE(SET_FOLLOW_PED_CAM_THIS_UPDATE,0x8753a341a596975f, CommandSetFollowPedCamThisUpdate);
|
|
|
|
SCR_REGISTER_SECURE(USE_SCRIPT_CAM_FOR_AMBIENT_POPULATION_ORIGIN_THIS_FRAME,0xa26c67a816927cc7, CommandUseScriptCamForAmbientPopulationOriginThisFrame);
|
|
SCR_REGISTER_SECURE(SET_FOLLOW_PED_CAM_LADDER_ALIGN_THIS_UPDATE,0x5076c4358fbdaac7, CommandSetFollowPedCamLadderAlignThisUpdate);
|
|
|
|
SCR_REGISTER_SECURE(SET_THIRD_PERSON_CAM_RELATIVE_HEADING_LIMITS_THIS_UPDATE,0xab5ee05015513abe, CommandSetThirdPersonRelativeHeadingThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_THIRD_PERSON_CAM_RELATIVE_PITCH_LIMITS_THIS_UPDATE,0x0e2d809fe9af80ae, CommandSetThirdPersonRelativePitchThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_THIRD_PERSON_CAM_ORBIT_DISTANCE_LIMITS_THIS_UPDATE,0x940fc4e949dd00d0, CommandSetThirdPersonOrbitDistanceThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_IN_VEHICLE_CAM_STATE_THIS_UPDATE,0xc605c03d36b56591, CommandSetInVehicleCameraStateThisUpdate);
|
|
|
|
SCR_REGISTER_SECURE(DISABLE_ON_FOOT_FIRST_PERSON_VIEW_THIS_UPDATE,0xa84144d1edbb6d54, CommandDisableOnFootFirstPersonViewThisUpdate);
|
|
SCR_REGISTER_SECURE(DISABLE_FIRST_PERSON_FLASH_EFFECT_THIS_UPDATE,0x1109811fc4df0865, CommandDisableFirstPersonFlashEffectThisUpdate);
|
|
|
|
SCR_REGISTER_UNUSED(FORCE_THIRD_PERSON_AFTER_AIMING_BLEND_THIS_UPDATE,0x1a37fd458784ae4c, CommandForceThirdPersonAferAimingBlendThisUpdate);
|
|
SCR_REGISTER_UNUSED(DISABLE_THIRD_PERSON_AFTER_AIMING_BLEND_THIS_UPDATE,0x4c356901bdb72d7c, CommandDisableThirdPersonAferAimingBlendThisUpdate);
|
|
|
|
SCR_REGISTER_SECURE(BLOCK_FIRST_PERSON_ORIENTATION_RESET_THIS_UPDATE,0x39469160703c61ae, CommandBlockFirstPersonOrientationResetThisUpdate);
|
|
|
|
//Start deprecated
|
|
//NOTE: The new view modes now match the legacy zoom levels, so it is not necessary to map the enum.
|
|
SCR_REGISTER_SECURE(GET_FOLLOW_PED_CAM_ZOOM_LEVEL,0x64d620290bf268a3, CommandGetFollowPedCamViewMode);
|
|
//End deprecated
|
|
SCR_REGISTER_SECURE(GET_FOLLOW_PED_CAM_VIEW_MODE,0x2b1d7439c26d5642, CommandGetFollowPedCamViewMode);
|
|
SCR_REGISTER_SECURE(SET_FOLLOW_PED_CAM_VIEW_MODE,0xc9c7ccc4f117b115, CommandSetFollowPedCamViewMode);
|
|
|
|
SCR_REGISTER_SECURE(IS_FOLLOW_VEHICLE_CAM_ACTIVE,0xfe62696f731c151b, CommandIsGameFollowVehicleCamActive);
|
|
SCR_REGISTER_UNUSED(SET_FOLLOW_VEHICLE_CAM_THIS_UPDATE,0x79ee85ac07304324, CommandSetFollowVehicleCamThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_FOLLOW_VEHICLE_CAM_HIGH_ANGLE_MODE_THIS_UPDATE,0xd299feeb1b4dedc6, CommandSetFollowVehicleCamHighAngleModeThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_FOLLOW_VEHICLE_CAM_HIGH_ANGLE_MODE_EVERY_UPDATE,0x43b6850b58d1022c, CommandSetFollowVehicleCamHighAngleModeEveryUpdate);
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Table Games Camera API
|
|
SCR_REGISTER_SECURE(SET_TABLE_GAMES_CAMERA_THIS_UPDATE,0x01727103dd974710, CommandSetTableGamesCameraThisUpdate);
|
|
SCR_REGISTER_UNUSED(IS_TABLE_GAMES_CAMERA_ACTIVE,0x23a755c9532e976a, CommandIsTableGamesCameraActive);
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
//Start deprecated
|
|
//NOTE: The new view modes now match the legacy zoom levels, so it is not necessary to map the enum.
|
|
SCR_REGISTER_SECURE(GET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL,0x964cd83935ad0ed1, CommandGetFollowVehicleCamViewMode);
|
|
SCR_REGISTER_SECURE(SET_FOLLOW_VEHICLE_CAM_ZOOM_LEVEL,0x842b2a274564caf5, CommandSetGameFollowVehicleCamZoomLevel);
|
|
//End deprecated
|
|
SCR_REGISTER_SECURE(GET_FOLLOW_VEHICLE_CAM_VIEW_MODE,0x5e29b0cf10cecb34, CommandGetFollowVehicleCamViewMode);
|
|
SCR_REGISTER_SECURE(SET_FOLLOW_VEHICLE_CAM_VIEW_MODE,0xed74a3aa53be3520, CommandSetFollowVehicleCamViewMode);
|
|
|
|
SCR_REGISTER_SECURE(GET_CAM_VIEW_MODE_FOR_CONTEXT,0x4de6a646afb7cf5c, CommandGetCamViewModeForContext);
|
|
SCR_REGISTER_SECURE(SET_CAM_VIEW_MODE_FOR_CONTEXT,0x4b1c22133022d7d3, CommandSetCamViewModeForContext);
|
|
SCR_REGISTER_SECURE(GET_CAM_ACTIVE_VIEW_MODE_CONTEXT,0x47e529da87615548, CommandGetCamActiveViewModeContext);
|
|
|
|
SCR_REGISTER_SECURE(USE_VEHICLE_CAM_STUNT_SETTINGS_THIS_UPDATE,0x016cdcb99a127243, CommandUseVehicleCamStuntSettingsThisUpdate);
|
|
SCR_REGISTER_SECURE(USE_DEDICATED_STUNT_CAMERA_THIS_UPDATE,0xa9fc4ab61148c611, CommandUseDedicatedStuntCameraThisUpdate);
|
|
SCR_REGISTER_SECURE(FORCE_VEHICLE_CAM_STUNT_SETTINGS_THIS_UPDATE,0x0394892bda1f1eda, CommandForceVehicleCamStuntSettingsThisUpdate);
|
|
|
|
SCR_REGISTER_SECURE(SET_FOLLOW_VEHICLE_CAM_SEAT_THIS_UPDATE,0x65498c8065adcc5d, CommandSetFollowVehicleCamSeatThisUpdate);
|
|
|
|
SCR_REGISTER_SECURE(IS_AIM_CAM_ACTIVE,0x2358ae4c940cf1df, CommandIsGameAimCamActive);
|
|
SCR_REGISTER_SECURE(IS_AIM_CAM_ACTIVE_IN_ACCURATE_MODE,0x19abd41af27cd2a7, CommandIsGameAimCamActiveInAccurateMode);
|
|
SCR_REGISTER_SECURE(IS_FIRST_PERSON_AIM_CAM_ACTIVE,0x28ff2c2261b6cba1, CommandIsGameFirstPersonAimCamActive);
|
|
SCR_REGISTER_SECURE(DISABLE_AIM_CAM_THIS_UPDATE,0x7c6105654788a17b, CommandDisableGameAimCamThisUpdate);
|
|
SCR_REGISTER_UNUSED(GET_PED_AIM_CAM_VIEW_MODE,0x1df54e09bd6ce2f0, CommandGetPedAimCamViewMode);
|
|
SCR_REGISTER_UNUSED(SET_PED_AIM_CAM_VIEW_MODE,0x3a08e7e6adf155d2, CommandSetPedAimCamViewMode);
|
|
SCR_REGISTER_SECURE(GET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR,0x8e277ef62b1e0bdf, CommandGetGameFirstPersonAimCamZoomFactor);
|
|
SCR_REGISTER_SECURE(SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR,0xec426a0c147ec075, CommandSetGameFirstPersonAimCamZoomFactor);
|
|
SCR_REGISTER_SECURE(SET_FIRST_PERSON_AIM_CAM_ZOOM_FACTOR_LIMITS_THIS_UPDATE,0x369ee77cbbd732b2, CommandSetGameFirstPersonAimCamZoomFactorLimitsThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_FIRST_PERSON_AIM_CAM_RELATIVE_HEADING_LIMITS_THIS_UPDATE,0xd9a8ad65089229ce, CommandSetGameFirstPersonAimCamRelativeHeadingLimitsThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_FIRST_PERSON_AIM_CAM_RELATIVE_PITCH_LIMITS_THIS_UPDATE,0x57ed17672f68f6fa, CommandSetGameFirstPersonAimCamRelativePitchLimitsThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_FIRST_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE,0x5ded85df2208b943, CommandSetGameFirstPersonAimCamNearClipThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_THIRD_PERSON_AIM_CAM_NEAR_CLIP_THIS_UPDATE,0xd195f5a86bfb85d4, CommandSetGameThirdPersonAimCamNearClipThisUpdate);
|
|
|
|
SCR_REGISTER_SECURE(SET_ALLOW_CUSTOM_VEHICLE_DRIVE_BY_CAM_THIS_UPDATE,0x0e83878033f3e16a, CommandSetAllowCustomVehicleDriveByCamThisUpdate);
|
|
|
|
SCR_REGISTER_SECURE(FORCE_TIGHTSPACE_CUSTOM_FRAMING_THIS_UPDATE,0xf41864db1cf85307, CommandForceTightSpaceCustomFramingThisUpdate);
|
|
|
|
//Cached frame
|
|
SCR_REGISTER_SECURE(GET_FINAL_RENDERED_CAM_COORD,0x524171c8263e7c3e, CommandGetRenderedCamCoord);
|
|
SCR_REGISTER_SECURE(GET_FINAL_RENDERED_CAM_ROT,0x52bd0fa2342c7246, CommandGetRenderedCamRot);
|
|
SCR_REGISTER_SECURE(GET_FINAL_RENDERED_REMOTE_PLAYER_CAM_ROT,0x58e4c4eb027d47b6, CommandGetRenderedRemotePlayerCamRot);
|
|
SCR_REGISTER_SECURE(GET_FINAL_RENDERED_CAM_FOV,0x07c8c8b0cbd44d3b, CommandGetRenderedCamFov);
|
|
SCR_REGISTER_SECURE(GET_FINAL_RENDERED_REMOTE_PLAYER_CAM_FOV,0x00f2683a6a133040, CommandGetRenderedRemotePlayerCamFov);
|
|
SCR_REGISTER_SECURE(GET_FINAL_RENDERED_CAM_NEAR_CLIP,0xe51db7b55b7f9f44, CommandGetRenderedCamNearClip);
|
|
SCR_REGISTER_SECURE(GET_FINAL_RENDERED_CAM_FAR_CLIP,0xdf083f70a83a7271, CommandGetRenderedCamFarClip);
|
|
SCR_REGISTER_SECURE(GET_FINAL_RENDERED_CAM_NEAR_DOF,0xa97deab4b3e49b73, CommandGetRenderedCamNearDof);
|
|
SCR_REGISTER_SECURE(GET_FINAL_RENDERED_CAM_FAR_DOF,0x658584b384fb3c2a, CommandGetRenderedCamFarDof);
|
|
SCR_REGISTER_SECURE(GET_FINAL_RENDERED_CAM_MOTION_BLUR_STRENGTH,0x26dab410cd0cec53, CommandGetRenderedCamMotionBlurStrength);
|
|
//Hint cam
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_COORD_HINT,0xdbfee73a55300843, CommandSetGameplayCoordHint);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_PED_HINT,0xda6126f0297ba5e8, CommandSetGameplayPedHint); //TO BE REMOVED
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_VEHICLE_HINT,0x7c6d4fd402f1d4f9, CommandSetGameplayVehicleHint);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_OBJECT_HINT,0xb065566f582943d1, CommandSetGameplayObjectHint);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_ENTITY_HINT,0x56593357686570f4, CommandSetGameplayEntityHint);
|
|
SCR_REGISTER_UNUSED(SET_GAMEPLAY_HINT_RELATIVE_PITCH,0x74c6600da8d135e3, CommandSetGameplayHintRelativePitch);
|
|
SCR_REGISTER_SECURE(IS_GAMEPLAY_HINT_ACTIVE,0x4131052989de1278, CommandIsGameplayHintActive);
|
|
SCR_REGISTER_SECURE(STOP_GAMEPLAY_HINT,0xbd1e8007d7dfa747, CommandStopGameplayHint);
|
|
SCR_REGISTER_SECURE(STOP_GAMEPLAY_HINT_BEING_CANCELLED_THIS_UPDATE,0x457826ed772c86a4,CommandStopGameplayHintBeingCancelledUsingRightStick);
|
|
SCR_REGISTER_SECURE(STOP_CODE_GAMEPLAY_HINT,0x408cf406c7d78d6f, CommandStopCodeGamePlayHint);
|
|
SCR_REGISTER_SECURE(IS_CODE_GAMEPLAY_HINT_ACTIVE,0x3f520e7ecf3381a3, CommandIsCodeGameplayHintActive);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_HINT_FOV,0xc9b7a3b3228edc18, CommandSetGameplayHintFov);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_HINT_FOLLOW_DISTANCE_SCALAR,0xffd7feec98321a66, CommandSetGameplayHintFollowDistanceScalar);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_HINT_BASE_ORBIT_PITCH_OFFSET,0xc3940c122330f4aa, CommandSetGameplayHintBaseOrbitPitchOffset);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_HINT_CAMERA_RELATIVE_SIDE_OFFSET,0xc5fb663c1ce53c57, CommandSetGameplayHintCameraRelativeSideOffsetAdditive);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_HINT_CAMERA_RELATIVE_VERTICAL_OFFSET,0xf2938a28c15db464, CommandSetGameplayHintCameraRelativeVerticalOffsetAdditive);
|
|
SCR_REGISTER_SECURE(SET_GAMEPLAY_HINT_CAMERA_BLEND_TO_FOLLOW_PED_MEDIUM_VIEW_MODE,0xcb772e2a88f6a27f, CommandSetGameplayHintCameraBlendToFollowPedMediumViewMode);
|
|
|
|
//Cinematic
|
|
SCR_REGISTER_SECURE(SET_CINEMATIC_BUTTON_ACTIVE,0xe4fa4fbf0bafd2a8, CommandSetCinematicButtonActive);
|
|
SCR_REGISTER_SECURE(IS_CINEMATIC_CAM_RENDERING,0x0085e4be8fd73703, CommandIsCinematicCamRendering);
|
|
SCR_REGISTER_SECURE(SHAKE_CINEMATIC_CAM,0x3b58be9e133fd48d, CommandShakeCinematicCam);
|
|
SCR_REGISTER_SECURE(IS_CINEMATIC_CAM_SHAKING,0xbee2f63c2da77f95, CommandIsCinematicCamShaking);
|
|
SCR_REGISTER_SECURE(SET_CINEMATIC_CAM_SHAKE_AMPLITUDE,0x86a2751c5f3af8f8, CommandSetCinematicCamShakeAmplitude);
|
|
SCR_REGISTER_SECURE(STOP_CINEMATIC_CAM_SHAKING,0xc3d04b421e077910, CommandStopCinematicCamShaking);
|
|
SCR_REGISTER_SECURE(DISABLE_CINEMATIC_BONNET_CAMERA_THIS_UPDATE,0x5ad47d8cfc3a86af, CommandDisableCinematicBonnetCameraThisUpdate);
|
|
SCR_REGISTER_SECURE(DISABLE_CINEMATIC_VEHICLE_IDLE_MODE_THIS_UPDATE,0x7936e7a8dbe3dbbe, CommandDisableCinematicVehicleIdleModeThisUpdate);
|
|
SCR_REGISTER_SECURE(INVALIDATE_CINEMATIC_VEHICLE_IDLE_MODE,0xb06c15f6118b032d, CommandInvalidateCinematicVehicleIdleMode);
|
|
SCR_REGISTER_SECURE(INVALIDATE_IDLE_CAM,0x62ea3913642edf8e, CommandInvalidateIdleCam);
|
|
SCR_REGISTER_SECURE(IS_CINEMATIC_IDLE_CAM_RENDERING,0x20192bf9e3bb2549, CommandIsCinematicIdleCamRendering);
|
|
SCR_REGISTER_SECURE(IS_CINEMATIC_FIRST_PERSON_VEHICLE_INTERIOR_CAM_RENDERING,0x94398b6170dca18c, CommandIsCinematicFirstPersonVehicleInteriorCamRendering);
|
|
SCR_REGISTER_SECURE(CREATE_CINEMATIC_SHOT,0x9b30483daa48199b, CommandCreateCinematicShot);
|
|
SCR_REGISTER_SECURE(IS_CINEMATIC_SHOT_ACTIVE,0x99636b3721921a29, CommandIsCinematicShotActive);
|
|
SCR_REGISTER_SECURE(STOP_CINEMATIC_SHOT,0x332e0449b21e13ab, CommandStopCinematicShot);
|
|
SCR_REGISTER_UNUSED(IS_CINEMATIC_SHOT_RENDERING,0x809c5dbfa8d8d422, CommandIsCinematicShotRendering);
|
|
SCR_REGISTER_SECURE(FORCE_CINEMATIC_RENDERING_THIS_UPDATE,0x683caf9e8ab4583d, CommandScriptForceCinematicRenderingThisUpdate);
|
|
SCR_REGISTER_SECURE(SET_CINEMATIC_NEWS_CHANNEL_ACTIVE_THIS_UPDATE,0x58787e2db6f54bac, CommandSetCinematicNewsChannelActiveThisUpdate);
|
|
SCR_REGISTER_UNUSED(REGISTER_CINEMATIC_CAMERA_CHECK_POINT_POS,0x26bba2903674460c, CommandRegisterRaceCheckPoint);
|
|
SCR_REGISTER_SECURE(SET_CINEMATIC_MODE_ACTIVE,0x71800f6ecfd14497, CommandSetCinematicModeActive);
|
|
SCR_REGISTER_UNUSED(SET_CINEMATIC_MISSION_CREATOR_FAIL_ACTIVE_THIS_UPDATE,0x9a341be2cbe64682, CommandCinematicMissionCreatorFailContextActiveThisUpdate);
|
|
SCR_REGISTER_SECURE(IS_IN_VEHICLE_MOBILE_PHONE_CAMERA_RENDERING,0xfb59e5247fb6b7f9, CommandIsInVehicleMobilePhoneCameraRendering);
|
|
SCR_REGISTER_SECURE(DISABLE_CINEMATIC_SLOW_MO_THIS_UPDATE,0x5951e2e1db653567, CommandDisableCinematicSlowModeThisUpdate);
|
|
SCR_REGISTER_SECURE(IS_BONNET_CINEMATIC_CAM_RENDERING,0x9bf14c0e44bdb17d, CommandIsBonnetCinematicCamRendering);
|
|
SCR_REGISTER_SECURE(IS_CINEMATIC_CAM_INPUT_ACTIVE,0x3698ce894e1342d5, CommandIsCinematicCamInputActive);
|
|
SCR_REGISTER_SECURE(IGNORE_MENU_PREFERENCE_FOR_BONNET_CAMERA_THIS_UPDATE,0x438bb2738c8d1cc9, CommandIgnoreMenuPreferenceForBonnetCameraThisUpdate);
|
|
//Cutscene
|
|
SCR_REGISTER_SECURE(BYPASS_CUTSCENE_CAM_RENDERING_THIS_UPDATE,0x5a971a2d157136b6, CommandBypassCutsceneCamRenderingThisUpdate);
|
|
SCR_REGISTER_UNUSED(SHAKE_CUTSCENE_CAM,0x731970af18babee4, CommandShakeCutsceneCam);
|
|
SCR_REGISTER_UNUSED(IS_CUTSCENE_CAM_SHAKING,0x747c1186c8b8c7be, CommandIsCutsceneCamShaking);
|
|
SCR_REGISTER_UNUSED(SET_CUTSCENE_CAM_SHAKE_AMPLITUDE,0x9706a280275bce96, CommandSetCutsceneCamShakeAmplitude);
|
|
SCR_REGISTER_SECURE(STOP_CUTSCENE_CAM_SHAKING,0x1435be4d0e33c803, CommandStopCutsceneCamShaking);
|
|
SCR_REGISTER_SECURE(SET_CUTSCENE_CAM_FAR_CLIP_THIS_UPDATE,0xf0c79c8b198cd112, CommandSetCutsceneCamFarClipThisUpdate);
|
|
|
|
//Misc
|
|
SCR_REGISTER_SECURE(GET_FOCUS_PED_ON_SCREEN,0x337b1e5a3d6dedfa, CommandGetFocusPedOnScreen);
|
|
SCR_REGISTER_SECURE(DISABLE_NEAR_CLIP_SCAN_THIS_UPDATE,0x822c724fc6fae724, CommandDisableNearClipScanThisUpdate);
|
|
|
|
SCR_REGISTER_SECURE(SET_CAM_DEATH_FAIL_EFFECT_STATE,0xecc353e755ab76f1, CommandSetCamDeathFailEffectState);
|
|
|
|
SCR_REGISTER_UNUSED(START_CAMERA_CAPTURE,0x015c04f6d80f2ada, CommandStartCameraCapture);
|
|
SCR_REGISTER_UNUSED(STOP_CAMERA_CAPTURE,0xf427f64662a73be0, CommandStopCameraCapture);
|
|
SCR_REGISTER_SECURE(SET_FIRST_PERSON_FLASH_EFFECT_TYPE,0x7659886d4d8ac36a, CommandSetFirstPersonFlashEffectType);
|
|
SCR_REGISTER_SECURE(SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_NAME,0x7533e83009d5f82f, CommandSetFirstPersonFlashEffectVehicleModelName);
|
|
SCR_REGISTER_SECURE(SET_FIRST_PERSON_FLASH_EFFECT_VEHICLE_MODEL_HASH,0x058fdcacb20a766a, CommandSetFirstPersonFlashEffectVehicleModelHash);
|
|
SCR_REGISTER_SECURE(IS_ALLOWED_INDEPENDENT_CAMERA_MODES,0x9cf8be19558b3a3d, CommandIsAllowedIndependentCameraModes);
|
|
SCR_REGISTER_SECURE(CAMERA_PREVENT_COLLISION_SETTINGS_FOR_TRIPLEHEAD_IN_INTERIORS_THIS_UPDATE,0xb88aab5ba3dc7936, CommandPreventCollisionSettingsForTripleHeadInInteriorsThisUpdate);
|
|
|
|
//Replay
|
|
SCR_REGISTER_SECURE(REPLAY_GET_MAX_DISTANCE_ALLOWED_FROM_PLAYER,0x0b9cd460e6a37693, CommandReplayGetMaxDistanceAllowedFromPlayer);
|
|
|
|
} // end of registered commands
|
|
} // end of namespace camera_commands
|