/// <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(); } }
/// <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); }