public static DelegateMessage EventField(string label, DelegateMessage evt, GameObject dynParamSource) { EditorGUILayout.BeginVertical(); if (label != null) { EditorGUILayout.PrefixLabel(label); } EditorGUILayout.BeginHorizontal(); DelegateMessage newEvt = (DelegateMessage)evt.Clone(); EventField_ContextPicker(newEvt); // SELECT EVENT TYPES GameObject target = (evt.targetId == -1) ? evt.overrideTarget:dynParamSource; DelegateDescriptor[] eventTypes = EditorDelegateUtil.FindEventsForObject(target); // SELECT EVENT & PARAMS DelegateDescriptor ed = EventField_EventDescriptorPopup(eventTypes, newEvt); EditorGUILayout.EndHorizontal(); EventField_Parameters(ed, newEvt, dynParamSource); EditorGUILayout.EndVertical(); return(newEvt); }