void OnPickTargetButton(EventBase eventBase) { State state = m_Store.GetState(); IDebugger debugger = state.CurrentGraphModel.Stencil.Debugger; var targetIndices = debugger.GetDebuggingTargets(state.CurrentGraphModel); var items = targetIndices == null ? null : targetIndices.Select(x => (SearcherItem) new TargetSearcherItem(x, debugger.GetTargetLabel(state.CurrentGraphModel, x))).ToList(); if (items == null || !items.Any()) { items = new List <SearcherItem> { new SearcherItem("<No Object found>") } } ; SearcherWindow.Show(EditorWindow.focusedWindow, items, "Entities", i => { if (i == null || !(i is TargetSearcherItem targetSearcherItem)) { return(true); } state.CurrentTracingTarget = targetSearcherItem.Target; UpdateTracingMenu(); return(true); }, eventBase.originalMousePosition); eventBase.StopPropagation(); eventBase.PreventDefault(); } void OnFrameCounterKeyDown(KeyDownEvent evt) { if (evt.keyCode == KeyCode.Return || evt.keyCode == KeyCode.KeypadEnter) { int frame = m_CurrentFrameTextField.value; frame = Math.Max(0, Math.Min(frame, Time.frameCount)); m_Store.GetState().CurrentTracingFrame = frame; m_Store.GetState().CurrentTracingStep = -1; UpdateTracingMenu(); } } void UpdateTracingMenu(bool force = true) { var state = m_Store.GetState(); if (EditorApplication.isPlaying && state.EditorDataModel.TracingEnabled) { m_PickTargetLabel.text = state.CurrentGraphModel?.Stencil?.Debugger?.GetTargetLabel(state.CurrentGraphModel, state.CurrentTracingTarget); m_PickTargetIcon.style.visibility = Visibility.Hidden; m_PickTargetButton.SetEnabled(true); if (EditorApplication.isPaused || !EditorApplication.isPlaying) { m_FirstFrameTracingButton.SetEnabled(true); m_PreviousFrameTracingButton.SetEnabled(true); m_PreviousStepTracingButton.SetEnabled(true); m_NextStepTracingButton.SetEnabled(true); m_NextFrameTracingButton.SetEnabled(true); m_LastFrameTracingButton.SetEnabled(true); m_CurrentFrameTextField.SetEnabled(true); m_TotalFrameLabel.SetEnabled(true); } else { state.CurrentTracingFrame = Time.frameCount; state.CurrentTracingStep = -1; m_FirstFrameTracingButton.SetEnabled(false); m_PreviousFrameTracingButton.SetEnabled(false); m_PreviousStepTracingButton.SetEnabled(false); m_NextStepTracingButton.SetEnabled(false); m_NextFrameTracingButton.SetEnabled(false); m_LastFrameTracingButton.SetEnabled(false); m_CurrentFrameTextField.SetEnabled(false); m_TotalFrameLabel.SetEnabled(false); } if (!m_LastUpdate.IsRunning) { m_LastUpdate.Start(); } if (force || EditorApplication.isPaused || m_LastUpdate.ElapsedMilliseconds > k_UpdateIntervalMs) { m_CurrentFrameTextField.value = state.CurrentTracingFrame; m_TotalFrameLabel.text = $"/{Time.frameCount.ToString()}"; if (state.CurrentTracingStep != -1) { m_TotalFrameLabel.text += $" [{state.CurrentTracingStep}/{state.MaxTracingStep}]"; } m_LastUpdate.Restart(); } } else { m_LastUpdate.Stop(); state.CurrentTracingFrame = Time.frameCount; state.CurrentTracingStep = -1; m_PickTargetLabel.text = ""; m_PickTargetIcon.style.visibility = StyleKeyword.Null; m_CurrentFrameTextField.value = 0; m_PickTargetButton.SetEnabled(false); m_CurrentFrameTextField.SetEnabled(false); m_TotalFrameLabel.text = "/0"; m_TotalFrameLabel.SetEnabled(false); m_FirstFrameTracingButton.SetEnabled(false); m_PreviousFrameTracingButton.SetEnabled(false); m_PreviousStepTracingButton.SetEnabled(false); m_NextStepTracingButton.SetEnabled(false); m_NextFrameTracingButton.SetEnabled(false); m_LastFrameTracingButton.SetEnabled(false); } } void OnFirstFrameTracingButton() { m_Store.GetState().CurrentTracingFrame = 0; m_Store.GetState().CurrentTracingStep = -1; UpdateTracingMenu(); } void OnPreviousFrameTracingButton() { if (m_Store.GetState().CurrentTracingFrame > 0) { m_Store.GetState().CurrentTracingFrame--; m_Store.GetState().CurrentTracingStep = -1; UpdateTracingMenu(); } } void OnPreviousStepTracingButton() { if (m_Store.GetState().CurrentTracingStep > 0) { m_Store.GetState().CurrentTracingStep--; } else { if (m_Store.GetState().CurrentTracingStep == -1) { m_Store.GetState().CurrentTracingStep = m_Store.GetState().MaxTracingStep; } else { if (m_Store.GetState().CurrentTracingFrame > 0) { m_Store.GetState().CurrentTracingFrame--; m_Store.GetState().CurrentTracingStep = m_Store.GetState().MaxTracingStep; } } } UpdateTracingMenu(); } void OnNextStepTracingButton() { if (m_Store.GetState().CurrentTracingStep < m_Store.GetState().MaxTracingStep&& m_Store.GetState().CurrentTracingStep >= 0) { m_Store.GetState().CurrentTracingStep++; } else { if (m_Store.GetState().CurrentTracingStep == -1 && (m_Store.GetState().CurrentTracingFrame < Time.frameCount)) { m_Store.GetState().CurrentTracingStep = 0; } else { if (m_Store.GetState().CurrentTracingFrame < Time.frameCount) { m_Store.GetState().CurrentTracingFrame++; m_Store.GetState().CurrentTracingStep = 0; } } } UpdateTracingMenu(); } void OnNextFrameTracingButton() { if (m_Store.GetState().CurrentTracingFrame < Time.frameCount) { m_Store.GetState().CurrentTracingFrame++; m_Store.GetState().CurrentTracingStep = -1; UpdateTracingMenu(); } } void OnLastFrameTracingButton() { m_Store.GetState().CurrentTracingFrame = Time.frameCount; m_Store.GetState().CurrentTracingStep = -1; UpdateTracingMenu(); } }
void OnPickTargetButton(EventBase eventBase) { State state = m_Store.GetState(); IDebugger debugger = state.CurrentGraphModel.Stencil.Debugger; var targetIndices = debugger.GetDebuggingTargets(state.CurrentGraphModel); var items = targetIndices == null ? null : targetIndices.Select(x => (SearcherItem) new TargetSearcherItem(x, debugger.GetTargetLabel(state.CurrentGraphModel, x))).ToList(); if (items == null || !items.Any()) { items = new List <SearcherItem> { new SearcherItem("<No Object found>") } } ; SearcherWindow.Show(EditorWindow.focusedWindow, items, "Entities", i => { if (i == null || !(i is TargetSearcherItem targetSearcherItem)) { return(true); } state.CurrentTracingTarget = targetSearcherItem.Target; UpdateTracingMenu(); return(true); }, eventBase.originalMousePosition); eventBase.StopPropagation(); eventBase.PreventDefault(); } void OnFrameCounterKeyDown(KeyDownEvent evt) { if (evt.keyCode == KeyCode.Return || evt.keyCode == KeyCode.KeypadEnter) { int frame = m_CurrentFrameTextField.value; frame = Math.Max(0, Math.Min(frame, Time.frameCount)); m_Store.GetState().CurrentTracingFrame = frame; m_Store.GetState().CurrentTracingStep = -1; UpdateTracingMenu(); } }
// PF FIXME use command void OnPickTargetButton(EventBase eventBase) { var state = m_CommandDispatcher.State; IDebugger debugger = ((Stencil)state.WindowState.GraphModel.Stencil).Debugger; var targetIndices = debugger.GetDebuggingTargets(state.WindowState.GraphModel); var items = targetIndices == null ? null : targetIndices.Select(x => (SearcherItem) new TargetSearcherItem(x, debugger.GetTargetLabel(state.WindowState.GraphModel, x))).ToList(); if (items == null || !items.Any()) { items = new List <SearcherItem> { new SearcherItem("<No Object found>") } } ; Searcher.SearcherWindow.Show(EditorWindow.focusedWindow, items, "Entities", i => { if (i == null || !(i is TargetSearcherItem targetSearcherItem)) { return(true); } using (var updater = state.TracingControlState.UpdateScope) { updater.CurrentTracingTarget = targetSearcherItem.Target; UpdateTracingMenu(updater); } return(true); }, eventBase.originalMousePosition); eventBase.StopPropagation(); eventBase.PreventDefault(); } // PF FIXME use command void OnFrameCounterKeyDown(KeyDownEvent evt) { if (evt.keyCode == KeyCode.Return || evt.keyCode == KeyCode.KeypadEnter) { var tracingDataModel = m_CommandDispatcher.State.TracingControlState; int frame = m_CurrentFrameTextField.value; frame = Math.Max(0, Math.Min(frame, Time.frameCount)); using (var updater = tracingDataModel.UpdateScope) { updater.CurrentTracingFrame = frame; updater.CurrentTracingStep = -1; UpdateTracingMenu(updater); } } }