internal bool ReadDebuggingDataModel(ref NativeStream.Reader reader, EntityFrameData entityFrameData, out TracingStep tracingStep)
        {
            tracingStep = default;
            IPortModel portModel;

            switch (reader.Read <DotsFrameTrace.StepType>())
            {
            case DotsFrameTrace.StepType.ExecutedNode:
                entityFrameData.FrameTrace.ReadExecutedNode(ref reader, out NodeId id, out byte progress);
                if (!NodeMapping.TryGetValue(id, out var nodeModel))
                {
                    return(false);
                }
                tracingStep = TracingStep.ExecutedNode(nodeModel, progress);
                break;

            case DotsFrameTrace.StepType.TriggeredPort:
                entityFrameData.FrameTrace.ReadTriggeredPort(ref reader, out OutputTriggerPort triggeredPort);
                if (!PortMapping.TryGetValue(triggeredPort.Port.Index, out portModel))
                {
                    return(false);
                }
                tracingStep = TracingStep.TriggeredPort(portModel);
                break;

            case DotsFrameTrace.StepType.WrittenValue:
                entityFrameData.FrameTrace.ReadWrittenValue(ref reader, out Value writtenValue,
                                                            out OutputDataPort outputDataPort);
                if (!PortMapping.TryGetValue(outputDataPort.Port.Index, out portModel))
                {
                    return(false);
                }
                tracingStep = TracingStep.WrittenValue(portModel, writtenValue.ToPrettyString());
                break;

            case DotsFrameTrace.StepType.ReadValue:
                entityFrameData.FrameTrace.ReadReadValue(ref reader, out Value readValue, out InputDataPort inputDataPort);
                if (!PortMapping.TryGetValue(inputDataPort.Port.Index, out portModel))
                {
                    return(false);
                }
                tracingStep = TracingStep.ReadValue(portModel, readValue.ToPrettyString());
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(true);
        }
        void DisplayStepValues(TracingStep step)
        {
            switch (step.Type)
            {
            case TracingStepType.ExecutedNode:
                // Do Nothing, already handled in HighlightTrace()
                break;

            case TracingStepType.TriggeredPort:
                var p = step.PortModel.GetUI <DebuggingPort>(m_GraphView);
                if (p != null)
                {
                    p.ExecutionPortActive = true;
                }
                break;

            case TracingStepType.WrittenValue:
                step.NodeModel.GraphModel.AddBadge(new DebuggingValueBadgeModel(step));
                break;

            case TracingStepType.ReadValue:
                step.NodeModel.GraphModel.AddBadge(new DebuggingValueBadgeModel(step));
                break;

            case TracingStepType.Error:
                step.NodeModel.GraphModel.AddBadge(new DebuggingErrorBadgeModel(step));
                break;
            }

            var hasProgress = step.NodeModel as IHasProgress;

            if (hasProgress?.HasProgress ?? false)
            {
                var node = step.NodeModel.GetUI <CollapsibleInOutNode>(m_GraphView);
                if (node != null)
                {
                    node.Progress = step.Progress;
                }
            }
        }
        void AddStyleClassToModel(TracingStep step, string highlightStyle)
        {
            var node = step.NodeModel.GetUI <Node>(m_GraphView);

            if (step.NodeModel != null && node != null)
            {
                // TODO TRACING errors
                // if (step.type == DebuggerTracer.EntityFrameTrace.StepType.Exception)
                // {
                //     ui.AddToClassList(k_ExceptionHighlight);
                //
                //     if (m_PauseState == PauseState.Paused || m_PlayState == PlayModeStateChange.EnteredEditMode)
                //     {
                //         ((VseGraphView)m_GraphView).UIController.AttachErrorBadge(ui, step.errorMessage, SpriteAlignment.TopLeft);
                //     }
                // }
                // else
                {
                    node.AddToClassList(highlightStyle);
                }
            }
        }
 static string GetName(TracingStep step)
 {
     return($"{step.Type} {step.NodeModel} {step.PortModel}");
 }
 public StepSearcherItem(TracingStep step, int i) : base(GetName(step), "No help available.")
 {
     Index = i;
 }
 public DebuggingErrorBadgeModel(TracingStep step)
     : base(step.NodeModel)
 {
     m_ErrorMessage = step.ErrorMessage;
 }
예제 #7
0
 public DebuggingValueBadgeModel(TracingStep step)
     : base(step.PortModel, step.ValueString)
 {
 }