Example #1
0
    public static void DrawAddFilterSelector(GameObject parent, Action addedFilterCallback)
    {
        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        GUILayout.Label("Add Filter:", GUILayout.ExpandWidth(false));
        Type selectedFilterType = null;

        selectedFilterType = TriggerGUILayout.DrawFilterSelector(selectedFilterType);

        if (selectedFilterType != null)
        {
            int        ordinal          = GetLastExecutionTime(parent) + 1;
            GameObject filterGameObject = new GameObject(selectedFilterType.Name);
            filterGameObject.transform.parent = parent.transform;
            EventFilter filter = (EventFilter)filterGameObject.AddComponent(selectedFilterType);
            filter.Ordinal = ordinal;
            addedFilterCallback();
        }
        GUILayout.EndHorizontal();
    }
Example #2
0
    public static bool DrawCustomFilterInspectorBar(bool expanded, EventFilter filter, out EventFilter newFilter)
    {
        EditorGUILayout.BeginHorizontal();

        EditorGUILayoutExt.BeginLabelStyle(12, FontStyle.Bold, new Color(0.45f, 0.45f, 0.45f), null);

        expanded = GUILayout.Button(expanded ? "▼" : "►", GUI.skin.label, GUILayout.ExpandWidth(false)) ? !expanded : expanded;
        bool newEnabled = GUILayout.Toggle(filter.enabled, "", GUILayout.ExpandWidth(false));

        if (newEnabled != filter.enabled)
        {
            filter.enabled = newEnabled;
        }
        EditorGUILayoutExt.BeginLabelStyle(null, null, new Color(1f, 1f, 0.72f), null);
        expanded = GUILayout.Button(filter.GetType().Name, GUI.skin.label, GUILayout.ExpandHeight(false), GUILayout.ExpandWidth(false)) ? !expanded : expanded;
        GUILayout.FlexibleSpace();

        EditorGUILayoutExt.EndLabelStyle();
        EditorGUILayoutExt.EndLabelStyle();

        if (GUILayout.Button("▲", GUILayout.ExpandWidth(false)))
        {
            MoveOrderableUp(filter);
        }

        if (GUILayout.Button("▼", GUILayout.ExpandWidth(false)))
        {
            MoveOrderableDown(filter);
        }

        Type eventType = TriggerGUILayout.DrawFilterSelector(filter.GetType());

        if (eventType != null)
        {
            if (eventType != filter.GetType())
            {
                GameObject filterGameObject = filter.gameObject;
                int        executionTime    = filter.Ordinal;
                GameObject.DestroyImmediate(filter);
                filter                = (EventFilter)filterGameObject.AddComponent(eventType);
                filter.Ordinal        = executionTime;
                filterGameObject.name = filter.GetType().Name;
            }
        }
        else
        {
            IOrderable next;
            int        time = filter.Ordinal + 1;
            while ((next = GetOrderableAtTime(filter.gameObject.transform.parent.gameObject, time)) != null)
            {
                next.Ordinal -= 1;
                time++;
            }
            GameObject.DestroyImmediate(filter.gameObject);
            filter = null;
        }

        EditorGUILayout.EndHorizontal();

        newFilter = filter;
        return(expanded);
    }