public static void InitializeTrigger(VRC.SDKBase.VRC_Trigger trigger) { CyanEmuTriggerHelper helper = trigger.gameObject.AddComponent <CyanEmuTriggerHelper>(); helper.SetTrigger(trigger as VRC_Trigger); trigger.ExecuteTrigger = helper.ExecuteTrigger; }
public static VRC.SDKBase.VRC_Trigger.TriggerEvent CustomTriggerPopup(VRC.SDKBase.VRC_Trigger sourceTrigger, string selectedValue, params GUILayoutOption[] options) { if (sourceTrigger == null) { return(null); } return(CustomTriggerPopup(sourceTrigger, sourceTrigger.Triggers.FirstOrDefault(t => t.TriggerType == VRC.SDKBase.VRC_Trigger.TriggerType.Custom && t.Name == selectedValue), options)); }
public static void InitializeTrigger(VRC.SDKBase.VRC_Trigger trigger) { CyanEmuTriggerHelper helper = trigger.gameObject.AddComponent <CyanEmuTriggerHelper>(); helper.SetTrigger(trigger as VRC_Trigger); if (trigger.ExecuteTrigger == null) { trigger.ExecuteTrigger = new Action <VRC_Trigger.TriggerEvent>(helper.ExecuteTrigger); } }
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; }
public static VRC.SDKBase.VRC_Trigger.TriggerEvent CustomTriggerPopup(Rect rect, string label, VRC.SDKBase.VRC_Trigger sourceTrigger, string selectedValue, GUIStyle style = null) { if (sourceTrigger == null) { return(null); } return(CustomTriggerPopup(rect, label, sourceTrigger, sourceTrigger.Triggers.FirstOrDefault(t => t.TriggerType == VRC.SDKBase.VRC_Trigger.TriggerType.Custom && t.Name == selectedValue), style)); }
public static VRC.SDKBase.VRC_Trigger.TriggerEvent CustomTriggerPopup(string label, VRC.SDKBase.VRC_Trigger sourceTrigger, VRC.SDKBase.VRC_Trigger.TriggerEvent selectedValue, params GUILayoutOption[] options) { return(CustomTriggerPopupInternal(sourceTrigger, selectedValue, (selectedIdx, names) => EditorGUILayout.Popup(label, selectedIdx, names, options))); }
public static VRC.SDKBase.VRC_Trigger.TriggerEvent CustomTriggerPopup(Rect rect, string label, VRC.SDKBase.VRC_Trigger sourceTrigger, VRC.SDKBase.VRC_Trigger.TriggerEvent selectedValue, GUIStyle style = null) { System.Func <int, string[], int> show = (selectedIdx, names) => { if (style != null) { return(EditorGUI.Popup(rect, label, selectedIdx, names, style)); } else { return(EditorGUI.Popup(rect, label, selectedIdx, names)); } }; return(CustomTriggerPopupInternal(sourceTrigger, selectedValue, show)); }
private static VRC.SDKBase.VRC_Trigger.TriggerEvent CustomTriggerPopupInternal(VRC.SDKBase.VRC_Trigger sourceTrigger, VRC.SDKBase.VRC_Trigger.TriggerEvent selectedValue, System.Func <int, string[], int> show) { if (sourceTrigger == null) { return(null); } VRC.SDKBase.VRC_Trigger.TriggerEvent[] actionsAry = sourceTrigger.Triggers.Where(t => t.TriggerType == VRC.SDKBase.VRC_Trigger.TriggerType.Custom).ToArray(); string[] names = actionsAry.Select(t => t.Name).ToArray(); int selectedIdx = Math.Max(0, names.Length - 1); if (selectedValue != null) { for (; selectedIdx > 0; --selectedIdx) { if (names[selectedIdx] == selectedValue.Name) { break; } } } if (actionsAry.Length == 0) { return(null); } return(actionsAry[show(selectedIdx, names)]); }