private void MouseFixHook(On.VideoCamera.orig_Update orig, VideoCamera self)
        {
            orig(self);

            var m_active    = GetValue(typeof(VideoCamera), self, "m_active");
            var m_character = GetValue(typeof(VideoCamera), self, "m_character");

            if (m_active is bool active && m_character is Character character)
            {
                if (active == false && character != null)
                {
                    if (freeCameraFlag && localPlayerID == -1)
                    {
                        localPlayerID = ControlsInput.GetMouseOwner();
                    }
                    if (!freeCameraFlag)
                    {
                        freeCameraFlag   = true;
                        Cursor.lockState = CursorLockMode.Locked;
                        if (localPlayerID != -1)
                        {
                            ControlsInput.AssignMouseKeyboardToPlayer(localPlayerID);
                        }
                    }
                }
                if (active == true && freeCameraFlag == true)
                {
                    freeCameraFlag = false;
                }
            }
        }