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 virtual Bitset GetButtonsMask() { int buttonsCount = GetButtonsCount(); Bitset mask = new Bitset(buttonsCount); for (int i = 0; i < buttonsCount; i++) { if (GetButtonState(i)) { mask.Set(i); } } return(mask); }
public Bitset GetButtonsMask() { int buttonsCount = GetButtonsCount(); Bitset mask = new Bitset(buttonsCount); for (int i = 0; i < buttonsCount; i++) { if (GetButtonState(i)) { mask.Set(i); } } return mask; }