예제 #1
0
        public static bool Prefix(MainCameraControl __instance, out Vector3 __state)
        {
            __state = __instance.viewModel.transform.localPosition;
            Debug.Log($"prefix LocalPosition {__state}");

            if (!Config.instance.EnableSnapTurning)
            {
                return(true); //Enter vanilla method
            }

            UpdateFields();

            if (_isLookingUpOrDown && !Config.instance.EnableVirticalLook)
            {
                return(false); //Disable looking up or down with the joystick
            }

            if (_shouldSnapTurn)
            {
                UpdatePlayerRotation();
                return(false); //Don't enter vanilla method if we snap turn
            }

            return(true);
        }
예제 #2
0
        public static bool Prefix(MainCameraControl __instance)
        {
            if (!SnapTurningOptions.EnableSnapTurning || Player.main.isPiloting)
            {
                return(true); //Enter vanilla method
            }

            UpdateFields();

            if (_isLookingUpOrDown)
            {
                ClearInput();
                return(true);
            }

            if (_shouldSnapTurn)
            {
                UpdatePlayerRotation();
                return(false); //Don't enter vanilla method if we snap turn
            }

            if (_shouldIgnoreLookRightOrLeft || SnapTurningOptions.DisableMouseLook)
            {
                ClearInput();
            }

            return(true);
        }
예제 #3
0
    private void Awake()
    {
        GameDirector director = GameDirector.getInstance();

        director.currentSceneController = this;
        mf            = Singleton <GameObjectFactory> .Instance;
        player        = mf.getPlayer();
        cameraControl = GetComponent <MainCameraControl>();
        cameraControl.setTarget(player.transform);
    }
예제 #4
0
 // Use this for initialization
 void Start()
 {
     dammyCampos                 = transform.position;
     player                      = PlayerObj.transform.GetComponent <PlayerMove>();
     mousepos                    = Input.mousePosition;
     mousepos2                   = mousepos;
     flagsInStageManager         = GameObject.Find("GameControlObject").GetComponent <FlagsInStageManager>();
     MainCamera                  = MainCameraObj.transform.GetComponent <MainCameraControl>();
     CameraAngle                 = Vector3.zero;
     Application.targetFrameRate = 60;
 }
