/// <summary> /// Get a button event if available /// </summary> /// <returns>Button Event, null if there is no event</returns> public IMetaButton GetButtonEvent() { var originalResult = _interop.GetButtonEvent(); if (originalResult != null) { return(originalResult); } if (ButtonEvents.Count <= 0) { return(null); } return(ButtonEvents.Dequeue()); }
/// <summary> /// Calls the update loop to get new values from the localizer. /// </summary> private void Update() { IMetaButton buttonEvent = null; // Pull buttons until button queue is exhausted for this update. while ((buttonEvent = _interop.GetButtonEvent()) != null) { // Make sure we send a Release event if (buttonEvent.Type != _lastType && _lastState != ButtonState.ButtonRelease) { var forceRelease = new MetaButton(_lastType, ButtonState.ButtonRelease, buttonEvent.Timestamp); SendEvent(forceRelease); } SendEvent(buttonEvent); _lastType = buttonEvent.Type; _lastState = buttonEvent.State; } }