/************************************************************************************************************************/ private static void AddEventClipboardItems(GenericMenu menu, SerializedProperty property, Serialization.PropertyAccessor accessor) { // Copy Event. menu.AddItem(new GUIContent("Copy Event"), false, () => { Clipboard.CopyEvent(property); }); // Paste Event. AddMenuItem(menu, "Paste Event (Overwrite)", Clipboard.HasEvent, () => { property.ModifyValues <UltEventBase>((e) => { Clipboard.Paste(e); }, "Paste Event"); }); // Paste Listener. AddMenuItem(menu, "Paste Listener (New) %#V", Clipboard.HasCall, () => { property.ModifyValues <UltEventBase>((e) => { var call = new PersistentCall(); Clipboard.PasteCall(call); if (e._PersistentCalls == null) { e._PersistentCalls = new List <PersistentCall>(); } e._PersistentCalls.Add(call); }, "Paste PersistentCall"); }); }
/************************************************************************************************************************/ private static void AddCallClipboardItems(GenericMenu menu, SerializedProperty property, Serialization.PropertyAccessor accessor) { menu.AddItem(new GUIContent("Copy Listener %C"), false, () => { Clipboard.CopyCall(property); }); AddMenuItem(menu, "Paste Listener (Overwrite) %V", Clipboard.HasCall, () => Clipboard.PasteCall(property)); }
/************************************************************************************************************************/ public static void AddEventFunctions(GenericMenu menu, SerializedProperty property, Serialization.PropertyAccessor accessor) { property = property.Copy(); if (accessor.FieldType == typeof(UltEvent)) { menu.AddItem(new GUIContent("Invoke Event"), false, () => { var events = property.GetValues <UltEvent>(); for (int i = 0; i < events.Length; i++) { var e = events[i] as UltEvent; if (e != null) { e.Invoke(); } } property.OnPropertyChanged(); }); } AddEventClipboardItems(menu, property, accessor); menu.AddItem(new GUIContent("Clear Event"), false, () => { property.ModifyValues <UltEventBase>((e) => { if (e != null) { e.Clear(); } }, "Clear Event"); }); menu.AddItem(new GUIContent("Log Description"), false, () => { var targets = property.serializedObject.targetObjects; var events = property.GetValues <UltEventBase>(); for (int i = 0; i < events.Length; i++) { Debug.Log(events[i], targets[i]); } }); }
/// <summary>Stores the details of the call contained in the specified property.</summary> public static void CopyCall(Serialization.PropertyAccessor accessor, Object target) { var call = (PersistentCall)accessor.GetValue(target); CopyCall(call); }
/// <summary>Stores the details of the event contained in the specified property.</summary> public static void CopyEvent(Serialization.PropertyAccessor accessor, Object target) { var e = (UltEventBase)accessor.GetValue(target); CopyEvent(e); }