예제 #5
0
            static void Postfix(MainCameraControl __instance)
            {
                Transform forwardRefTransform = __instance.GetComponentInParent <PlayerController>().forwardReference;//forwardReference is the main camera transform

                if (pdaIsClosing && pdaCloseTimer < pdaCloseDelay)
                {
                    pdaCloseTimer += Time.deltaTime;
                }
                else if (pdaCloseTimer >= pdaCloseDelay || (pdaIsClosing && Player.main.GetPDA().state == PDA.State.Opened))
                {
                    pdaIsClosing  = false;
                    pdaCloseTimer = 0;
                }
                if (Player.main.GetPDA().state == PDA.State.Closing)
                {
                    pdaIsClosing = true;
                }
                //when the pda is opened the viewmodel is moved forward but even when the state is closed, it is kept foward for a short while which was causing the neck to
                //show if I also moved the model forward at the same time. So I maintain my own closing state with pdaIsClosing and only move the model forward after pdaCloseDelay.
                //There may be a better way to solve this so someone please fix it.
                //I think the shifting of the model happens because of local position changes in the actual 3D model since the offset values didn't change during the model shift.
                if (Player.main.GetPDA().state == PDA.State.Closed && !pdaIsClosing)
                {
                    if (Player.main.motorMode == Player.MotorMode.Seaglide)
                    {
                        __instance.viewModel.transform.localPosition = __instance.viewModel.transform.parent.worldToLocalMatrix.MultiplyPoint(forwardRefTransform.position + (forwardRefTransform.up * seaglideYOffset) + forwardRefTransform.forward * seaglideZOffset);
                    }
                    else if (Player.main.transform.position.y < Ocean.main.GetOceanLevel() + 1f && !Player.main.IsInside() && !Player.main.precursorOutOfWater)
                    {
                        //use the viewModel transform instead of forwardRef since the player body pitches while swimming.
                        string clipName = Player.main.playerAnimator.GetCurrentAnimatorClipInfo(0)[0].clip.name;
                        if (clipName == "Back_lean" || clipName == "view_surface_swim_forward")
                        {
                            __instance.viewModel.transform.localPosition = __instance.viewModel.transform.parent.worldToLocalMatrix.MultiplyPoint(forwardRefTransform.position + (__instance.viewModel.transform.up * (swimYOffset - 0.1f)) + __instance.viewModel.transform.forward * (swimZOffset - 0.1f));
                        }
                        else
                        {
                            __instance.viewModel.transform.localPosition = __instance.viewModel.transform.parent.worldToLocalMatrix.MultiplyPoint(forwardRefTransform.position + (__instance.viewModel.transform.up * swimYOffset) + __instance.viewModel.transform.forward * swimZOffset);
                        }
                    }
                    else if (!__instance.cinematicMode && Player.main.motorMode != Player.MotorMode.Vehicle && Player.main.motorMode != Player.MotorMode.Seaglide)
                    {
                        if (Player.main.movementSpeed == 0)
                        {
                            __instance.viewModel.transform.localPosition = __instance.viewModel.transform.parent.worldToLocalMatrix.MultiplyPoint(forwardRefTransform.position + Vector3.up * defaultYOffset + new Vector3(forwardRefTransform.forward.x, 0f, forwardRefTransform.forward.z).normalized *defaultZOffset);
                        }
                        else
                        {
                            __instance.viewModel.transform.localPosition = __instance.viewModel.transform.parent.worldToLocalMatrix.MultiplyPoint(forwardRefTransform.position + Vector3.up * defaultYOffset + new Vector3(forwardRefTransform.forward.x, 0f, forwardRefTransform.forward.z).normalized *(defaultZOffset - 0.1f));
                        }
                    }
                }
            }
        public static void MCC_Update_Postfix(MainCameraControl __instance)
        {
            Transform forwardReference = __instance.GetComponentInParent <PlayerController>().forwardReference;

            if (MainPatcher.pdaIsClosing && MainPatcher.pdaCloseTimer < MainPatcher.pdaCloseDelay)
            {
                MainPatcher.pdaCloseTimer += Time.deltaTime;
            }
            else if (MainPatcher.pdaCloseTimer >= MainPatcher.pdaCloseDelay || (MainPatcher.pdaIsClosing && Player.main.GetPDA().state == PDA.State.Opened))
            {
                MainPatcher.pdaIsClosing  = false;
                MainPatcher.pdaCloseTimer = 0f;
            }
            if (Player.main.GetPDA().state == PDA.State.Closing)
            {
                MainPatcher.pdaIsClosing = true;
            }
            if (Player.main.GetPDA().state == PDA.State.Closed && !MainPatcher.pdaIsClosing)
            {
                if (Player.main.motorMode == Player.MotorMode.Seaglide)
                {
                    __instance.viewModel.transform.localPosition = __instance.viewModel.transform.parent.worldToLocalMatrix.MultiplyPoint(forwardReference.position + forwardReference.up * MainPatcher.seaglideYOffset + forwardReference.forward * MainPatcher.seaglideZOffset);
                    return;
                }
#if SN1
                if (Player.main.transform.position.y < Ocean.main.GetOceanLevel() + 1f && !Player.main.IsInside() && !Player.main.precursorOutOfWater)
#elif BZ
                if (Player.main.transform.position.y < Ocean.GetOceanLevel() + 1f && !Player.main.IsInside() && !Player.main.forceWalkMotorMode)
#endif
                {
                    string name = Player.main.playerAnimator.GetCurrentAnimatorClipInfo(0)[0].clip.name;
                    if (name == "Back_lean" || name == "view_surface_swim_forward")
                    {
                        __instance.viewModel.transform.localPosition = __instance.viewModel.transform.parent.worldToLocalMatrix.MultiplyPoint(forwardReference.position + __instance.viewModel.transform.up * (MainPatcher.swimYOffset - 0.1f) + __instance.viewModel.transform.forward * (MainPatcher.swimZOffset - 0.1f));
                        return;
                    }
                    __instance.viewModel.transform.localPosition = __instance.viewModel.transform.parent.worldToLocalMatrix.MultiplyPoint(forwardReference.position + __instance.viewModel.transform.up * MainPatcher.swimYOffset + __instance.viewModel.transform.forward * MainPatcher.swimZOffset);
                    return;
                }
                else if (!__instance.cinematicMode && Player.main.motorMode != Player.MotorMode.Vehicle && Player.main.motorMode != Player.MotorMode.Seaglide)
                {
                    if (Player.main.movementSpeed == 0f)
                    {
                        __instance.viewModel.transform.localPosition = __instance.viewModel.transform.parent.worldToLocalMatrix.MultiplyPoint(forwardReference.position + Vector3.up * MainPatcher.defaultYOffset + new Vector3(forwardReference.forward.x, 0f, forwardReference.forward.z).normalized *MainPatcher.defaultZOffset);
                        return;
                    }
                    __instance.viewModel.transform.localPosition = __instance.viewModel.transform.parent.worldToLocalMatrix.MultiplyPoint(forwardReference.position + Vector3.up * MainPatcher.defaultYOffset + new Vector3(forwardReference.forward.x, 0f, forwardReference.forward.z).normalized *(MainPatcher.defaultZOffset - 0.1f));
                }
            }
        }
