void UpdateEventPropagationPaths(EventDebuggerEventRecord eventBase) { ClearEventPropagationPaths(); if (eventBase == null) { return; } var propagationPaths = m_Debugger.GetPropagationPaths(panel, eventBase); if (propagationPaths == null) { return; } foreach (EventDebuggerPathTrace propagationPath in propagationPaths) { if (propagationPath?.paths == null) { continue; } m_EventPropagationPaths.text += "Trickle Down Path:\n"; var pathsTrickleDownPath = propagationPath.paths?.trickleDownPath; if (pathsTrickleDownPath != null && pathsTrickleDownPath.Any()) { foreach (var trickleDownPathElement in pathsTrickleDownPath) { var trickleDownPathName = trickleDownPathElement.name; if (string.IsNullOrEmpty(trickleDownPathName)) { trickleDownPathName = trickleDownPathElement.GetType().Name; } m_EventPropagationPaths.text += " " + trickleDownPathName + "\n"; } } else { m_EventPropagationPaths.text += " <empty>\n"; } m_EventPropagationPaths.text += "Target list:\n"; var targets = propagationPath.paths.targetElements; if (targets != null && targets.Any()) { foreach (var t in targets) { var targetName = t.name; if (string.IsNullOrEmpty(targetName)) { targetName = t.GetType().Name; } m_EventPropagationPaths.text += " " + targetName + "\n"; } } else { m_EventPropagationPaths.text += " <empty>\n"; } m_EventPropagationPaths.text += "Bubble Up Path:\n"; var pathsBubblePath = propagationPath.paths.bubbleUpPath; if (pathsBubblePath != null && pathsBubblePath.Any()) { foreach (var bubblePathElement in pathsBubblePath) { var bubblePathName = bubblePathElement.name; if (string.IsNullOrEmpty(bubblePathName)) { bubblePathName = bubblePathElement.GetType().Name; } m_EventPropagationPaths.text += " " + bubblePathName + "\n"; } } else { m_EventPropagationPaths.text += " <empty>\n"; } } }