/// <summary> /// Draws evaluation testing tools. /// </summary> private void DrawEvaluationTest() { Color originalGUIColor = GUI.backgroundColor; SOFlowEditorUtilities.DrawColourLayer(_testResult ? SOFlowEditorSettings.AcceptContextColour : SOFlowEditorSettings.DeclineContextColour, () => { if (SOFlowEditorUtilities.DrawColourButton("Test Comparison")) { _testResult = _target.Evaluate(); } GUI.backgroundColor = _testResult ? SOFlowEditorSettings.AcceptContextColour : SOFlowEditorSettings.DeclineContextColour; GUILayout.Label(_testResult.ToString(), SOFlowStyles.BoldCenterLabel); }); GUI.backgroundColor = originalGUIColor; }
/// <summary> /// Draws the log entry for the given game event. /// </summary> /// <param name="gameEvent"></param> /// <param name="instanceID"></param> private void DrawLogEntry(GameEvent gameEvent, int instanceID) { Vector2 scrollPosition; if (!_eventEntriesScrollPosition.TryGetValue(instanceID, out scrollPosition)) { scrollPosition = Vector2.zero; _eventEntriesScrollPosition.Add(instanceID, scrollPosition); } Color originalGUIColor = GUI.backgroundColor; GUI.backgroundColor = SOFlowEditorSettings.TertiaryLayerColour; scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition, true, false, GUI.skin.horizontalScrollbar, GUIStyle.none, SOFlowStyles.HelpBox, GUILayout.Height(EditorGUIUtility.singleLineHeight * 7f), GUILayout.Width(position.width - _entryWidth - 40f)); GUI.backgroundColor = originalGUIColor; EditorGUILayout.BeginHorizontal(); for (int i = gameEvent.EventStack.Count - 1; i >= 0; i--) { int skippedEntries = 0; SOFlowEditorUtilities.DrawSecondaryLayer(() => { EditorGUILayout.LabelField($"Log Entry {i + 1}", SOFlowStyles.CenterTextHelpBox); EditorGUILayout.BeginHorizontal(); for (int j = 0, condition = gameEvent.EventStack[i].Listener.Count; j < condition; j++) { string searchQuery; _eventEntrySearchQuery.TryGetValue(instanceID, out searchQuery); GameEventLog log = gameEvent.EventStack[i]; GameObject gameObject = log.Listener[j].GetGameObject(); if (string.IsNullOrEmpty(searchQuery) || gameObject == null || gameObject.name.ToLower() .Contains(searchQuery.ToLower())) { SOFlowEditorUtilities .DrawColourLayer(log.IsError[j] ? SOFlowEditorSettings.DeclineContextColour : SOFlowEditorSettings.AcceptContextColour, () => DrawEventLog(log, j)); } else { skippedEntries++; } } EditorGUILayout.EndHorizontal(); }, GUILayout.MaxWidth(_entryWidth * (gameEvent.EventStack[i].Listener.Count - skippedEntries))); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndScrollView(); _eventEntriesScrollPosition[instanceID] = scrollPosition; }