developerfreecamera.c 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. class DeveloperFreeCamera
  2. {
  3. static void OnInit();
  4. //! Enable / Disable Free camera (Fly mod) - disable of camera will teleport player at current free camera position.
  5. static void FreeCameraToggle(PlayerBase player, bool teleport_player = false)
  6. {
  7. if (!IsFreeCameraEnabled())
  8. {
  9. EnableFreeCamera(player);
  10. }
  11. else
  12. {
  13. DisableFreeCamera(player, teleport_player);
  14. }
  15. }
  16. static void EnableFreeCameraSceneEditor(PlayerBase player)
  17. {
  18. EnableFreeCamera(player);
  19. }
  20. static bool IsFreeCameraEnabled()
  21. {
  22. return FreeDebugCamera.GetInstance().IsActive();
  23. }
  24. static bool IsFreeCameraEnabledNoPlayerMovement()
  25. {
  26. if (FreeDebugCamera.GetInstance().IsPlayerMove())
  27. return false;
  28. return FreeDebugCamera.GetInstance().IsActive();
  29. }
  30. protected static void EnableFreeCamera(PlayerBase player)
  31. {
  32. if (player)
  33. {
  34. FreeDebugCamera.GetInstance().SetActive(true);
  35. #ifdef DEVELOPER
  36. GetGame().GetMission().RefreshCrosshairVisibility();
  37. #endif
  38. }
  39. else
  40. {
  41. Debug.LogError("EnableFreeCamera( PlayerBase player ) -> player is NULL", "DeveloperFreeCamera");
  42. }
  43. }
  44. static void DisableFreeCamera(PlayerBase player, bool teleport_player = false)
  45. {
  46. if (player)
  47. {
  48. if (FreeDebugCamera.GetInstance().IsActive())
  49. {
  50. if (teleport_player)
  51. DeveloperTeleport.TeleportAtCursorEx();
  52. FreeDebugCamera.GetInstance().SetActive(false);
  53. #ifdef DEVELOPER
  54. if (GetGame().GetMission())
  55. GetGame().GetMission().RefreshCrosshairVisibility();
  56. #endif
  57. }
  58. }
  59. else
  60. {
  61. Debug.LogError("DisableFreeCamera( PlayerBase player, bool teleport_player ) -> player is NULL", "DeveloperFreeCamera");
  62. }
  63. }
  64. static void OnSetFreeCameraEvent(PlayerBase player, FreeDebugCamera camera)
  65. {
  66. if (player)
  67. {
  68. #ifdef DEVELOPER
  69. if (!GetGame().IsMultiplayer())
  70. {
  71. PluginSceneManager sceneManager = PluginSceneManager.Cast(GetPlugin(PluginSceneManager));
  72. if (sceneManager.IsOpened())
  73. sceneManager.EditorToggle();
  74. }
  75. GetGame().GetMission().RefreshCrosshairVisibility();
  76. #endif
  77. }
  78. }
  79. }