Esempio n. 1
0
    /// <summary>
    /// Sets the responder storage object to use as our editing target.
    /// <param name="responders">The responders object that stores all of our event responses.</param>
    /// </summary>
    private void SetTargetResponderObject(EventRespondersComponent responders)
    {
        //Only update our info when the selection has ACTUALLY changed.
        if (responders != currentTargetResponders)
        {
            currentTargetResponders = responders;
            currentTargetGameObject = responders.gameObject;

            //Run a validation pass on the responders before we go working on them
            responders.ValidateResponders();

            List <MonoBehaviour> availableComponents = new List <MonoBehaviour>();

            //Find components that expose suitable events
            foreach (MonoBehaviour component in currentTargetGameObject.GetComponents <MonoBehaviour>())
            {
                EventInfo[] availableEvents = component.GetType().GetEvents();

                //Only include events that conform to EventHandler<GenericEventArguments>
                foreach (EventInfo availableEvent in availableEvents)
                {
                    if (IsEventSuitable(availableEvent))
                    {
                        availableComponents.Add(component);
                        break;
                    }
                }
            }

            //Generate a list of event names for display in the GUI.
            components.SetContents(availableComponents);
            components.SetSelection(-1);

            //Update selection information
            RefreshCurrentExposedEvents();
        }
    }
Esempio n. 2
0
    /// <summary>
    /// Creates (or shows an existing) instance of this window.
    /// </summary>
    public static void ShowWindow(EventRespondersComponent responders)
    {
        EventsEditorWindow window = (EventsEditorWindow)EditorWindow.GetWindow(typeof(EventsEditorWindow));

        window.SetTargetResponderObject(responders);
    }