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;
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
 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;
 }
Beispiel #5
0
        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));
        }
Beispiel #6
0
 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)));
 }
Beispiel #7
0
        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));
        }
Beispiel #8
0
        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)]);
        }