DeveloperFreeCamera.c
class DeveloperFreeCamera
{
static void OnInit();
//! Enable / Disable Free camera (Fly mod) - disable of camera will teleport player at current free camera position.
static void FreeCameraToggle(PlayerBase player, bool teleport_player = false)
{
if (!IsFreeCameraEnabled())
{
EnableFreeCamera(player);
}
else
{
DisableFreeCamera(player, teleport_player);
}
}
static void EnableFreeCameraSceneEditor(PlayerBase player)
{
EnableFreeCamera(player);
}
static bool IsFreeCameraEnabled()
{
return FreeDebugCamera.GetInstance().IsActive();
}
static bool IsFreeCameraEnabledNoPlayerMovement()
{
if (FreeDebugCamera.GetInstance().IsPlayerMove())
return false;
return FreeDebugCamera.GetInstance().IsActive();
}
protected static void EnableFreeCamera(PlayerBase player)
{
if (player)
{
FreeDebugCamera.GetInstance().SetActive(true);
#ifdef DEVELOPER
g_Game.GetMission().RefreshCrosshairVisibility();
#endif
}
else
{
Debug.LogError("EnableFreeCamera( PlayerBase player ) -> player is NULL", "DeveloperFreeCamera");
}
}
static void DisableFreeCamera(PlayerBase player, bool teleport_player = false)
{
if (player)
{
if (FreeDebugCamera.GetInstance().IsActive())
{
if (teleport_player)
DeveloperTeleport.TeleportAtCursorEx();
FreeDebugCamera.GetInstance().SetActive(false);
#ifdef DEVELOPER
Mission mission = g_Game.GetMission();
if (mission)
mission.RefreshCrosshairVisibility();
#endif
}
}
else
{
Debug.LogError("DisableFreeCamera( PlayerBase player, bool teleport_player ) -> player is NULL", "DeveloperFreeCamera");
}
}
static void OnSetFreeCameraEvent(PlayerBase player, FreeDebugCamera camera)
{
if (player)
{
#ifdef DEVELOPER
if (!g_Game.IsMultiplayer())
{
PluginSceneManager sceneManager = PluginSceneManager.Cast(GetPlugin(PluginSceneManager));
if (sceneManager.IsOpened())
sceneManager.EditorToggle();
}
g_Game.GetMission().RefreshCrosshairVisibility();
#endif
}
}
}