public void ButtonPressedCallback(IController controller, int button, FlightCtrlState state) { if(!HighLogic.LoadedSceneIsFlight) { return; } var config = m_Configuration.GetConfigurationByIController(controller); Bitset mask = controller.GetButtonsMask(); if (config.evaluatedDiscreteActionMasks.Contains(mask)) { return; } List<DiscreteAction> actions = config.GetCurrentPreset().GetDiscreteBinding(mask); if(actions != null) { foreach (DiscreteAction action in actions) { m_FlightManager.EvaluateDiscreteAction(config, action, state); config.evaluatedDiscreteActionMasks.Add(mask); } } }
public void ButtonPressedCallback(IController controller, int button, FlightCtrlState state) { if (!HighLogic.LoadedSceneIsFlight) { return; } var config = m_Configuration.GetConfigurationByIController(controller); Bitset mask = controller.GetButtonsMask(); if (config.evaluatedDiscreteActionMasks.Contains(mask)) { return; } List <DiscreteAction> actions = config.GetCurrentPreset().GetDiscreteBinding(mask); if (actions != null) { foreach (DiscreteAction action in actions) { m_FlightManager.EvaluateDiscreteAction(config, action, state); config.evaluatedDiscreteActionMasks.Add(mask); } } }
public void ButtonReleasedCallback(IController controller, int button, FlightCtrlState state) { if (!HighLogic.LoadedSceneIsFlight) { return; } var config = m_Configuration.GetConfigurationByIController(controller); List <Bitset> masksToRemove = new List <Bitset>(); foreach (Bitset evaluatedMask in config.evaluatedDiscreteActionMasks) { for (int i = 0; i < controller.GetButtonsCount(); i++) { if (!controller.GetButtonState(i) && evaluatedMask.Get(i)) { masksToRemove.Add(evaluatedMask); break; } } } foreach (Bitset maskRemove in masksToRemove) { config.evaluatedDiscreteActionMasks.Remove(maskRemove); } if (controller.lastUpdateMask != null) { foreach (var presetEditor in m_PresetEditors) { Bitset bitset = controller.lastUpdateMask.Copy(); bitset.Set(button); presetEditor.SetCurrentBitmask(bitset); } } var mask = controller.GetButtonsMask(); mask.Set(button); var actions = config.GetCurrentPreset().GetDiscreteBinding(mask); if (actions != null) { foreach (DiscreteAction action in actions) { m_FlightManager.EvaluateDiscreteActionRelease(config, action, state); } } }
public void ButtonReleasedCallback(IController controller, int button, FlightCtrlState state) { if (!HighLogic.LoadedSceneIsFlight) { return; } var config = m_Configuration.GetConfigurationByIController(controller); List<Bitset> masksToRemove = new List<Bitset>(); foreach (Bitset evaluatedMask in config.evaluatedDiscreteActionMasks) { for (int i = 0; i < controller.GetButtonsCount(); i++) { if (!controller.GetButtonState(i) && evaluatedMask.Get(i)) { masksToRemove.Add(evaluatedMask); break; } } } foreach (Bitset maskRemove in masksToRemove) { config.evaluatedDiscreteActionMasks.Remove(maskRemove); } if(controller.lastUpdateMask != null) { foreach (var presetEditor in m_PresetEditors) { Bitset bitset = controller.lastUpdateMask.Copy(); bitset.Set(button); presetEditor.SetCurrentBitmask(bitset); } } var mask = controller.GetButtonsMask(); mask.Set(button); var actions = config.GetCurrentPreset().GetDiscreteBinding(mask); if(actions != null) { foreach (DiscreteAction action in actions) { m_FlightManager.EvaluateDiscreteActionRelease(config, action, state); } } }