/// <summary> /// Reads player input and sets the appropriate info for the movement startegy to use. /// </summary> private void ReadPlayerInput() { // Determine horizontal movement // First we attempt to use Input.GetAxisRaw in case the player is using a controller. // We use GetAxisRaw to avoid Unity's automatic smoothing to enable the player to stop on a dime. // Multiply the input by our movement speed to allow controller users to input analog movement horizontalMovement = Input.GetAxisRaw("Horizontal") * movementSpeed; // If no axis movement was detected, read the keys with out custom keybinding if (horizontalMovement == 0) { if (keyBinding.GetKey("Left") && !keyBinding.GetKey("Right")) { horizontalMovement = -movementSpeed; } else if (!keyBinding.GetKey("Left") && keyBinding.GetKey("Right")) { horizontalMovement = movementSpeed; } } // Determine if player wants to jump // We only want to change jump if it is already false, changing its value when its true can result in missed inputs if (!jump) { jump = keyBinding.GetKeyDown("Jump"); } // Check if the current animal should be switched, using the same method as with jumps if (!switchAnimal) { switchAnimal = keyBinding.GetKeyDown("Switch"); } }
public void LateUpdate() { // In the VAB if (vessel == null) { return; } if (sCurrentHandler == null) { sCurrentHandler = this; } if (sCurrentCamera != null) { if (sCurrentCamera.vessel != FlightGlobals.ActiveVessel) { Vector3d activeVesselPos = FlightGlobals.ActiveVessel.orbit.getRelativePositionAtUT(Planetarium.GetUniversalTime()) + FlightGlobals.ActiveVessel.orbit.referenceBody.position; Vector3d targetVesselPos = sCurrentCamera.vessel.orbit.getRelativePositionAtUT(Planetarium.GetUniversalTime()) + sCurrentCamera.vessel.orbit.referenceBody.position; sCameraDistance = (activeVesselPos - targetVesselPos).magnitude; if (sCameraDistance >= 2480) { LeaveCamera(); } } } if (CameraManager.Instance.currentCameraMode != CameraManager.CameraMode.Flight) { return; } #if true if (sActionFlags.deactivateCamera || CAMERA_RESET.GetKeyDown() || GameSettings.CAMERA_NEXT.GetKeyDown()) { LeaveCamera(); sActionFlags.deactivateCamera = false; } #endif if (sActionFlags.nextCamera || (sCurrentHandler == this && CAMERA_NEXT.GetKeyDown())) { CycleCamera(1); sActionFlags.nextCamera = false; } #if true if (sActionFlags.prevCamera || (sCurrentHandler == this && CAMERA_PREV.GetKeyDown())) { if (sCameras.IndexOf(sCurrentCamera) != -1) { CycleCamera(-1); sActionFlags.prevCamera = false; } else { DebugOutput(" 2"); CycleCamera(sCameras.Count); } } #endif /* * if (sCurrentCamera == this) * { * if (Input.GetKeyUp(KeyCode.Keypad8)) * { * cameraPosition += cameraUp * 0.1f; * } * if (Input.GetKeyUp(KeyCode.Keypad2)) * { * cameraPosition -= cameraUp * 0.1f; * } * if (Input.GetKeyUp(KeyCode.Keypad6)) * { * cameraPosition += cameraForward * 0.1f; * } * if (Input.GetKeyUp(KeyCode.Keypad4)) * { * cameraPosition -= cameraForward * 0.1f; * } * if (Input.GetKeyUp(KeyCode.Keypad7)) * { * cameraClip += 0.05f; * } * if (Input.GetKeyUp(KeyCode.Keypad1)) * { * cameraClip -= 0.05f; * } * if (Input.GetKeyUp(KeyCode.Keypad9)) * { * cameraFoV += 5; * } * if (Input.GetKeyUp(KeyCode.Keypad3)) * { * cameraFoV -= 5; * } * if (Input.GetKeyUp(KeyCode.KeypadMinus)) * { * print("Position: " + cameraPosition + " - Clip = " + cameraClip + " - FoV = " + cameraFoV); * } * } */ doOnUpdate(); }
void Update() { if (ADJUST_LOOK.GetKeyDown()) { adjustLook = true; } if (ADJUST_LOOK.GetKeyUp()) { adjustLook = false; } if (InternalCamera.Instance != null && InternalCamera.Instance.isActive) //checking if camera is IVA { if (!isIVA) { isIVA = true; } } else { if (isIVA) { isIVA = false; } } #region Chase(locked) mode if (FlightCamera.fetch.mode == FlightCamera.Modes.LOCKED && !MapView.MapIsEnabled && !FlightGlobals.ActiveVessel.isEVA) { Vector3 lookVector = Quaternion.Inverse(FlightGlobals.ActiveVessel.transform.rotation) * FlightGlobals.ActiveVessel.GetSrfVelocity(); //lookvector X is left/right velocity, Y is forward velocity, Z is up/down velocity Vector3 forwardVector = new Vector3(0f, 1f, 0f); Quaternion pitchAngleQ = Quaternion.FromToRotation(forwardVector, lookVector); //float lerpRate = Mathf.Clamp((float) FlightGlobals.ActiveVessel.srf_velocity.magnitude / 50f, 0f, 1f); float lerpRate; if (Time.time - timeCheck < 2) { lerpRate = 0.1f; } else { lerpRate = 1; } if (adjustLook) { snapHeading = FlightCamera.fetch.camHdg - (0 - pitchAngleQ.Roll()); snapPitch = FlightCamera.fetch.camPitch - (0 + pitchAngleQ.Pitch()); } if (defaultOn && defaultFiredMode != "CHASE") { enableChase = true; defaultFiredMode = "CHASE"; ScreenMessages.RemoveMessage(chaseOn); ScreenMessages.RemoveMessage(chaseOff); ScreenMessages.RemoveMessage(freeChaseOn); ScreenMessages.RemoveMessage(freeChaseOff); ScreenMessages.PostScreenMessage(chaseOn); timeCheck = Time.time; snapHeading = 0; snapPitch = defaultAngle * Mathf.Deg2Rad; //FlightCamera.fetch.SetFoV(setFov); } if (ENABLE_CHASE.GetKeyDown()) { if (enableChase) { ScreenMessages.RemoveMessage(chaseOn); ScreenMessages.RemoveMessage(chaseOff); ScreenMessages.RemoveMessage(freeChaseOn); ScreenMessages.RemoveMessage(freeChaseOff); ScreenMessages.PostScreenMessage(chaseOff); FlightCamera.fetch.SetFoV(FlightCamera.fetch.fovDefault); } if (!enableChase) { ScreenMessages.RemoveMessage(chaseOn); ScreenMessages.RemoveMessage(chaseOff); ScreenMessages.RemoveMessage(freeChaseOn); ScreenMessages.RemoveMessage(freeChaseOff); ScreenMessages.PostScreenMessage(chaseOn); timeCheck = Time.time; snapHeading = 0; snapPitch = defaultAngle * Mathf.Deg2Rad; //FlightCamera.fetch.SetFoV(setFov); } enableChase = !enableChase; } if (enableChase && FlightGlobals.ActiveVessel != null && !adjustLook) //runs continuously while in chase cam on an active vessel when not adjusting look angle { if (FlightGlobals.ActiveVessel.srf_velocity.magnitude > 0.5) { targetPitch = (0 + pitchAngleQ.Pitch() + snapPitch); FlightCamera.fetch.camPitch = Mathf.Lerp(FlightCamera.fetch.camPitch, targetPitch, lerpRate); targetHeading = (0 - pitchAngleQ.Roll() + snapHeading); FlightCamera.fetch.camHdg = Mathf.Lerp(FlightCamera.fetch.camHdg, targetHeading, lerpRate); } } } if (FlightCamera.fetch.mode != FlightCamera.Modes.LOCKED && enableChase) //runs once on switching out of chase cam { //setCam = false; enableChase = false; } #endregion #region Free chase mode if (FlightCamera.fetch.mode == FlightCamera.Modes.FREE && !MapView.MapIsEnabled && !FlightGlobals.ActiveVessel.isEVA) { Vessel v = FlightGlobals.ActiveVessel; Quaternion vesselRot = getSrfRotation(v); float headingRads = vesselRot.eulerAngles.y * Mathf.Deg2Rad; float pitchRads = ((vesselRot.eulerAngles.x > 180f) ? (360.0f - vesselRot.eulerAngles.x) : -vesselRot.eulerAngles.x) * Mathf.Deg2Rad; //cred to r4m0n float rollDegrees = ((vesselRot.eulerAngles.z > 180f) ? (vesselRot.eulerAngles.z - 360.0f) : vesselRot.eulerAngles.z); Vector3 lookVector = Quaternion.Inverse(FlightGlobals.ActiveVessel.transform.rotation) * FlightGlobals.ActiveVessel.GetSrfVelocity(); //lookvector X is left/right velocity, Y is forward velocity, Z is up/down velocity Vector3 forwardVector = new Vector3(0f, 1f, 0f); Quaternion rollAdjust = Quaternion.AngleAxis(rollDegrees, forwardVector); lookVector = rollAdjust * lookVector; Quaternion viewAngleQ = Quaternion.FromToRotation(forwardVector, lookVector); if (defaultOn && defaultFiredMode != "FREE") { enableFreeChase = true; defaultFiredMode = "FREE"; ScreenMessages.RemoveMessage(chaseOn); ScreenMessages.RemoveMessage(chaseOff); ScreenMessages.RemoveMessage(freeChaseOn); ScreenMessages.RemoveMessage(freeChaseOff); ScreenMessages.PostScreenMessage(freeChaseOn); snapHeading = 0; snapPitch = defaultAngle * Mathf.Deg2Rad; //FlightCamera.fetch.SetFoV(setFov); timeCheck = Time.time; } if (ENABLE_CHASE.GetKeyDown()) { if (enableFreeChase) { ScreenMessages.RemoveMessage(chaseOn); ScreenMessages.RemoveMessage(chaseOff); ScreenMessages.RemoveMessage(freeChaseOn); ScreenMessages.RemoveMessage(freeChaseOff); ScreenMessages.PostScreenMessage(freeChaseOff); FlightCamera.fetch.SetFoV(FlightCamera.fetch.fovDefault); } if (!enableFreeChase) { ScreenMessages.RemoveMessage(chaseOn); ScreenMessages.RemoveMessage(chaseOff); ScreenMessages.RemoveMessage(freeChaseOn); ScreenMessages.RemoveMessage(freeChaseOff); ScreenMessages.PostScreenMessage(freeChaseOn); snapHeading = 0; snapPitch = defaultAngle * Mathf.Deg2Rad; //FlightCamera.fetch.SetFoV(setFov); timeCheck = Time.time; } enableFreeChase = !enableFreeChase; } if (adjustLook) { if (!autoSnap) { if (!vtolMode) { snapPitch = FlightCamera.fetch.camPitch - (0 - pitchRads + (1f * viewAngleQ.Pitch())); //adjusted snapHeading = FlightCamera.fetch.camHdg - (headingRads - (1f * viewAngleQ.Roll())); //adjusted } else { snapPitch = FlightCamera.fetch.camPitch - (0 + Mathf.Clamp(viewAngleQ.Pitch() / 10, 0, 90f)); snapHeading = FlightCamera.fetch.camHdg - (headingRads - (viewAngleQ.Roll() / 10)); } if (Mathf.Abs(snapHeading) < 5 * Mathf.Deg2Rad) //snap heading straight if close enough { snapHeading = 0; } } else { snapHeading = 0; snapPitch = defaultAngle * Mathf.Deg2Rad; timeCheck = Time.time; } } float lerpRate; if (Time.time - timeCheck < 1 || v.srfSpeed < 90) { lerpRate = 0.1f; } else { lerpRate = 1; } if (enableFreeChase && FlightGlobals.ActiveVessel != null && !adjustLook) { if (FlightGlobals.ActiveVessel.srf_velocity.magnitude > 0.5) { if (lookVector.y < 35 && FlightGlobals.ActiveVessel.srfSpeed < 50)//vtol mode when fwd velocity is less than 50m/s { if (!vtolMode) { vtolMode = true; } lerpRate = 0.1f; FlightCamera.fetch.camPitch = Mathf.LerpAngle(FlightCamera.fetch.camPitch, (0 + Mathf.Clamp(viewAngleQ.Pitch() / 10, 0, 90f) + snapPitch), lerpRate); FlightCamera.fetch.camHdg = (Mathf.LerpAngle(FlightCamera.fetch.camHdg * Mathf.Rad2Deg, ((headingRads - (viewAngleQ.Roll() / 10) + snapHeading) * Mathf.Rad2Deg), lerpRate)) * Mathf.Deg2Rad; } else { if (vtolMode) { vtolMode = false; } FlightCamera.fetch.camPitch = Mathf.LerpAngle(FlightCamera.fetch.camPitch, 0 - pitchRads + viewAngleQ.Pitch() + snapPitch, lerpRate); //doesn't really need to be LerpAngle unless converted to degrees. FlightCamera.fetch.camHdg = (Mathf.LerpAngle(FlightCamera.fetch.camHdg * Mathf.Rad2Deg, (headingRads - viewAngleQ.Roll() + snapHeading) * Mathf.Rad2Deg, lerpRate)) * Mathf.Deg2Rad; } } } } if (FlightCamera.fetch.mode != FlightCamera.Modes.FREE && enableFreeChase) { enableFreeChase = false; } #endregion if (FlightCamera.fetch.mode == FlightCamera.Modes.AUTO) { if (disableAuto) { FlightCamera.fetch.setMode(FlightCamera.GetAutoModeForVessel(FlightGlobals.ActiveVessel)); if (defaultOn && FlightCamera.fetch.mode == FlightCamera.Modes.FREE) { enableFreeChase = true; } snapHeading = 0; snapPitch = defaultAngle * Mathf.Deg2Rad; } if (defaultFiredMode != "AUTO") { ScreenMessages.RemoveMessage(chaseOn); ScreenMessages.RemoveMessage(chaseOff); ScreenMessages.RemoveMessage(freeChaseOn); ScreenMessages.RemoveMessage(freeChaseOff); } } #region IVA /* * if(isIVA && !MapView.MapIsEnabled) * { * if(enableIVASnap) * { * adjustLookIVA = InternalCamera.Instance.mouseLocked; * if(adjustLookIVA) * { * if(SET_IVA_SNAP.GetKeyDown()) * { * snapIVARotation = InternalCamera.Instance.camera.transform.localRotation; * } * if(ADJUST_LOOK.GetKeyUp()) * { * InternalCamera.Instance.UnlockMouse(); * } * } * else * { * InternalCamera.Instance.camera.transform.localRotation = snapIVARotation; * } * } * } */ #endregion }
void Update() { Vessel pVessel = FlightGlobals.ActiveVessel; FlightCamera flightCam = FlightCamera.fetch; if (pVessel == null) { return; } if (pVessel.isEVA && !pVessel.packed && pVessel.loaded && pVessel.evaController != null) { if (pVessel != lastHookedVessel) { lastHookedVessel = pVessel; //KSPLog.print (string.Format("{0} switched to, hooking vessel for general hooks.", pVessel.GetName())); EVABoundFix.Hook(pVessel.evaController); } } if (FlightGlobals.ActiveVessel.isEVA && fpCameraManager.isFirstPerson && needCamReset) { fpCameraManager.isFirstPerson = false; fpCameraManager.CheckAndSetFirstPerson(pVessel); } needCamReset = false; if (HighLogic.LoadedSceneIsFlight && pVessel != null && pVessel.isActiveVessel && pVessel.state != Vessel.State.DEAD && !stopTouchingCamera) { if (forceEVA || fpCameraManager.isFirstPerson) { if (!fpCameraManager.isCameraProperlyPositioned(flightCam)) { fpCameraManager.isFirstPerson = false; } fpCameraManager.CheckAndSetFirstPerson(pVessel); } if (!forceEVA && pVessel.isEVA) { if (Input.GetKeyDown(toggleFirstPersonKey)) { if (!fpCameraManager.isFirstPerson) { fpCameraManager.saveCameraState(flightCam); fpCameraManager.CheckAndSetFirstPerson(pVessel); } else { fpCameraManager.resetCamera(pVessel); } } } fpCameraManager.updateGUI(); } if (fpCameraManager.isFirstPerson && resetivacamerabinding.GetKeyDown()) { fpCameraManager.viewToNeutral(); fpCameraManager.reorient(); } if (OnUpdate != null) { OnUpdate(this, null); } }
public void Update() { // In the VAB if (vessel == null) { return; } if (sCurrentHandler == null) { sCurrentHandler = this; } if (CameraManager.Instance.currentCameraMode != CameraManager.CameraMode.Flight) { return; } if (sActionFlags.deactivateCamera || CAMERA_RESET.GetKeyDown() || GameSettings.CAMERA_NEXT.GetKeyDown()) { LeaveCamera(); sActionFlags.deactivateCamera = false; } if (sActionFlags.nextCamera || (sCurrentHandler == this && CAMERA_NEXT.GetKeyDown())) { CycleCamera(1); sActionFlags.nextCamera = false; } if (sActionFlags.prevCamera || (sCurrentHandler == this && CAMERA_PREV.GetKeyDown())) { CycleCamera(-1); sActionFlags.prevCamera = false; } /* * if ((sCurrentCamera == this) && adjustMode) * { * if (Input.GetKeyUp(KeyCode.Keypad8)) * { * cameraPosition += cameraUp * 0.1f; * } * if (Input.GetKeyUp(KeyCode.Keypad2)) * { * cameraPosition -= cameraUp * 0.1f; * } * if (Input.GetKeyUp(KeyCode.Keypad6)) * { * cameraPosition += cameraForward * 0.1f; * } * if (Input.GetKeyUp(KeyCode.Keypad4)) * { * cameraPosition -= cameraForward * 0.1f; * } * if (Input.GetKeyUp(KeyCode.Keypad7)) * { * cameraClip += 0.05f; * } * if (Input.GetKeyUp(KeyCode.Keypad1)) * { * cameraClip -= 0.05f; * } * if (Input.GetKeyUp(KeyCode.Keypad9)) * { * cameraFoV += 5; * } * if (Input.GetKeyUp(KeyCode.Keypad3)) * { * cameraFoV -= 5; * } * if (Input.GetKeyUp(KeyCode.KeypadMinus)) * { * print("Position: " + cameraPosition + " - Clip = " + cameraClip + " - FoV = " + cameraFoV); * } * } */ }