コード例 #1
0
            public static bool Prefix(CameraRig __instance, ref Vector3 ___m_TargetPosition)
            {
                if (!settings.toggleRotateOnAllMaps && !settings.toggleCameraPitch && !settings.toggleCameraElevation && !Main.resetExtraCameraAngles && !settings.toggleInvertXAxis && !settings.toggleInvertKeyboardXAxis)
                {
                    return(true);
                }
                var usePitch = settings.toggleCameraPitch;

                if (__instance.m_RotateRoutine != null && (double)Time.time > (double)__instance.m_RotateRoutineEndsOn)
                {
                    __instance.StopCoroutine(__instance.m_RotateRoutine);
                    __instance.m_RotateRoutine = (Coroutine)null;
                }

                if (__instance.m_ScrollRoutine != null || __instance.m_RotateRoutine != null)// || __instance.m_HandRotationLock)
                {
                    return(false);
                }
                __instance.RotateByMiddleButton();
                var mouseMovement = new Vector2(0, 0);
                var xRotationSign = 1f;
                var yRotationSign = settings.toggleInvertYAxis ? 1f : -1f;

                if (__instance.m_RotationByMouse)
                {
                    if (!settings.toggleInvertXAxis)
                    {
                        xRotationSign = -1;
                    }
                    mouseMovement = __instance.CameraDragToRotate2D();
                }
                else if (__instance.m_RotationByKeyboard)
                {
                    mouseMovement.x = __instance.m_RotateOffset;
                    if (settings.toggleInvertKeyboardXAxis)
                    {
                        xRotationSign = -1;
                    }
                }
                if (__instance.m_RotationByMouse || __instance.m_RotationByKeyboard || Main.resetExtraCameraAngles)
                {
                    var eulerAngles = __instance.transform.rotation.eulerAngles;
                    eulerAngles.y += xRotationSign * mouseMovement.x * __instance.m_RotationSpeed * CameraRig.ConsoleRotationMod;
                    if (Main.resetExtraCameraAngles)
                    {
                        eulerAngles.x               = 0f;
                        CameraElevation             = 60f;
                        __instance.m_TargetPosition = __instance.PlaceOnGround2(__instance.m_TargetPosition);
                        var cameraRig           = Game.Instance.UI.GetCameraRig();
                        var highlightingFeature = OwlcatRenderPipeline.Asset.ScriptableRendererData.rendererFeatures.OfType <OccludedObjectHighlightingFeature>().Single <OccludedObjectHighlightingFeature>();
                        highlightingFeature.DepthClip.NearCameraClipDistance = 10;
                        highlightingFeature.DepthClip.ClipTreshold           = 0;
                        Main.resetExtraCameraAngles = false;
                    }
                    else
                    {
                        if (Input.GetKey(KeyCode.LeftControl))
                        {
                            ___m_TargetPosition.y += yRotationSign * mouseMovement.y / 10f;
                            CameraElevation        = ___m_TargetPosition.y;
                        }
                        else if (usePitch)
                        {
                            eulerAngles.x += yRotationSign * mouseMovement.y * __instance.m_RotationSpeed * CameraRig.ConsoleRotationMod;
                            //Mod.Debug($"eulerX: {eulerAngles.x}");
                        }
                    }
                    __instance.transform.DOKill();
                    __instance.transform.DOLocalRotate(eulerAngles, __instance.m_RotationTime).SetUpdate <Tweener>(true);
                }

                __instance.m_RotationByKeyboard = false;
                __instance.m_RotateOffset       = 0.0f;
                return(false);
            }