private void UpdateFlightProperties(ControllerConfiguration config, FlightCtrlState state) { state.yawTrim = m_Yaw.GetTrim(); state.pitchTrim = m_Pitch.GetTrim(); state.rollTrim = m_Roll.GetTrim(); state.yaw = Utility.Clamp(state.yaw + m_Yaw.Update(), -1.0f, 1.0f); state.pitch = Utility.Clamp(state.pitch + m_Pitch.Update(), -1.0f, 1.0f); state.roll = Utility.Clamp(state.roll + m_Roll.Update(), -1.0f, 1.0f); state.X = Utility.Clamp(state.X + m_X.Update(), -1.0f, 1.0f); state.Y = Utility.Clamp(state.Y + m_Y.Update(), -1.0f, 1.0f); state.Z = Utility.Clamp(state.Z + m_Z.Update(), -1.0f, 1.0f); state.wheelSteerTrim = m_WheelSteer.GetTrim(); state.wheelThrottleTrim = m_WheelThrottle.GetTrim(); state.mainThrottle = Utility.Clamp(state.mainThrottle + m_Throttle.Update(), 0.0f, 1.0f); state.wheelSteer = Utility.Clamp(state.wheelSteer + m_WheelSteer.Update(), -1.0f, 1.0f); state.wheelThrottle = Utility.Clamp(state.wheelThrottle + m_WheelThrottle.Update(), 0.0f, 1.0f); FlightCamera.CamHdg += m_CameraHeading.Update() * config.cameraSensitivity; FlightCamera.CamPitch += m_CameraPitch.Update() * config.cameraSensitivity; if (FlightCamera.fetch != null) { FlightCamera.fetch.SetDistance(FlightCamera.fetch.Distance + m_CameraZoom.Update()); } }
public PresetEditorWindow(ControllerConfiguration controller, int editorId) { m_Controller = controller; m_EditorId = editorId; axisSnapshot = new float[controller.iface.GetAxesCount()]; inputLockHash = "PresetEditor " + m_Controller.wrapper.ToString() + " - " + m_Controller.controllerIndex.ToString(); }
private void UpdateAxes(ControllerConfiguration config, FlightCtrlState state) { var buttonsMask = config.iface.GetButtonsMask(); for (int i = 0; i < config.iface.GetAxesCount(); i++) { List <ContinuousAction> actions = config.GetCurrentPreset().GetContinuousBinding(i, buttonsMask); if (actions == null) { continue; } float axisState = config.iface.GetAxisState(i); foreach (var action in actions) { if (config.GetCurrentPreset().IsContinuousBindingInverted(action)) { axisState *= -1.0f; } if (axisState != 0.0f || action == ContinuousAction.Throttle || action == ContinuousAction.WheelThrottle) { EvaluateContinuousAction(config, action, axisState, state); } } } }
public PresetEditorWindow(ControllerConfiguration controller, int editorId) { m_Controller = controller; m_EditorId = editorId; axisSnapshot = new float[controller.iface.GetAxesCount()]; inputLockHash = "PresetEditor " + m_Controller.wrapper.ToString() + " - " + m_Controller.controllerIndex.ToString(); }
public ControllerConfigurationWindow(ControllerConfiguration controller, int editorId) { m_Controller = controller; m_EditorId = editorId; inputLockHash = "Controller Configuration (" + m_Controller.wrapper.ToString() + " - " + m_Controller.controllerIndex.ToString() + ")"; }
private void UpdateAxes(ControllerConfiguration config, FlightCtrlState state) { var buttonsMask = config.iface.GetButtonsMask(); for (int i = 0; i < config.iface.GetAxesCount(); i++) { List <ContinuousAction> actions = config.GetCurrentPreset().GetContinuousBinding(i, buttonsMask); if (actions == null) { continue; } float axisState = config.iface.GetAxisState(i); foreach (var action in actions) { var axisValue = axisState; if (config.GetCurrentPreset().IsContinuousBindingInverted(action)) { axisValue *= -1.0f; } throttleActive = true; if (!AdvancedFlyByWire.Instance.settings.m_ThrottleOverride && action == ContinuousAction.Throttle) { if (axisValue == last_m_throttle) { throttleActive = false; } else { EvaluateContinuousAction(config, action, axisValue, state); last_m_throttle = axisValue; } } wheelThrottleActive = true; if (!AdvancedFlyByWire.Instance.settings.m_ThrottleOverride && action == ContinuousAction.Throttle) { if (axisValue == m_lastWheelThrottle) { wheelThrottleActive = false; } else { m_lastWheelThrottle = axisValue; EvaluateContinuousAction(config, action, axisValue, state); } } if ((axisState != 0.0f && action != ContinuousAction.Throttle && action != ContinuousAction.WheelThrottle) || (AdvancedFlyByWire.Instance.settings.m_ThrottleOverride && (action == ContinuousAction.Throttle || action == ContinuousAction.WheelThrottle))) { EvaluateContinuousAction(config, action, axisValue, state); } } } }
public void ActivateController(InputWrapper wrapper, int controllerIndex, IController.ButtonPressedCallback pressedCallback, IController.ButtonReleasedCallback releasedCallback) { foreach (var config in controllers) { if (config.wrapper == wrapper && config.controllerIndex == controllerIndex) { config.isEnabled = true; return; } } var controller = new ControllerConfiguration(); controller.wrapper = wrapper; controller.controllerIndex = controllerIndex; if (Utility.CheckXInputSupport() && wrapper == InputWrapper.XInput) { #if !LINUX controller.iface = new XInputController(controller.controllerIndex); #endif } else if (Utility.CheckSDLSupport() && wrapper == InputWrapper.SDL) { controller.iface = new SDLController(controller.controllerIndex); } /*else if (Utility.CheckSharpDXSupport() && wrapper == InputWrapper.DirectInput) * { #if !LINUX * controller.iface = new DirectXController(controller.controllerIndex); #endif * }*/ else if (wrapper == InputWrapper.KeyboardMouse) { controller.iface = new KeyboardMouseController(); } else { // invalid configuration, bail out.. return; } controller.SetManualDeadZones(controller.manualDeadZones); controller.iface.analogEvaluationCurve = CurveFactory.Instantiate(controller.analogInputCurve); controller.iface.buttonPressedCallback = pressedCallback; controller.iface.buttonReleasedCallback = releasedCallback; controller.presets = DefaultControllerPresets.GetDefaultPresets(controller.iface); controller.currentPreset = 0; controllers.Add(controller); ScreenMessages.PostScreenMessage("CONTROLLER: " + controller.iface.GetControllerName(), 1.0f, ScreenMessageStyle.UPPER_CENTER); }
public void ActivateController(InputWrapper wrapper, int controllerIndex, IController.ButtonPressedCallback pressedCallback, IController.ButtonReleasedCallback releasedCallback) { foreach (var config in controllers) { if (config.wrapper == wrapper && config.controllerIndex == controllerIndex) { return; } } ControllerConfiguration controller = new ControllerConfiguration(); controller.wrapper = wrapper; controller.controllerIndex = controllerIndex; if (Utility.CheckXInputSupport() && wrapper == InputWrapper.XInput) { #if !LINUX controller.iface = new XInputController(controller.controllerIndex); #endif } else if (Utility.CheckSDLSupport() && wrapper == InputWrapper.SDL) { controller.iface = new SDLController(controller.controllerIndex); } else if (wrapper == InputWrapper.KeyboardMouse) { controller.iface = new KeyboardMouseController(); } else { // invalid configuration, bail out.. return; } controller.SetTreatHatsAsButtons(controller.treatHatsAsButtons); controller.iface.analogEvaluationCurve = CurveFactory.Instantiate(controller.analogInputCurve); controller.iface.buttonPressedCallback = new IController.ButtonPressedCallback(pressedCallback); controller.iface.buttonReleasedCallback = new IController.ButtonReleasedCallback(releasedCallback); controller.presets = DefaultControllerPresets.GetDefaultPresets(controller.iface); controller.currentPreset = 0; controllers.Add(controller); ScreenMessages.PostScreenMessage("CONTROLLER: " + controller.iface.GetControllerName(), 1.0f, ScreenMessageStyle.UPPER_CENTER); }
public void ActivateController(InputWrapper wrapper, int controllerIndex, IController.ButtonPressedCallback pressedCallback, IController.ButtonReleasedCallback releasedCallback) { foreach (var config in controllers) { if (config.wrapper == wrapper && config.controllerIndex == controllerIndex) { return; } } ControllerConfiguration controller = new ControllerConfiguration(); controller.wrapper = wrapper; controller.controllerIndex = controllerIndex; if (Utility.CheckXInputSupport() && wrapper == InputWrapper.XInput) { controller.iface = new XInputController(controller.controllerIndex); } else if (Utility.CheckSDLSupport() && wrapper == InputWrapper.SDL) { controller.iface = new SDLController(controller.controllerIndex); } else if (wrapper == InputWrapper.KeyboardMouse) { controller.iface = new KeyboardMouseController(); } else { // invalid configuration, bail out.. return; } controller.SetTreatHatsAsButtons(controller.treatHatsAsButtons); controller.iface.analogEvaluationCurve = CurveFactory.Instantiate(controller.analogInputCurve); controller.iface.buttonPressedCallback = new IController.ButtonPressedCallback(pressedCallback); controller.iface.buttonReleasedCallback = new IController.ButtonReleasedCallback(releasedCallback); controller.presets = DefaultControllerPresets.GetDefaultPresets(controller.iface); controller.currentPreset = 0; controllers.Add(controller); ScreenMessages.PostScreenMessage("CONTROLLER: " + controller.iface.GetControllerName(), 1.0f, ScreenMessageStyle.UPPER_CENTER); }
private void UpdateAxes(ControllerConfiguration config, FlightCtrlState state) { for (int i = 0; i < config.iface.GetAxesCount(); i++) { List <ContinuousAction> actions = config.GetCurrentPreset().GetContinuousBinding(i, config.iface.GetButtonsMask()); if (actions == null) { continue; } foreach (var action in actions) { float input = config.iface.GetAxisState(i); if (input != 0.0f || action == ContinuousAction.Throttle) { EvaluateContinuousAction(config, action, config.iface.GetAxisState(i), state); } } } }
private void UpdateFlightProperties(ControllerConfiguration config, FlightCtrlState state) { state.yawTrim = m_Yaw.GetTrim(); state.pitchTrim = m_Pitch.GetTrim(); state.rollTrim = m_Roll.GetTrim(); float precisionModeFactor = AdvancedFlyByWire.Instance.GetPrecisionModeFactor(); state.yaw = Utility.Clamp(state.yaw + m_Yaw.Update() * precisionModeFactor, -1.0f, 1.0f); state.pitch = Utility.Clamp(state.pitch + m_Pitch.Update() * precisionModeFactor, -1.0f, 1.0f); state.roll = Utility.Clamp(state.roll + m_Roll.Update() * precisionModeFactor, -1.0f, 1.0f); state.X = Utility.Clamp(state.X + m_X.Update(), -1.0f, 1.0f); state.Y = Utility.Clamp(state.Y + m_Y.Update(), -1.0f, 1.0f); state.Z = Utility.Clamp(state.Z + m_Z.Update(), -1.0f, 1.0f); state.wheelSteerTrim = m_WheelSteer.GetTrim(); state.wheelThrottleTrim = m_WheelThrottle.GetTrim(); state.mainThrottle = Utility.Clamp(state.mainThrottle + m_Throttle.Update(), 0.0f, 1.0f); state.wheelSteer = Utility.Clamp(state.wheelSteer + m_WheelSteer.Update(), -1.0f, 1.0f); state.wheelThrottle = Utility.Clamp(state.wheelThrottle + m_WheelThrottle.Update(), -1.0f, 1.0f); }
public void EvaluateDiscreteAction(ControllerConfiguration controller, DiscreteAction action, FlightCtrlState state) { KerbalEVA eva = null; if (FlightGlobals.ActiveVessel.isEVA) { eva = FlightGlobals.ActiveVessel.GetComponent <KerbalEVA>(); } switch (action) { case DiscreteAction.None: return; case DiscreteAction.YawPlus: m_Yaw.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.YawMinus: m_Yaw.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.PitchPlus: m_Pitch.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.PitchMinus: m_Pitch.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.RollPlus: m_Roll.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.RollMinus: m_Roll.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.XPlus: m_X.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.XMinus: m_X.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.YPlus: m_Y.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.YMinus: m_Y.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.ZPlus: m_Z.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.ZMinus: m_Z.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.ThrottlePlus: m_Throttle.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.ThrottleMinus: m_Throttle.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.Stage: Staging.ActivateNextStage(); return; case DiscreteAction.Gear: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Gear); return; case DiscreteAction.Light: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Light); return; case DiscreteAction.RCS: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.RCS); return; case DiscreteAction.SAS: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.SAS); return; case DiscreteAction.Brakes: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Brakes); return; case DiscreteAction.Abort: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Abort); return; case DiscreteAction.Custom01: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom01); return; case DiscreteAction.Custom02: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom02); return; case DiscreteAction.Custom03: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom03); return; case DiscreteAction.Custom04: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom04); return; case DiscreteAction.Custom05: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom05); return; case DiscreteAction.Custom06: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom06); return; case DiscreteAction.Custom07: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom07); return; case DiscreteAction.Custom08: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom08); return; case DiscreteAction.Custom09: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom09); return; case DiscreteAction.Custom10: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom10); return; case DiscreteAction.EVAToggleJetpack: if (eva != null) { eva.JetpackDeployed = !eva.JetpackDeployed; } return; case DiscreteAction.EVAToggleHeadlamps: if (eva != null) { eva.lampOn = !eva.lampOn; } return; case DiscreteAction.CutThrottle: m_Throttle.SetValue(-state.mainThrottle); return; case DiscreteAction.FullThrottle: m_Throttle.SetValue(1.0f - state.mainThrottle); return; case DiscreteAction.NextPreset: if (controller.currentPreset >= controller.presets.Count - 1) { return; } controller.currentPreset++; ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.UPPER_CENTER); return; case DiscreteAction.PreviousPreset: if (controller.currentPreset <= 0) { return; } controller.currentPreset--; ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.UPPER_CENTER); return; case DiscreteAction.CyclePresets: controller.currentPreset++; if (controller.currentPreset >= controller.presets.Count) { controller.currentPreset = 0; } ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.LOWER_CENTER); return; case DiscreteAction.CameraZoomPlus: m_CameraZoom.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraZoomMinus: m_CameraZoom.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.CameraXPlus: m_CameraHeading.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraXMinus: m_CameraHeading.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.CameraYPlus: m_CameraPitch.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraYMinus: m_CameraPitch.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.OrbitMapToggle: if (!MapView.MapIsEnabled) { MapView.EnterMapView(); } else { MapView.ExitMapView(); } return; case DiscreteAction.TimeWarpPlus: WarpController.IncreaseWarp(); return; case DiscreteAction.TimeWarpMinus: WarpController.DecreaseWarp(); return; case DiscreteAction.PhysicsTimeWarpPlus: WarpController.IncreasePhysicsWarp(); return; case DiscreteAction.PhysicsTimeWarpMinus: WarpController.DecreasePhysicsWarp(); return; case DiscreteAction.NavballToggle: if (MapView.MapIsEnabled && MapView.fetch != null) { MapView.fetch.maneuverModeToggle.OnPress.Invoke(); } return; case DiscreteAction.IVAViewToggle: if (CameraManager.Instance != null) { CameraManager.Instance.SetCameraIVA(); } return; case DiscreteAction.CameraViewToggle: if (FlightCamera.fetch != null) { FlightCamera.fetch.SetNextMode(); } return; case DiscreteAction.SASHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.SAS, true); return; case DiscreteAction.LockStage: if (FlightInputHandler.fetch != null) { FlightInputHandler.fetch.stageLock = !FlightInputHandler.fetch.stageLock; } return; case DiscreteAction.TogglePrecisionControls: if (FlightInputHandler.fetch != null) { FlightInputHandler.fetch.precisionMode = !FlightInputHandler.fetch.precisionMode; } return; case DiscreteAction.ResetTrim: m_Yaw.SetTrim(0.0f); m_Pitch.SetTrim(0.0f); m_Roll.SetTrim(0.0f); state.ResetTrim(); return; } }
private void UpdateAxes(ControllerConfiguration config, FlightCtrlState state) { var buttonsMask = config.iface.GetButtonsMask(); for (int i = 0; i < config.iface.GetAxesCount(); i++) { List<ContinuousAction> actions = config.GetCurrentPreset().GetContinuousBinding(i, buttonsMask); if (actions == null) { continue; } float axisState = config.iface.GetAxisState(i); foreach (var action in actions) { if (config.GetCurrentPreset().IsContinuousBindingInverted(action)) { axisState *= -1.0f; } if (axisState != 0.0f || action == ContinuousAction.Throttle || action == ContinuousAction.WheelThrottle) { EvaluateContinuousAction(config, action, axisState, state); } } } }
public void UpdateEVAFlightProperties(ControllerConfiguration config, FlightCtrlState state) { if (!FlightGlobals.ActiveVessel.isEVA) { return; } KerbalEVA eva = GetKerbalEVA(); if (this.m_autoRunning) { state.Z = 1f; } if (!state.isNeutral) { Vector3 moveDirection = Vector3.zero; Vector3 ladderDirection = Vector3.zero; //Debug.Log("State: " + eva.fsm.currentStateName + " (< " + eva.fsm.lastEventName + ")"); //Debug.Log("MovementMode: " + eva.CharacterFrameMode); //Debug.Log("Landed? " + eva.part.GroundContact + ", " + eva.vessel.LandedOrSplashed + ", " + eva.vessel.Landed); if (state.Y != 0) { moveDirection += (!eva.CharacterFrameMode ? eva.fUp : eva.transform.up) * state.Y; ladderDirection += state.Y > 0 ? eva.transform.up : -eva.transform.up; } if (state.X != 0) { moveDirection += (!eva.CharacterFrameMode ? eva.fRgt : eva.transform.right) * state.X; ladderDirection += (state.X > 0 ? eva.transform.right : -eva.transform.right); } if (state.Z != 0) { moveDirection += (!eva.CharacterFrameMode ? eva.fFwd : eva.transform.forward) * state.Z; ladderDirection += (state.Z > 0 ? eva.transform.up : -eva.transform.up); } if (eva.vessel.LandedOrSplashed && !eva.JetpackDeployed && !eva.OnALadder && !eva.isRagdoll) { float moveSpeed = moveDirection.magnitude; // Decrease max moveSpeed when not moving in a forwards direction. if (Vector3.Angle(moveDirection, eva.transform.forward) > 45) { moveSpeed = Mathf.Clamp(moveSpeed, 0, 0.25f); } this.SetMoveSpeed(moveSpeed); } // We disable "Run/Ladder/Swim Stop" check while moving. if (eva.OnALadder && (state.Y != 0 || state.Z != 0)) { DisableLadderStopCondition(eva); } if (eva.vessel.Splashed && (state.X != 0 || state.Z != 0)) { DisableSwimStopCondition(eva); } //Debug.Log("Runspeed: " + moveDirection.magnitude); moveDirection.Normalize(); //Debug.Log("MoveDirection: " + moveDirection); //Debug.Log("LadderDirection: "+ ladderDirection); this.vectorFields[0].SetValue(eva, moveDirection); //vector3_0 = MoveDirection this.vectorFields[2].SetValue(eva, moveDirection); //vector3_2 = JetpackDirection this.vectorFields[6].SetValue(eva, ladderDirection); //vector3_6 = LadderDirection Quaternion rotation = Quaternion.identity; rotation *= Quaternion.AngleAxis(eva.turnRate * state.pitch * EVARotationStep * Time.deltaTime, -eva.transform.right); rotation *= Quaternion.AngleAxis(eva.turnRate * state.yaw * EVARotationStep * Time.deltaTime, eva.transform.up); rotation *= Quaternion.AngleAxis(eva.turnRate * state.roll * EVARotationStep * Time.deltaTime, -eva.transform.forward); if (rotation != Quaternion.identity) { this.vectorFields[8].SetValue(eva, rotation * (Vector3)this.vectorFields[8].GetValue(eva)); this.vectorFields[13].SetValue(eva, rotation * (Vector3)this.vectorFields[13].GetValue(eva)); } if (!moveDirection.IsZero() && !eva.OnALadder) { if (eva.CharacterFrameMode) { this.vectorFields[8].SetValue(eva, eva.fFwd); //vector3_8 this.vectorFields[13].SetValue(eva, eva.fUp); //vector3_13 } else { this.vectorFields[8].SetValue(eva, moveDirection); //vector3_8 this.vectorFields[13].SetValue(eva, eva.fUp); //vector3_13 } } } else { ReEnableStopConditions(eva); } }
void DoMainWindow(int index) { GUI.DragWindow(new Rect(0, 0, 10000, 20)); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("X", GUILayout.Height(16))) { m_UIActive = false; InputLockManager.RemoveControlLock("AdvancedFlyByWireMainWindow"); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Use stock skin"); m_UseKSPSkin = GUILayout.Toggle(m_UseKSPSkin, ""); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Use old presets editor"); m_UseOldPresetsWindow = GUILayout.Toggle(m_UseOldPresetsWindow, ""); GUILayout.FlexibleSpace(); if (GUILayout.Button("Save configuration")) { SaveState(null); } GUILayout.EndHorizontal(); m_ScrollPosition = GUILayout.BeginScrollView(m_ScrollPosition); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label("Controllers"); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); var controllers = IController.EnumerateAllControllers(); foreach (var controller in controllers) { GUILayout.BeginHorizontal(); ControllerConfiguration config = m_Configuration.GetConfigurationByControllerType(controller.Key, controller.Value.Key); bool isEnabled = config != null && config.iface != null; bool newIsEnabled = GUILayout.Toggle(isEnabled, ""); GUILayout.Label(controller.Value.Value); GUILayout.FlexibleSpace(); if (!isEnabled && newIsEnabled) { isEnabled = true; m_Configuration.ActivateController ( controller.Key, controller.Value.Key, new IController.ButtonPressedCallback(ButtonPressedCallback), new IController.ButtonReleasedCallback(ButtonReleasedCallback) ); } else if (isEnabled && !newIsEnabled) { m_Configuration.DeactivateController(controller.Key, controller.Value.Key); } if (!isEnabled || config.presetEditorOpen) { GUI.enabled = false; } if (GUILayout.Button("Presets", GUILayout.Height(32))) { if (m_UseOldPresetsWindow) { m_PresetEditors.Add(new PresetEditorWindow(config, m_PresetEditors.Count)); } else { m_PresetEditors.Add(new PresetEditorWindowNG(config, m_PresetEditors.Count)); } config.presetEditorOpen = true; } if (isEnabled) { GUI.enabled = true; } if (!isEnabled || config.controllerConfigurationOpen) { GUI.enabled = false; } if (GUILayout.Button("Configuration", GUILayout.Height(32))) { m_ControllerTests.Add(new ControllerConfigurationWindow(config, m_ControllerTests.Count)); config.controllerConfigurationOpen = true; } if (isEnabled) { GUI.enabled = true; } GUILayout.EndHorizontal(); if (isEnabled) { GUILayout.Space(4); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label("Preset: " + config.GetCurrentPreset().name); if (config.currentPreset <= 0) { GUI.enabled = false; } if (GUILayout.Button("<", GUILayout.Width(32))) { config.currentPreset--; } GUI.enabled = true; GUILayout.Space(4); if (config.currentPreset >= config.presets.Count - 1) { GUI.enabled = false; } if (GUILayout.Button(">", GUILayout.Width(32))) { config.currentPreset++; } GUI.enabled = true; GUILayout.EndHorizontal(); } GUILayout.Space(24); GUI.enabled = true; } GUILayout.EndScrollView(); }
public void EvaluateDiscreteAction(ControllerConfiguration controller, DiscreteAction action, FlightCtrlState state) { switch (action) { case DiscreteAction.None: return; case DiscreteAction.YawPlus: m_Yaw.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.YawMinus: m_Yaw.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.PitchPlus: m_Pitch.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.PitchMinus: m_Pitch.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.PitchTrimPlus: m_Pitch.SetTrim(Utility.Clamp(m_Pitch.GetTrim() + controller.discreteActionStep, -1.0f, 1.0f)); return; case DiscreteAction.PitchTrimMinus: m_Pitch.SetTrim(Utility.Clamp(m_Pitch.GetTrim() - controller.discreteActionStep, -1.0f, 1.0f)); return; case DiscreteAction.RollPlus: m_Roll.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.RollMinus: m_Roll.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.XPlus: m_X.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.XMinus: m_X.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.YPlus: m_Y.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.YMinus: m_Y.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.ZPlus: m_Z.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.ZMinus: m_Z.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.ThrottlePlus: m_Throttle.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.ThrottleMinus: m_Throttle.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.CutThrottle: m_Throttle.SetValue(-state.mainThrottle); return; case DiscreteAction.FullThrottle: m_Throttle.SetValue(1.0f - state.mainThrottle); return; case DiscreteAction.NextPreset: if (controller.currentPreset >= controller.presets.Count - 1) { return; } controller.currentPreset++; ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.UPPER_CENTER); return; case DiscreteAction.PreviousPreset: if (controller.currentPreset <= 0) { return; } controller.currentPreset--; ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.UPPER_CENTER); return; case DiscreteAction.CyclePresets: controller.currentPreset++; if (controller.currentPreset >= controller.presets.Count) { controller.currentPreset = 0; } ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.LOWER_CENTER); return; case DiscreteAction.CameraZoomPlus: m_CameraZoom.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraZoomMinus: m_CameraZoom.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.CameraXPlus: m_CameraHeading.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraXMinus: m_CameraHeading.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.CameraYPlus: m_CameraPitch.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraYMinus: m_CameraPitch.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.OrbitMapToggle: if (!MapView.MapIsEnabled) { MapView.EnterMapView(); } else { MapView.ExitMapView(); } return; case DiscreteAction.TimeWarpPlus: WarpController.IncreaseWarp(); return; case DiscreteAction.TimeWarpMinus: WarpController.DecreaseWarp(); return; case DiscreteAction.PhysicsTimeWarpPlus: WarpController.IncreasePhysicsWarp(); return; case DiscreteAction.PhysicsTimeWarpMinus: WarpController.DecreasePhysicsWarp(); return; case DiscreteAction.StopWarp: WarpController.StopWarp(); return; case DiscreteAction.NavballToggle: if (MapView.MapIsEnabled && MapView.fetch != null) { // MapView.fetch.maneuverModeToggle.OnPress.Invoke(); } return; case DiscreteAction.IVAViewToggle: if (CameraManager.Instance != null) { CameraManager.Instance.SetCameraIVA(); } return; case DiscreteAction.CameraViewToggle: if (FlightCamera.fetch != null) { FlightCamera.fetch.SetNextMode(); } return; case DiscreteAction.SASHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.SAS, true); return; case DiscreteAction.SASStabilityAssist: setAutopilotMode(VesselAutopilot.AutopilotMode.StabilityAssist, 0); return; case DiscreteAction.SASPrograde: setAutopilotMode(VesselAutopilot.AutopilotMode.Prograde, 1); return; case DiscreteAction.SASRetrograde: setAutopilotMode(VesselAutopilot.AutopilotMode.Retrograde, 2); return; case DiscreteAction.SASNormal: setAutopilotMode(VesselAutopilot.AutopilotMode.Normal, 3); return; case DiscreteAction.SASAntinormal: setAutopilotMode(VesselAutopilot.AutopilotMode.Antinormal, 4); return; case DiscreteAction.SASRadialIn: setAutopilotMode(VesselAutopilot.AutopilotMode.RadialIn, 5); return; case DiscreteAction.SASRadialOut: setAutopilotMode(VesselAutopilot.AutopilotMode.RadialOut, 6); return; case DiscreteAction.SASManeuver: setAutopilotMode(VesselAutopilot.AutopilotMode.Maneuver, 7); return; case DiscreteAction.SASTarget: setAutopilotMode(VesselAutopilot.AutopilotMode.Target, 8); return; case DiscreteAction.SASAntiTarget: setAutopilotMode(VesselAutopilot.AutopilotMode.AntiTarget, 9); return; case DiscreteAction.SASManeuverOrTarget: if (!setAutopilotMode(VesselAutopilot.AutopilotMode.Maneuver, 7)) { setAutopilotMode(VesselAutopilot.AutopilotMode.Target, 8); } ; return; case DiscreteAction.TogglePrecisionControls: if (FlightInputHandler.fetch != null) { FlightInputHandler.fetch.precisionMode = !FlightInputHandler.fetch.precisionMode; GameEvents.Input.OnPrecisionModeToggle.Fire(FlightInputHandler.fetch.precisionMode); } return; case DiscreteAction.ResetTrim: m_Yaw.SetTrim(0.0f); m_Pitch.SetTrim(0.0f); m_Roll.SetTrim(0.0f); return; case DiscreteAction.IVANextCamera: CameraController.Instance.NextIVACamera(); return; case DiscreteAction.IVALookWindow: CameraController.Instance.FocusIVAWindow(); return; } if (m_DisableVesselControls) { return; } // all other actions switch (action) { case DiscreteAction.Stage: KSP.UI.Screens.StageManager.ActivateNextStage(); return; case DiscreteAction.Gear: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Gear); return; case DiscreteAction.Light: EVAController.Instance.ToggleHeadlamp(); FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Light); return; case DiscreteAction.RCS: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.RCS); return; case DiscreteAction.SAS: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.SAS); return; case DiscreteAction.Brakes: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Brakes); return; case DiscreteAction.BrakesHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.Brakes, true); return; case DiscreteAction.Abort: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Abort); return; case DiscreteAction.Custom01: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom01); return; case DiscreteAction.Custom02: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom02); return; case DiscreteAction.Custom03: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom03); return; case DiscreteAction.Custom04: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom04); return; case DiscreteAction.Custom05: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom05); return; case DiscreteAction.Custom06: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom06); return; case DiscreteAction.Custom07: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom07); return; case DiscreteAction.Custom08: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom08); return; case DiscreteAction.Custom09: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom09); return; case DiscreteAction.Custom10: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom10); return; case DiscreteAction.SASHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.SAS, true); return; case DiscreteAction.LockStage: if (FlightInputHandler.fetch != null) { FlightInputHandler.fetch.stageLock = !FlightInputHandler.fetch.stageLock; } return; case DiscreteAction.EVAInteract: EVAController.Instance.DoInteract(); return; case DiscreteAction.EVAJump: EVAController.Instance.DoJump(); return; case DiscreteAction.EVAToggleJetpack: EVAController.Instance.ToggleJetpack(); return; case DiscreteAction.EVAAutoRunToggle: EVAController.Instance.ToggleAutorun(); return; case DiscreteAction.EVAPlantFlag: EVAController.Instance.DoPlantFlag(); return; } }
public void EvaluateDiscreteActionRelease(ControllerConfiguration controller, DiscreteAction action, FlightCtrlState state) { switch (action) { case DiscreteAction.None: return; case DiscreteAction.YawPlus: m_Yaw.SetIncrement(0); return; case DiscreteAction.YawMinus: m_Yaw.SetIncrement(0); return; case DiscreteAction.PitchPlus: m_Pitch.SetIncrement(0); return; case DiscreteAction.PitchMinus: m_Pitch.SetIncrement(0); return; case DiscreteAction.RollPlus: m_Roll.SetIncrement(0); return; case DiscreteAction.RollMinus: m_Roll.SetIncrement(0); return; case DiscreteAction.XPlus: m_X.SetIncrement(0); return; case DiscreteAction.XMinus: m_X.SetIncrement(0); return; case DiscreteAction.YPlus: m_Y.SetIncrement(0); return; case DiscreteAction.YMinus: m_Y.SetIncrement(0); return; case DiscreteAction.ZPlus: m_Z.SetIncrement(0); return; case DiscreteAction.ZMinus: m_Z.SetIncrement(0); return; case DiscreteAction.ThrottlePlus: m_Throttle.SetIncrement(0); return; case DiscreteAction.ThrottleMinus: m_Throttle.SetIncrement(0); return; case DiscreteAction.CameraZoomPlus: m_CameraZoom.SetIncrement(0); return; case DiscreteAction.CameraZoomMinus: m_CameraZoom.SetIncrement(0); return; case DiscreteAction.CameraXPlus: m_CameraHeading.SetIncrement(0); return; case DiscreteAction.CameraXMinus: m_CameraHeading.SetIncrement(0); return; case DiscreteAction.CameraYPlus: m_CameraPitch.SetIncrement(0); return; case DiscreteAction.CameraYMinus: m_CameraPitch.SetIncrement(0); return; } if (m_DisableVesselControls) { return; } switch (action) { case DiscreteAction.SASHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.SAS, false); return; case DiscreteAction.BrakesHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.Brakes, false); return; } }
public void EvaluateContinuousAction(ControllerConfiguration controller, ContinuousAction action, float value, FlightCtrlState state) { switch (action) { case ContinuousAction.None: return; case ContinuousAction.Yaw: m_Yaw.SetValue(value); return; case ContinuousAction.NegativeYaw: m_Yaw.SetValue(-value); return; case ContinuousAction.YawTrim: m_Yaw.SetTrim(Utility.Clamp(m_Yaw.GetTrim() + value, -1.0f, 1.0f)); return; case ContinuousAction.Pitch: m_Pitch.SetValue(value); return; case ContinuousAction.NegativePitch: m_Pitch.SetValue(-value); return; case ContinuousAction.PitchTrim: m_Pitch.SetTrim(Utility.Clamp(m_Pitch.GetTrim() + value, -1.0f, 1.0f)); return; case ContinuousAction.Roll: m_Roll.SetValue(value); return; case ContinuousAction.NegativeRoll: m_Roll.SetValue(-value); return; case ContinuousAction.RollTrim: m_Roll.SetTrim(Utility.Clamp(m_Roll.GetTrim() + value, -1.0f, 1.0f)); return; case ContinuousAction.X: m_X.SetValue(value); return; case ContinuousAction.NegativeX: m_X.SetValue(-value); return; case ContinuousAction.Y: m_Y.SetValue(value); return; case ContinuousAction.NegativeY: m_Y.SetValue(-value); return; case ContinuousAction.Z: m_Z.SetValue(value); return; case ContinuousAction.NegativeZ: m_Z.SetValue(-value); return; case ContinuousAction.Throttle: m_Throttle.SetMinMaxValues(-state.mainThrottle, 1.0f - state.mainThrottle); m_Throttle.SetValue(value - state.mainThrottle); return; case ContinuousAction.ThrottleIncrement: m_Throttle.Increment(value * controller.incrementalActionSensitivity); return; case ContinuousAction.ThrottleDecrement: m_Throttle.Increment(-value * controller.incrementalActionSensitivity); return; case ContinuousAction.WheelThrottle: m_WheelThrottle.SetMinMaxValues(-state.wheelThrottle, 1.0f - state.wheelThrottle); m_WheelThrottle.SetValue(value); return; case ContinuousAction.WheelSteer: m_WheelSteer.SetValue(value); return; case ContinuousAction.WheelThrottleTrim: m_WheelThrottle.SetTrim(Utility.Clamp(m_WheelThrottle.GetTrim() + value, 0.0f, 1.0f)); return; case ContinuousAction.WheelSteerTrim: m_WheelSteer.SetTrim(Utility.Clamp(m_WheelSteer.GetTrim() + value, -1.0f, 1.0f)); return; case ContinuousAction.CameraX: m_CameraHeading.Increment(value); return; case ContinuousAction.CameraY: m_CameraPitch.Increment(value); return; case ContinuousAction.CameraZoom: m_CameraZoom.Increment(value); return; } }
public PresetEditorWindowNG(ControllerConfiguration controller, int editorId) : base(controller, editorId) { axisSnapshot = new float[controller.iface.GetAxesCount()]; }
public PresetEditorWindowNG(ControllerConfiguration controller, int editorId) : base(controller, editorId) { }
public void EvaluateDiscreteActionRelease(ControllerConfiguration controller, DiscreteAction action, FlightCtrlState state) { switch (action) { case DiscreteAction.None: return; case DiscreteAction.YawPlus: m_Yaw.SetIncrement(0); return; case DiscreteAction.YawMinus: m_Yaw.SetIncrement(0); return; case DiscreteAction.PitchPlus: m_Pitch.SetIncrement(0); return; case DiscreteAction.PitchMinus: m_Pitch.SetIncrement(0); return; case DiscreteAction.RollPlus: m_Roll.SetIncrement(0); return; case DiscreteAction.RollMinus: m_Roll.SetIncrement(0); return; case DiscreteAction.XPlus: m_X.SetIncrement(0); return; case DiscreteAction.XMinus: m_X.SetIncrement(0); return; case DiscreteAction.YPlus: m_Y.SetIncrement(0); return; case DiscreteAction.YMinus: m_Y.SetIncrement(0); return; case DiscreteAction.ZPlus: m_Z.SetIncrement(0); return; case DiscreteAction.ZMinus: m_Z.SetIncrement(0); return; case DiscreteAction.ThrottlePlus: m_Throttle.SetIncrement(0); return; case DiscreteAction.ThrottleMinus: m_Throttle.SetIncrement(0); return; case DiscreteAction.CameraZoomPlus: m_CameraZoom.SetIncrement(0); return; case DiscreteAction.CameraZoomMinus: m_CameraZoom.SetIncrement(0); return; case DiscreteAction.CameraXPlus: m_CameraHeading.SetIncrement(0); return; case DiscreteAction.CameraXMinus: m_CameraHeading.SetIncrement(0); return; case DiscreteAction.CameraYPlus: m_CameraPitch.SetIncrement(0); return; case DiscreteAction.CameraYMinus: m_CameraPitch.SetIncrement(0); return; case DiscreteAction.SASHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.SAS, false); return; } }
public void EvaluateDiscreteAction(ControllerConfiguration controller, DiscreteAction action, FlightCtrlState state) { switch (action) { case DiscreteAction.None: return; case DiscreteAction.YawPlus: m_Yaw.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.YawMinus: m_Yaw.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.PitchPlus: m_Pitch.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.PitchMinus: m_Pitch.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.PitchTrimPlus: m_Pitch.SetTrim(Utility.Clamp(m_Pitch.GetTrim() + controller.discreteActionStep, -1.0f, 1.0f)); return; case DiscreteAction.PitchTrimMinus: m_Pitch.SetTrim(Utility.Clamp(m_Pitch.GetTrim() - controller.discreteActionStep, -1.0f, 1.0f)); return; case DiscreteAction.RollPlus: m_Roll.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.RollMinus: m_Roll.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.XPlus: m_X.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.XMinus: m_X.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.YPlus: m_Y.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.YMinus: m_Y.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.ZPlus: m_Z.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.ZMinus: m_Z.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.ThrottlePlus: m_Throttle.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.ThrottleMinus: m_Throttle.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.CutThrottle: m_Throttle.SetValue(-state.mainThrottle); return; case DiscreteAction.FullThrottle: m_Throttle.SetValue(1.0f - state.mainThrottle); return; case DiscreteAction.NextPreset: if (controller.currentPreset >= controller.presets.Count - 1) { return; } controller.currentPreset++; ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.UPPER_CENTER); return; case DiscreteAction.PreviousPreset: if (controller.currentPreset <= 0) { return; } controller.currentPreset--; ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.UPPER_CENTER); return; case DiscreteAction.CyclePresets: controller.currentPreset++; if (controller.currentPreset >= controller.presets.Count) { controller.currentPreset = 0; } ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.LOWER_CENTER); return; case DiscreteAction.CameraZoomPlus: m_CameraZoom.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraZoomMinus: m_CameraZoom.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.CameraXPlus: m_CameraHeading.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraXMinus: m_CameraHeading.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.CameraYPlus: m_CameraPitch.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraYMinus: m_CameraPitch.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.OrbitMapToggle: if (!MapView.MapIsEnabled) { MapView.EnterMapView(); } else { MapView.ExitMapView(); } return; case DiscreteAction.TimeWarpPlus: WarpController.IncreaseWarp(); return; case DiscreteAction.TimeWarpMinus: WarpController.DecreaseWarp(); return; case DiscreteAction.PhysicsTimeWarpPlus: WarpController.IncreasePhysicsWarp(); return; case DiscreteAction.PhysicsTimeWarpMinus: WarpController.DecreasePhysicsWarp(); return; case DiscreteAction.NavballToggle: if (MapView.MapIsEnabled && MapView.fetch != null) { // MapView.fetch.maneuverModeToggle.OnPress.Invoke(); } return; case DiscreteAction.IVAViewToggle: if (CameraManager.Instance != null) { CameraManager.Instance.SetCameraIVA(); } return; case DiscreteAction.CameraViewToggle: if (FlightCamera.fetch != null) { FlightCamera.fetch.SetNextMode(); } return; case DiscreteAction.SASHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.SAS, true); return; case DiscreteAction.TogglePrecisionControls: if (FlightInputHandler.fetch != null) { FlightInputHandler.fetch.precisionMode = !FlightInputHandler.fetch.precisionMode; //Change color on flight input gauges manually. Hardcoded colors, but unlikely to change. foreach (var r in FlightInputHandler.fetch.inputGaugeRenderers) { if (FlightInputHandler.fetch.precisionMode) r.material.color = new Color(0.255f, 0.992f, 0.996f); else r.material.color = new Color(0.976f, 0.451f, 0.024f); } } return; case DiscreteAction.ResetTrim: m_Yaw.SetTrim(0.0f); m_Pitch.SetTrim(0.0f); m_Roll.SetTrim(0.0f); return; case DiscreteAction.IVANextCamera: CameraController.Instance.NextIVACamera(); return; case DiscreteAction.IVALookWindow: CameraController.Instance.FocusIVAWindow(); return; } if (m_DisableVesselControls) { return; } // all other actions switch (action) { case DiscreteAction.Stage: Staging.ActivateNextStage(); return; case DiscreteAction.Gear: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Gear); return; case DiscreteAction.Light: EVAController.Instance.ToggleHeadlamp(); FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Light); return; case DiscreteAction.RCS: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.RCS); return; case DiscreteAction.SAS: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.SAS); return; case DiscreteAction.Brakes: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Brakes); return; case DiscreteAction.BrakesHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.Brakes, true); return; case DiscreteAction.Abort: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Abort); return; case DiscreteAction.Custom01: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom01); return; case DiscreteAction.Custom02: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom02); return; case DiscreteAction.Custom03: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom03); return; case DiscreteAction.Custom04: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom04); return; case DiscreteAction.Custom05: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom05); return; case DiscreteAction.Custom06: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom06); return; case DiscreteAction.Custom07: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom07); return; case DiscreteAction.Custom08: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom08); return; case DiscreteAction.Custom09: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom09); return; case DiscreteAction.Custom10: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom10); return; case DiscreteAction.SASHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.SAS, true); return; case DiscreteAction.LockStage: if (FlightInputHandler.fetch != null) { FlightInputHandler.fetch.stageLock = !FlightInputHandler.fetch.stageLock; } return; case DiscreteAction.EVAInteract: EVAController.Instance.DoInteract(); return; case DiscreteAction.EVAJump: EVAController.Instance.DoJump(); return; case DiscreteAction.EVAToggleJetpack: EVAController.Instance.ToggleJetpack(); return; case DiscreteAction.EVAAutoRunToggle: EVAController.Instance.ToggleAutorun(); return; case DiscreteAction.EVAPlantFlag: EVAController.Instance.DoPlantFlag(); return; } }
public void EvaluateDiscreteAction(ControllerConfiguration controller, DiscreteAction action, FlightCtrlState state) { switch (action) { case DiscreteAction.None: return; case DiscreteAction.YawPlus: m_Yaw.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.YawMinus: m_Yaw.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.PitchPlus: m_Pitch.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.PitchMinus: m_Pitch.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.PitchTrimPlus: m_Pitch.SetTrim(Utility.Clamp(m_Pitch.GetTrim() + controller.discreteActionStep, -1.0f, 1.0f)); return; case DiscreteAction.PitchTrimMinus: m_Pitch.SetTrim(Utility.Clamp(m_Pitch.GetTrim() - controller.discreteActionStep, -1.0f, 1.0f)); return; case DiscreteAction.RollPlus: m_Roll.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.RollMinus: m_Roll.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.XPlus: m_X.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.XMinus: m_X.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.YPlus: m_Y.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.YMinus: m_Y.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.ZPlus: m_Z.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.ZMinus: m_Z.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.ThrottlePlus: m_Throttle.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.ThrottleMinus: m_Throttle.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.CutThrottle: m_Throttle.SetValue(-state.mainThrottle); return; case DiscreteAction.FullThrottle: m_Throttle.SetValue(1.0f - state.mainThrottle); return; case DiscreteAction.NextPreset: if (controller.currentPreset >= controller.presets.Count - 1) { return; } controller.currentPreset++; ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.UPPER_CENTER); return; case DiscreteAction.PreviousPreset: if (controller.currentPreset <= 0) { return; } controller.currentPreset--; ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.UPPER_CENTER); return; case DiscreteAction.CyclePresets: controller.currentPreset++; if (controller.currentPreset >= controller.presets.Count) { controller.currentPreset = 0; } ScreenMessages.PostScreenMessage("PRESET: " + controller.GetCurrentPreset().name.ToUpper(), 1.0f, ScreenMessageStyle.LOWER_CENTER); return; case DiscreteAction.CameraZoomPlus: m_CameraZoom.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraZoomMinus: m_CameraZoom.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.CameraXPlus: m_CameraHeading.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraXMinus: m_CameraHeading.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.CameraYPlus: m_CameraPitch.SetIncrement(1, controller.discreteActionStep); return; case DiscreteAction.CameraYMinus: m_CameraPitch.SetIncrement(-1, controller.discreteActionStep); return; case DiscreteAction.OrbitMapToggle: if (!MapView.MapIsEnabled) { MapView.EnterMapView(); } else { MapView.ExitMapView(); } return; case DiscreteAction.TimeWarpPlus: WarpController.IncreaseWarp(); return; case DiscreteAction.TimeWarpMinus: WarpController.DecreaseWarp(); return; case DiscreteAction.PhysicsTimeWarpPlus: WarpController.IncreasePhysicsWarp(); return; case DiscreteAction.PhysicsTimeWarpMinus: WarpController.DecreasePhysicsWarp(); return; case DiscreteAction.NavballToggle: if (MapView.MapIsEnabled && MapView.fetch != null) { MapView.fetch.maneuverModeToggle.OnPress.Invoke(); } return; case DiscreteAction.IVAViewToggle: if (CameraManager.Instance != null) { CameraManager.Instance.SetCameraIVA(); } return; case DiscreteAction.CameraViewToggle: if (FlightCamera.fetch != null) { FlightCamera.fetch.SetNextMode(); } return; case DiscreteAction.SASHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.SAS, true); return; case DiscreteAction.TogglePrecisionControls: if (FlightInputHandler.fetch != null) { FlightInputHandler.fetch.precisionMode = !FlightInputHandler.fetch.precisionMode; //Change color on flight input gauges manually. Hardcoded colors, but unlikely to change. foreach (var r in FlightInputHandler.fetch.inputGaugeRenderers) { if (FlightInputHandler.fetch.precisionMode) { r.material.color = new Color(0.255f, 0.992f, 0.996f); } else { r.material.color = new Color(0.976f, 0.451f, 0.024f); } } } return; case DiscreteAction.ResetTrim: m_Yaw.SetTrim(0.0f); m_Pitch.SetTrim(0.0f); m_Roll.SetTrim(0.0f); state.ResetTrim(); return; case DiscreteAction.IVANextCamera: CameraController.Instance.NextIVACamera(); return; case DiscreteAction.IVALookWindow: CameraController.Instance.FocusIVAWindow(); return; } if (m_DisableVesselControls) { return; } // all other actions switch (action) { case DiscreteAction.Stage: Staging.ActivateNextStage(); return; case DiscreteAction.Gear: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Gear); return; case DiscreteAction.Light: EVAController.Instance.ToggleHeadlamp(); FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Light); return; case DiscreteAction.RCS: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.RCS); return; case DiscreteAction.SAS: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.SAS); return; case DiscreteAction.Brakes: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Brakes); return; case DiscreteAction.BrakesHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.Brakes, true); return; case DiscreteAction.Abort: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Abort); return; case DiscreteAction.Custom01: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom01); return; case DiscreteAction.Custom02: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom02); return; case DiscreteAction.Custom03: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom03); return; case DiscreteAction.Custom04: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom04); return; case DiscreteAction.Custom05: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom05); return; case DiscreteAction.Custom06: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom06); return; case DiscreteAction.Custom07: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom07); return; case DiscreteAction.Custom08: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom08); return; case DiscreteAction.Custom09: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom09); return; case DiscreteAction.Custom10: FlightGlobals.ActiveVessel.ActionGroups.ToggleGroup(KSPActionGroup.Custom10); return; case DiscreteAction.SASHold: FlightGlobals.ActiveVessel.ActionGroups.SetGroup(KSPActionGroup.SAS, true); return; case DiscreteAction.LockStage: if (FlightInputHandler.fetch != null) { FlightInputHandler.fetch.stageLock = !FlightInputHandler.fetch.stageLock; } return; case DiscreteAction.EVAInteract: EVAController.Instance.DoInteract(); return; case DiscreteAction.EVAJump: EVAController.Instance.DoJump(); return; case DiscreteAction.EVAToggleJetpack: EVAController.Instance.ToggleJetpack(); return; case DiscreteAction.EVAAutoRunToggle: EVAController.Instance.ToggleAutorun(); return; case DiscreteAction.EVAPlantFlag: EVAController.Instance.DoPlantFlag(); return; } }
public void EvaluateContinuousAction(ControllerConfiguration controller, ContinuousAction action, float value, FlightCtrlState state) { switch (action) { case ContinuousAction.None: return; case ContinuousAction.Yaw: m_Yaw.SetValue(value); return; case ContinuousAction.NegativeYaw: m_Yaw.SetValue(-value); return; case ContinuousAction.YawTrim: m_Yaw.SetTrim(Utility.Clamp(m_Yaw.GetTrim() + controller.incrementalActionSensitivity * value * Time.deltaTime, -1.0f, 1.0f)); return; case ContinuousAction.Pitch: m_Pitch.SetValue(value); return; case ContinuousAction.NegativePitch: m_Pitch.SetValue(-value); return; case ContinuousAction.PitchTrim: m_Pitch.SetTrim(Utility.Clamp(m_Pitch.GetTrim() + controller.incrementalActionSensitivity * value * Time.deltaTime, -1.0f, 1.0f)); return; case ContinuousAction.Roll: m_Roll.SetValue(value); return; case ContinuousAction.NegativeRoll: m_Roll.SetValue(-value); return; case ContinuousAction.RollTrim: m_Roll.SetTrim(Utility.Clamp(m_Roll.GetTrim() + controller.incrementalActionSensitivity * value * Time.deltaTime, -1.0f, 1.0f)); return; case ContinuousAction.X: m_X.SetValue(value); return; case ContinuousAction.NegativeX: m_X.SetValue(-value); return; case ContinuousAction.Y: m_Y.SetValue(value); return; case ContinuousAction.NegativeY: m_Y.SetValue(-value); return; case ContinuousAction.Z: m_Z.SetValue(value); return; case ContinuousAction.NegativeZ: m_Z.SetValue(-value); return; case ContinuousAction.Throttle: m_Throttle.SetMinMaxValues(-state.mainThrottle, 1.0f - state.mainThrottle); m_Throttle.SetValue(value - state.mainThrottle); return; case ContinuousAction.ThrottleIncrement: m_Throttle.Increment(value * controller.incrementalActionSensitivity * Time.deltaTime); return; case ContinuousAction.ThrottleDecrement: m_Throttle.Increment(-value * controller.incrementalActionSensitivity * Time.deltaTime); return; case ContinuousAction.WheelThrottle: m_WheelThrottle.SetMinMaxValues(-1.0f, 1.0f); m_WheelThrottle.SetValue(value); return; case ContinuousAction.WheelSteer: m_WheelSteer.SetValue(value); return; case ContinuousAction.WheelThrottleTrim: m_WheelThrottle.SetTrim(Utility.Clamp(m_WheelThrottle.GetTrim() + value * controller.incrementalActionSensitivity * Time.deltaTime, -1.0f, 1.0f)); return; case ContinuousAction.WheelSteerTrim: m_WheelSteer.SetTrim(Utility.Clamp(m_WheelSteer.GetTrim() + value * controller.incrementalActionSensitivity * Time.deltaTime, -1.0f, 1.0f)); return; case ContinuousAction.CameraX: m_CameraHeading.Increment(value); return; case ContinuousAction.CameraY: m_CameraPitch.Increment(value); return; case ContinuousAction.CameraZoom: m_CameraZoom.Increment(value); return; } }