public static Dictionary <string, List <MethodInfo> > GetSharedAccessibleMethodsOnGameObjects(SerializedProperty objectsProperty) { Dictionary <string, List <MethodInfo> > methods = new Dictionary <string, List <MethodInfo> >(); int idx = 0; for (; idx < objectsProperty.arraySize; ++idx) { SerializedProperty prop = objectsProperty.GetArrayElementAtIndex(idx); GameObject obj = prop.objectReferenceValue != null ? prop.objectReferenceValue as GameObject : null; if (obj != null) { methods = VRC_EditorTools.GetAccessibleMethodsOnGameObject(obj); break; } } List <string> toRemove = new List <string>(); for (; idx < objectsProperty.arraySize; ++idx) { SerializedProperty prop = objectsProperty.GetArrayElementAtIndex(idx); GameObject obj = prop.objectReferenceValue != null ? prop.objectReferenceValue as GameObject : null; if (obj != null) { Dictionary <string, List <MethodInfo> > thisObjMethods = VRC_EditorTools.GetAccessibleMethodsOnGameObject(obj); foreach (string className in methods.Keys.Where(s => thisObjMethods.Keys.Contains(s) == false)) { toRemove.Add(className); } } } foreach (string className in toRemove) { methods.Remove(className); } return(methods); }
public static void DrawTriggerActionCallback(string actionLabel, VRC.SDKBase.VRC_Trigger trigger, VRC.SDKBase.VRC_EventHandler.VrcEvent e) { VRC.SDKBase.VRC_Trigger.TriggerEvent triggerEvent = VRC_EditorTools.CustomTriggerPopup(actionLabel, trigger, e.ParameterString); e.ParameterString = triggerEvent == null ? null : triggerEvent.Name; }