private static bool DoDispatch(BaseVisualElementPanel panel) { bool result = false; bool flag = UIElementsUtility.s_EventInstance.type == EventType.Repaint; if (flag) { using (UIElementsUtility.s_RepaintProfilerMarker.Auto()) { panel.Repaint(UIElementsUtility.s_EventInstance); } IPanelDebug expr_46 = panel.panelDebug; Panel expr_57 = ((expr_46 != null) ? expr_46.debuggerOverlayPanel : null) as Panel; if (expr_57 != null) { expr_57.Repaint(UIElementsUtility.s_EventInstance); } result = (panel.IMGUIContainersCount > 0); } else { panel.ValidateLayout(); using (EventBase eventBase = UIElementsUtility.CreateEvent(UIElementsUtility.s_EventInstance)) { bool flag2 = UIElementsUtility.s_EventInstance.type == EventType.Used || UIElementsUtility.s_EventInstance.type == EventType.Layout || UIElementsUtility.s_EventInstance.type == EventType.ExecuteCommand || UIElementsUtility.s_EventInstance.type == EventType.ValidateCommand; using (UIElementsUtility.s_EventProfilerMarker.Auto()) { panel.SendEvent(eventBase, flag2 ? DispatchMode.Immediate : DispatchMode.Default); } bool isPropagationStopped = eventBase.isPropagationStopped; if (isPropagationStopped) { panel.visualTree.IncrementVersion(VersionChangeType.Repaint); result = true; } } } return(result); }
public static EventBase CreateEvent(Event systemEvent) { Debug.Assert(s_RuntimeDispatcher != null, "Call UIElementsRuntimeUtility.InitRuntimeEventSystem before sending any event."); return(UIElementsUtility.CreateEvent(systemEvent, systemEvent.rawType)); }
public void ReplayEvents(List <EventDebuggerEventRecord> eventBases) { if (eventBases == null) { return; } foreach (var eventBase in eventBases) { Event newEvent = new Event { button = eventBase.button, clickCount = eventBase.clickCount, modifiers = eventBase.modifiers, mousePosition = eventBase.mousePosition, }; if (eventBase.eventTypeId == MouseMoveEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseMove; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseMove), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == MouseDownEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseDown; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseDown), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == MouseUpEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseUp; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseUp), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == ContextClickEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.ContextClick; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.ContextClick), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == MouseEnterWindowEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseEnterWindow; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseEnterWindow), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == MouseLeaveWindowEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseLeaveWindow; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseLeaveWindow), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == WheelEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.ScrollWheel; newEvent.delta = eventBase.delta; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.ScrollWheel), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == KeyDownEvent.TypeId()) { newEvent.type = EventType.KeyDown; newEvent.character = eventBase.character; newEvent.keyCode = eventBase.keyCode; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.KeyDown), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == KeyUpEvent.TypeId()) { newEvent.type = EventType.KeyUp; newEvent.character = eventBase.character; newEvent.keyCode = eventBase.keyCode; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.KeyUp), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == DragUpdatedEvent.TypeId()) { newEvent.type = EventType.DragUpdated; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.DragUpdated), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == DragPerformEvent.TypeId()) { newEvent.type = EventType.DragPerform; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.DragPerform), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == DragExitedEvent.TypeId()) { newEvent.type = EventType.DragExited; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.DragExited), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == ValidateCommandEvent.TypeId()) { newEvent.type = EventType.ValidateCommand; newEvent.commandName = eventBase.commandName; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.ValidateCommand), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == ExecuteCommandEvent.TypeId()) { newEvent.type = EventType.ExecuteCommand; newEvent.commandName = eventBase.commandName; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.ExecuteCommand), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == IMGUIEvent.TypeId()) { Debug.Log("Skipped IMGUI event (" + eventBase.eventBaseName + "): " + eventBase); continue; } else { Debug.Log("Skipped event (" + eventBase.eventBaseName + "): " + eventBase); continue; } Debug.Log("Replayed event (" + eventBase.eventBaseName + "): " + newEvent); } }
private IEnumerator DoReplayEvents(IEnumerable <EventDebuggerEventRecord> eventBases, Action <int, int> refreshList) { var sortedEvents = eventBases.OrderBy(e => e.timestamp).ToList(); var sortedEventsCount = sortedEvents.Count; IEnumerator AwaitForNextEvent(int currentIndex) { if (currentIndex == sortedEvents.Count - 1) { yield break; } var deltaTimestampMs = sortedEvents[currentIndex + 1].timestamp - sortedEvents[currentIndex].timestamp; var timeMs = 0.0f; while (timeMs < deltaTimestampMs) { if (isPlaybackPaused) { yield return(null); } else { var time = Panel.TimeSinceStartupMs(); yield return(null); var delta = Panel.TimeSinceStartupMs() - time; timeMs += delta * playbackSpeed; } } } for (var i = 0; i < sortedEventsCount; i++) { if (!isReplaying) { break; } var eventBase = sortedEvents[i]; var newEvent = new Event { button = eventBase.button, clickCount = eventBase.clickCount, modifiers = eventBase.modifiers, mousePosition = eventBase.mousePosition, }; if (eventBase.eventTypeId == MouseMoveEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseMove; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseMove), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == MouseDownEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseDown; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseDown), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == MouseUpEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseUp; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseUp), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == ContextClickEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.ContextClick; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.ContextClick), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == MouseEnterWindowEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseEnterWindow; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseEnterWindow), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == MouseLeaveWindowEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseLeaveWindow; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseLeaveWindow), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == PointerMoveEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseMove; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseMove), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == PointerDownEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseDown; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseDown), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == PointerUpEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.MouseUp; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.MouseUp), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == WheelEvent.TypeId() && eventBase.hasUnderlyingPhysicalEvent) { newEvent.type = EventType.ScrollWheel; newEvent.delta = eventBase.delta; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.ScrollWheel), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == KeyDownEvent.TypeId()) { newEvent.type = EventType.KeyDown; newEvent.character = eventBase.character; newEvent.keyCode = eventBase.keyCode; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.KeyDown), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == KeyUpEvent.TypeId()) { newEvent.type = EventType.KeyUp; newEvent.character = eventBase.character; newEvent.keyCode = eventBase.keyCode; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.KeyUp), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == NavigationMoveEvent.TypeId()) { panel.dispatcher.Dispatch(NavigationMoveEvent.GetPooled(eventBase.navigationDirection, eventBase.deviceType, eventBase.modifiers), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == NavigationSubmitEvent.TypeId()) { panel.dispatcher.Dispatch(NavigationSubmitEvent.GetPooled(eventBase.deviceType, eventBase.modifiers), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == NavigationCancelEvent.TypeId()) { panel.dispatcher.Dispatch(NavigationCancelEvent.GetPooled(eventBase.deviceType, eventBase.modifiers), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == DragUpdatedEvent.TypeId()) { newEvent.type = EventType.DragUpdated; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.DragUpdated), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == DragPerformEvent.TypeId()) { newEvent.type = EventType.DragPerform; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.DragPerform), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == DragExitedEvent.TypeId()) { newEvent.type = EventType.DragExited; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.DragExited), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == ValidateCommandEvent.TypeId()) { newEvent.type = EventType.ValidateCommand; newEvent.commandName = eventBase.commandName; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.ValidateCommand), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == ExecuteCommandEvent.TypeId()) { newEvent.type = EventType.ExecuteCommand; newEvent.commandName = eventBase.commandName; panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(newEvent, EventType.ExecuteCommand), panel, DispatchMode.Default); } else if (eventBase.eventTypeId == IMGUIEvent.TypeId()) { Debug.Log("Skipped IMGUI event (" + eventBase.eventBaseName + "): " + eventBase); var awaitSkipped = AwaitForNextEvent(i); while (awaitSkipped.MoveNext()) { yield return(null); } continue; } else { Debug.Log("Skipped event (" + eventBase.eventBaseName + "): " + eventBase); var awaitSkipped = AwaitForNextEvent(i); while (awaitSkipped.MoveNext()) { yield return(null); } continue; } refreshList?.Invoke(i, sortedEventsCount); Debug.Log($"Replayed event {eventBase.eventId.ToString()} ({eventBase.eventBaseName}): {newEvent}"); var await = AwaitForNextEvent(i); while (await.MoveNext()) { yield return(null); } } isReplaying = false; }
public static EventBase CreateEvent(Event systemEvent) { return(UIElementsUtility.CreateEvent(systemEvent, systemEvent.type)); }
internal static EventBase CreateEvent(Event systemEvent) { return(UIElementsUtility.CreateEvent(systemEvent, systemEvent.rawType)); }
public void ReplayEvents(List <EventDebuggerEventRecord> eventBases) { bool flag = eventBases == null; if (!flag) { foreach (EventDebuggerEventRecord current in eventBases) { Event @event = new Event { button = current.button, clickCount = current.clickCount, modifiers = current.modifiers, mousePosition = current.mousePosition }; bool flag2 = current.eventTypeId == EventBase <MouseMoveEvent> .TypeId() && current.hasUnderlyingPhysicalEvent; if (flag2) { @event.type = EventType.MouseMove; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.MouseMove), this.panel, DispatchMode.Default); } else { bool flag3 = current.eventTypeId == EventBase <MouseDownEvent> .TypeId() && current.hasUnderlyingPhysicalEvent; if (flag3) { @event.type = EventType.MouseDown; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.MouseDown), this.panel, DispatchMode.Default); } else { bool flag4 = current.eventTypeId == EventBase <MouseUpEvent> .TypeId() && current.hasUnderlyingPhysicalEvent; if (flag4) { @event.type = EventType.MouseUp; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.MouseUp), this.panel, DispatchMode.Default); } else { bool flag5 = current.eventTypeId == EventBase <ContextClickEvent> .TypeId() && current.hasUnderlyingPhysicalEvent; if (flag5) { @event.type = EventType.ContextClick; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.ContextClick), this.panel, DispatchMode.Default); } else { bool flag6 = current.eventTypeId == EventBase <MouseEnterWindowEvent> .TypeId() && current.hasUnderlyingPhysicalEvent; if (flag6) { @event.type = EventType.MouseEnterWindow; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.MouseEnterWindow), this.panel, DispatchMode.Default); } else { bool flag7 = current.eventTypeId == EventBase <MouseLeaveWindowEvent> .TypeId() && current.hasUnderlyingPhysicalEvent; if (flag7) { @event.type = EventType.MouseLeaveWindow; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.MouseLeaveWindow), this.panel, DispatchMode.Default); } else { bool flag8 = current.eventTypeId == EventBase <WheelEvent> .TypeId() && current.hasUnderlyingPhysicalEvent; if (flag8) { @event.type = EventType.ScrollWheel; @event.delta = current.delta; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.ScrollWheel), this.panel, DispatchMode.Default); } else { bool flag9 = current.eventTypeId == EventBase <KeyDownEvent> .TypeId(); if (flag9) { @event.type = EventType.KeyDown; @event.character = current.character; @event.keyCode = current.keyCode; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.KeyDown), this.panel, DispatchMode.Default); } else { bool flag10 = current.eventTypeId == EventBase <KeyUpEvent> .TypeId(); if (flag10) { @event.type = EventType.KeyUp; @event.character = current.character; @event.keyCode = current.keyCode; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.KeyUp), this.panel, DispatchMode.Default); } else { bool flag11 = current.eventTypeId == EventBase <DragUpdatedEvent> .TypeId(); if (flag11) { @event.type = EventType.DragUpdated; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.DragUpdated), this.panel, DispatchMode.Default); } else { bool flag12 = current.eventTypeId == EventBase <DragPerformEvent> .TypeId(); if (flag12) { @event.type = EventType.DragPerform; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.DragPerform), this.panel, DispatchMode.Default); } else { bool flag13 = current.eventTypeId == EventBase <DragExitedEvent> .TypeId(); if (flag13) { @event.type = EventType.DragExited; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.DragExited), this.panel, DispatchMode.Default); } else { bool flag14 = current.eventTypeId == EventBase <ValidateCommandEvent> .TypeId(); if (flag14) { @event.type = EventType.ValidateCommand; @event.commandName = current.commandName; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.ValidateCommand), this.panel, DispatchMode.Default); } else { bool flag15 = current.eventTypeId == EventBase <ExecuteCommandEvent> .TypeId(); if (flag15) { @event.type = EventType.ExecuteCommand; @event.commandName = current.commandName; this.panel.dispatcher.Dispatch(UIElementsUtility.CreateEvent(@event, EventType.ExecuteCommand), this.panel, DispatchMode.Default); } else { bool flag16 = current.eventTypeId == EventBase <IMGUIEvent> .TypeId(); if (flag16) { string arg_4C9_0 = "Skipped IMGUI event ("; string arg_4C9_1 = current.eventBaseName; string arg_4C9_2 = "): "; EventDebuggerEventRecord expr_4BD = current; Debug.Log(arg_4C9_0 + arg_4C9_1 + arg_4C9_2 + ((expr_4BD != null) ? expr_4BD.ToString() : null)); continue; } string arg_4F4_0 = "Skipped event ("; string arg_4F4_1 = current.eventBaseName; string arg_4F4_2 = "): "; EventDebuggerEventRecord expr_4E8 = current; Debug.Log(arg_4F4_0 + arg_4F4_1 + arg_4F4_2 + ((expr_4E8 != null) ? expr_4E8.ToString() : null)); continue; } } } } } } } } } } } } } } string arg_51E_0 = "Replayed event ("; string arg_51E_1 = current.eventBaseName; string arg_51E_2 = "): "; Event expr_512 = @event; Debug.Log(arg_51E_0 + arg_51E_1 + arg_51E_2 + ((expr_512 != null) ? expr_512.ToString() : null)); } } }