예제 #7
0
    // Use this for initialization
    void Start()
    {
        player            = GameObject.Find("player").GetComponent <PlayerMove>();
        cameraControl     = GameObject.Find("CameraDammy").GetComponent <CameraControl>();
        mainCameraControl = Camera.main.GetComponent <MainCameraControl>();
        talk = GameObject.Find("GameControlObject").GetComponent <TalkProcess>();

        /*animator = GameObject.Find("ActionUI").GetComponent<Animator>();
         *      pauseAnim = GameObject.Find("Pausemenu").GetComponent<Animator>();
         *      Button1 = GameObject.Find("Button1").GetComponent<Button>();
         *      if (GameObject.Find("ClearFlagObject") != null)
         *      {
         * //		stageClearProcess = GameObject.Find("ClearFlagObject").GetComponent<stageClearedFlag>();
         *      }*/
        /////////
        //match = Resources.Load("Prefab/GameMainObjects/Match") as GameObject ;
    }
예제 #8
0
        public static void moveCamera()
        {
            Vector2 myLookDelta = GameInput.GetLookDelta();

            if (myLookDelta == Vector2.zero)
            {
                myLookDelta.x = Input.GetAxis("ControllerAxis4");
                myLookDelta.y = -Input.GetAxis("ControllerAxis5");
            }

            MainCameraControl mainCam = MainCameraControl.main;

            mainCam.rotationX += myLookDelta.x;
            mainCam.rotationY += myLookDelta.y;
            mainCam.rotationX  = Mathf.Clamp(mainCam.rotationX, -100, 100);
            mainCam.rotationY  = Mathf.Clamp(mainCam.rotationY, mainCam.minimumY, mainCam.maximumY);

            //mainCam.cameraUPTransform.localEulerAngles = new Vector3(Mathf.Min(0f, -mainCam.rotationY), 0f, 0f);

            mainCam.transform.localEulerAngles = new Vector3(-mainCam.rotationY, mainCam.rotationX, 0f);
        }
예제 #9
0
        public static bool Prefix(MainCameraControl __instance, out Vector3 __state)
        {
            __state = __instance.viewModel.transform.localPosition;

            if (!SnapTurningOptions.EnableSnapTurning || Player.main.isPiloting)
            {
                return(true); //Enter vanilla method
            }

            UpdateFields();

            if (_isLookingUpOrDown)
            {
                return(false); //Disable looking up or down with the joystick
            }

            if (_shouldSnapTurn)
            {
                UpdatePlayerRotation();
                return(false); //Don't enter vanilla method if we snap turn
            }

            return(true);
        }
예제 #10
0
	void Awake()
	{
		Instance = this;
	}
예제 #11
0
 // Use this for initialization
 void Start()
 {
     flagsInStageManager = GameObject.Find("GameControlObject").GetComponent <FlagsInStageManager>();
     mainCameraControl   = GameObject.FindGameObjectWithTag("MainCamera").GetComponent <MainCameraControl>();
 }
예제 #12
0
 public static void Postfix(MainCameraControl __instance, Vector3 __state)
 {
     __instance.viewModel.transform.localPosition = __state;
 }
