/// <summary> /// Returns an array of events in the event queue. /// It does not remove them from the event queue. /// </summary> /// <param name="eventMask">Mask of events to find in queue</param> /// <param name="numberOfEvents">Number of events to find in queue</param> /// <returns>Array of events in queue.</returns> public static SdlEventArgs[] Peek(EventMask eventMask, int numberOfEvents) { Sdl.SDL_Event[] events = new Sdl.SDL_Event[numberOfEvents]; Sdl.SDL_PumpEvents(); int result = Sdl.SDL_PeepEvents( events, events.Length, Sdl.SDL_PEEKEVENT, (int)eventMask); if (result == (int)SdlFlag.Error) { throw SdlException.Generate(); } SdlEventArgs[] eventsArray = new SdlEventArgs[result]; for (int i = 0; i < eventsArray.Length; i++) { if (events[i].type == (byte)EventTypes.UserEvent) { eventsArray[i] = (UserEventArgs)userEvents[events[i].user.code]; } else { eventsArray[i] = SdlEventArgs.CreateEventArgs(events[i]); } } return(eventsArray); }
/// <summary> /// Adds an event to the Event queue. /// </summary> /// <param name="sdlEvent">Event to add to queue</param> public static void Add(SdlEventArgs sdlEvent) { // SdlEventArgs[] events = new SdlEventArgs[1]; // events[0] = sdlEvent; // Add(events); if (sdlEvent == null) { throw new ArgumentNullException("sdlEvent"); } Sdl.SDL_Event evt = sdlEvent.EventStruct; if (Sdl.SDL_PushEvent(out evt) != (int)SdlFlag.Success) { //throw SdlException.Generate(); } }
/// <summary> /// Retrieve events of a certain type /// </summary> /// <param name="eventMask">Event to retrieve</param> /// <param name="numberOfEvents">Number of events to retrieve</param> /// <returns>Array containing events</returns> public static SdlEventArgs[] Retrieve(EventMask eventMask, int numberOfEvents) { Sdl.SDL_PumpEvents(); Sdl.SDL_Event[] events = new Sdl.SDL_Event[numberOfEvents]; int result = Sdl.SDL_PeepEvents( events, events.Length, Sdl.SDL_GETEVENT, (int)eventMask ); if (result == (int)SdlFlag.Error) { throw SdlException.Generate(); } SdlEventArgs[] eventsArray = new SdlEventArgs[result]; for (int i = 0; i < eventsArray.Length; i++) { if (events[i].type == (byte)EventTypes.UserEvent) { eventsArray[i] = (UserEventArgs)userEvents[events[i].user.code]; userEvents.Remove(events[i].user.code); } else { eventsArray[i] = SdlEventArgs.CreateEventArgs(events[i]); } } return eventsArray; }
/// <summary> /// Raises Event and places it on the event queue /// </summary> /// <param name="sdlEvent">Event to be raised</param> public static void AddEvent(SdlEventArgs sdlEvent) { Events.Add(sdlEvent); }
/// <summary> /// Adds an array of events to the event queue. /// </summary> /// <param name="sdlEvents">Array of events to add to queue.</param> /// <returns></returns> public static void Add(SdlEventArgs[] sdlEvents) { if (sdlEvents == null) { throw new ArgumentNullException("sdlEvents"); } //Sdl.SDL_Event[] events = new Sdl.SDL_Event[sdlEvents.Length]; for (int i = 0; i < sdlEvents.Length; i++) { Add(sdlEvents[i]); } // // int result = // Sdl.SDL_PeepEvents( // events, // events.Length, // Sdl.SDL_ADDEVENT, // (int)EventMask.None); // // if (result == (int)SdlFlag.Error) // { // if (quitFlag == false) // { // throw SdlException.Generate(); // } // } }