public void EnableFreeCameraControls()
        {
            Injection.InjectionEntryPoint.HideCursor();

            coordinatesFuncBytes = MemoryManipulator.Read(CAMERA_COORDINATES_UPDATE_FUNC_ADDRESS, 2);
            MemoryManipulator.Write(CAMERA_COORDINATES_UPDATE_FUNC_ADDRESS, Assembly.GetPaddedReturnInstructions(1));

            focusCoordinatesFuncBytes = MemoryManipulator.Read(CAMERA_FOCUS_COORDINATES_UPDATE_FUNC_ADDRESS, 2);
            MemoryManipulator.Write(CAMERA_FOCUS_COORDINATES_UPDATE_FUNC_ADDRESS, Assembly.GetPaddedReturnInstructions(1));

            slantFuncBytes = MemoryManipulator.Read(CAMERA_SLANT_UPDATE_FUNC_ADDRESS, 8);
            MemoryManipulator.Write(CAMERA_SLANT_UPDATE_FUNC_ADDRESS, Assembly.GetPaddedReturnInstructions(7));

            fovFuncBytes = MemoryManipulator.Read(CAMERA_FOV_UPDATE_FUNC_ADDRESS, 7);
            MemoryManipulator.Write(CAMERA_FOV_UPDATE_FUNC_ADDRESS, Assembly.GetPaddedReturnInstructions(6));

            ReadDivaCameraData();

            CameraVerticalRotation = MathHelper.AngleFromPoints(
                CameraData.X, CameraData.Z,
                CameraData.FocusX, CameraData.FocusZ);

            CameraHorizontalRotation = 0f;
            CameraSlant = 0f;
        }
 public void ReadDivaCameraData()
 {
     byte[] buffer = MemoryManipulator.Read(CAMERA_OBJECT_ADDRESS, CameraData.BYTE_SIZE);
     CameraData = CameraData.FromBytes(buffer);
 }