예제 #13
0
        public static bool Prefix(MainCameraControl __instance)
        {
            var mainCam = MainCameraControl.main;
            //var cameraToPlayerMan = CameraToPlayerManager.main;

            bool inVehicleNow = (Player.main.IsPilotingSeatruck() || Player.main.inExosuit);

            if (isInVehicle)
            {
                if (inVehicleNow)
                {
                    // do nothing
                }
                else
                {
                    isInVehicle = false;
                }
            }
            else
            {
                if (inVehicleNow)
                {
                    isInVehicle      = true;
                    isNewlyInVehicle = true;
                }
                else
                {
                    // do nothing
                }
            }

            if (!inVehicleNow)
            {
                if (releaseFlag)
                {
                    cameraRelinquish();
                    releaseFlag = false;
                }
                return(true);
            }
            releaseFlag = true;

            if (isNewlyInVehicle)
            {
                isNewlyInVehicle = false;
                //BasicText message = new BasicText();
                //message.ShowMessage("This Message Will Fade In 10 Seconds", 10);
            }

            if (Player.main.motorMode == Player.MotorMode.Seaglide)
            {
                // hack the controls
            }

            bool triggerState = (Input.GetAxisRaw("ControllerAxis3") > 0) || (Input.GetAxisRaw("ControllerAxis3") < 0);

            if (isTriggerDown)
            {
                if (triggerState)
                {
                    //do nothing
                }
                else
                {
                    isTriggerDown    = false;
                    isTriggerNewlyUp = true;
                }
            }
            else
            {
                if (triggerState)
                {
                    isTriggerDown      = true;
                    isTriggerNewlyDown = true;
                }
                else
                {
                    //do nothing
                }
            }

            void cameraRelinquish()
            {
                mainCam.ResetCamera();
                mainCam.cinematicMode         = false;
                mainCam.lookAroundMode        = true;
                FreeLookPatcher.isFreeLooking = false;
            }

            if (Input.GetKeyDown(FreeLookPatcher.Config.FreeLookKey) || isTriggerNewlyDown)
            {
                Debug.Log("FreeLook: button pressed. Taking control of the camera.");
                FreeLookPatcher.isFreeLooking = true;
                isTriggerNewlyDown            = false;

                resetCameraFlag = false;
                // invoke a camera vulnerability
                mainCam.cinematicMode  = true;
                mainCam.lookAroundMode = false;
                return(false);
            }
            else if (Input.GetKeyUp(FreeLookPatcher.Config.FreeLookKey) || isTriggerNewlyUp)
            {
                isTriggerNewlyUp = false;
                Debug.Log("FreeLook: button released. Relinquishing control of the camera.");
                resetCameraFlag = true;
            }
            if (!resetCameraFlag && (Input.GetKey(FreeLookPatcher.Config.FreeLookKey) || isTriggerDown))
            {
                resetCameraFlag = false;
                moveCamera();
                // adding oxygen is something vehicle.update would usually do,
                // so we do it naively here as well.
                // I'm not sure that Time.deltaTime seconds worth of oxygen per frame is the right amount...
                OxygenManager oxygenMgr = Player.main.oxygenMgr;
                oxygenMgr.AddOxygen(Time.deltaTime);
                return(false);
            }

            if (resetCameraFlag)
            {
                mainCam.rotationX = Mathf.SmoothDampAngle(mainCam.rotationX, 0f, ref xVelocity, smoothTime);
                mainCam.rotationY = Mathf.SmoothDampAngle(mainCam.rotationY, 0f, ref yVelocity, smoothTime);

                mainCam.camRotationX = mainCam.rotationX;
                mainCam.camRotationY = mainCam.rotationY;

                mainCam.transform.localEulerAngles = new Vector3(-mainCam.camRotationY, mainCam.camRotationX, 0);

                double threshold = 1;
                if (Mathf.Abs(mainCam.camRotationX) < threshold && Mathf.Abs(mainCam.camRotationY) < threshold)
                {
                    cameraRelinquish();
                    resetCameraFlag = false;
                }
                // need to retain control in order to finish snapping back to center
                return(false);
            }
            // nothing from the key and the camera has been reset, so we don't need control
            //cameraRelinquish();
            return(true);
        }
예제 #14
0
 static bool Prefix(MainCameraControl __instance)
 {
     __instance.cameraUPTransform.localPosition
         = new Vector3(__instance.cameraUPTransform.localPosition.x, __instance.cameraUPTransform.localPosition.y, 0f);
     return(false);
 }