using BepInEx; using BepInEx.Configuration; using UnityEngine; namespace Terkoiz.Freecam { [BepInPlugin("com.terkoiz.freecam", "Terkoiz.Freecam", "1.1.0")] public class FreecamPlugin : BaseUnityPlugin { private static GameObject HookObject; // Keyboard shortcut config entries private const string KeybindSectionName = "Keybinds"; internal static ConfigEntry ToggleFreecamMode; internal static ConfigEntry TeleportToCamera; internal static ConfigEntry ToggleUi; // Camera settings config entries private const string CameraSettingsSectionName = "CameraSettings"; internal static ConfigEntry CameraMoveSpeed; internal static ConfigEntry CameraFastMoveSpeed; internal static ConfigEntry CameraLookSensitivity; internal static ConfigEntry CameraZoomSpeed; internal static ConfigEntry CameraFastZoomSpeed; private void Awake() { Logger.LogError("Loading Freecam..."); InitConfiguration(); HookObject = new GameObject(); HookObject.AddComponent(); Object.DontDestroyOnLoad(HookObject); } private void InitConfiguration() { ToggleFreecamMode = Config.Bind( KeybindSectionName, "ToggleCamera", new KeyboardShortcut(KeyCode.KeypadPlus), "The keyboard shortcut that toggles Freecam"); TeleportToCamera = Config.Bind( KeybindSectionName, "TeleportToCamera", new KeyboardShortcut(KeyCode.KeypadEnter), "The keyboard shortcut that teleports the player to camera position"); ToggleUi = Config.Bind( KeybindSectionName, "ToggleUi", new KeyboardShortcut(KeyCode.KeypadMultiply), "The keyboard shortcut that toggles the game UI"); CameraMoveSpeed = Config.Bind( CameraSettingsSectionName, "CameraMoveSpeed", 10f, new ConfigDescription( "The speed at which the camera will move normally", new AcceptableValueRange(0.01f, 100f))); CameraFastMoveSpeed = Config.Bind( CameraSettingsSectionName, "CameraFastMoveSpeed", 100f, new ConfigDescription( "The speed at which the camera will move when the Shift key is held down", new AcceptableValueRange(0.01f, 1000f))); CameraLookSensitivity = Config.Bind( CameraSettingsSectionName, "CameraLookSensitivity", 3f, new ConfigDescription( "Camera free look mouse sensitivity", new AcceptableValueRange(0.1f, 10f))); CameraZoomSpeed = Config.Bind( CameraSettingsSectionName, "CameraMousewheelZoomSpeed", 10f, new ConfigDescription( "Amount to zoom the camera when using the mouse wheel", new AcceptableValueRange(0.01f, 100f))); CameraFastZoomSpeed = Config.Bind( CameraSettingsSectionName, "CameraMousewheelFastZoomSpeed", 50f, new ConfigDescription( "Amount to zoom the camera when using the mouse wheel while holding Shift", new AcceptableValueRange(0.01f, 1000f))); } } }