From 027893c1d6a86bed2946c31282e7375d053db770 Mon Sep 17 00:00:00 2001 From: GrooveypenguinX Date: Sun, 3 Mar 2024 13:40:33 +0000 Subject: [PATCH] Freecam Controls Toggle (#4) Added option to toggle Freecam Controls using a new keybind (default: keypad period). This allows users to easily switch to Freecam mode, move their camera to position, toggle camera controls, and move the player character. Great addition for efficient testing of weight painting and animations. Reviewed-on: https://dev.sp-tarkov.com/Terkoiz/Freecam/pulls/4 Co-authored-by: GrooveypenguinX Co-committed-by: GrooveypenguinX --- project/Terkoiz.Freecam/FreecamController.cs | 24 ++++++++++++++++++++ project/Terkoiz.Freecam/FreecamPlugin.cs | 7 ++++++ 2 files changed, 31 insertions(+) diff --git a/project/Terkoiz.Freecam/FreecamController.cs b/project/Terkoiz.Freecam/FreecamController.cs index ba884df..f8e0e2b 100644 --- a/project/Terkoiz.Freecam/FreecamController.cs +++ b/project/Terkoiz.Freecam/FreecamController.cs @@ -60,6 +60,11 @@ namespace Terkoiz.Freecam ToggleCamera(); } + if (FreecamPlugin.ToggleFreecamControls.Value.IsDown()) + { + ToggleCameraControls(); + } + if (FreecamPlugin.TeleportToCamera.Value.IsDown()) { MovePlayerToCamera(); @@ -196,6 +201,25 @@ namespace Terkoiz.Freecam localPlayer.PointOfView = EPointOfView.FirstPerson; } + /// + /// A helper method to toggle the Freecam Camera Controls + /// + private void ToggleCameraControls() + { + if (_freeCamScript.IsActive) + { + _freeCamScript.IsActive = false; + _gamePlayerOwner.enabled = true; + } + else + { + _freeCamScript.IsActive = true; + _gamePlayerOwner.enabled = false; + } + + } + + /// /// Gets the current instance if it's available /// diff --git a/project/Terkoiz.Freecam/FreecamPlugin.cs b/project/Terkoiz.Freecam/FreecamPlugin.cs index 68e5867..2e8434f 100644 --- a/project/Terkoiz.Freecam/FreecamPlugin.cs +++ b/project/Terkoiz.Freecam/FreecamPlugin.cs @@ -20,6 +20,7 @@ namespace Terkoiz.Freecam // Keyboard shortcut config entries private const string KeybindSectionName = "Keybinds"; internal static ConfigEntry ToggleFreecamMode; + internal static ConfigEntry ToggleFreecamControls; internal static ConfigEntry TeleportToCamera; internal static ConfigEntry ToggleUi; @@ -67,6 +68,12 @@ namespace Terkoiz.Freecam new KeyboardShortcut(KeyCode.KeypadPlus), "The keyboard shortcut that toggles Freecam"); + ToggleFreecamControls = Config.Bind( + KeybindSectionName, + "Toggle Freecam Controls", + new KeyboardShortcut(KeyCode.KeypadPeriod), + "The keyboard shortcut that toggles Freecam Controls"); + TeleportToCamera = Config.Bind( KeybindSectionName, "Teleport To Camera",