developerfreecamera.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. protected static void EnableFreeCamera(PlayerBase player)
  25. {
  26. if (player)
  27. {
  28. FreeDebugCamera.GetInstance().SetActive(true);
  29. #ifdef DEVELOPER
  30. GetGame().GetMission().RefreshCrosshairVisibility();
  31. #endif
  32. }
  33. else
  34. {
  35. Debug.LogError("EnableFreeCamera( PlayerBase player ) -> player is NULL", "DeveloperFreeCamera");
  36. }
  37. }
  38. static void DisableFreeCamera(PlayerBase player, bool teleport_player = false)
  39. {
  40. if (player)
  41. {
  42. if (FreeDebugCamera.GetInstance().IsActive())
  43. {
  44. if (teleport_player)
  45. DeveloperTeleport.TeleportAtCursorEx();
  46. FreeDebugCamera.GetInstance().SetActive(false);
  47. #ifdef DEVELOPER
  48. if (GetGame().GetMission())
  49. GetGame().GetMission().RefreshCrosshairVisibility();
  50. #endif
  51. }
  52. }
  53. else
  54. {
  55. Debug.LogError("DisableFreeCamera( PlayerBase player, bool teleport_player ) -> player is NULL", "DeveloperFreeCamera");
  56. }
  57. }
  58. static void OnSetFreeCameraEvent(PlayerBase player, FreeDebugCamera camera)
  59. {
  60. if (player)
  61. {
  62. #ifdef DEVELOPER
  63. if (!GetGame().IsMultiplayer())
  64. {
  65. PluginSceneManager sceneManager = PluginSceneManager.Cast(GetPlugin(PluginSceneManager));
  66. if (sceneManager.IsOpened())
  67. sceneManager.EditorToggle();
  68. }
  69. GetGame().GetMission().RefreshCrosshairVisibility();
  70. #endif
  71. }
  72. }
  73. }