Ejemplo n.º 1
0
        /// <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;
        }
Ejemplo n.º 2
0
        /// <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;
        }