public static bool RenderEventHeader(VRCSDK2.VRC_EventHandler myTarget, VRCSDK2.VRC_EventHandler.VrcEvent evt) { EditorGUILayout.BeginHorizontal(); evt.EventType = VRC_EditorTools.FilteredEnumPopup("New Event Type", evt.EventType, (v) => v != VRC_EventHandler.VrcEventType.SpawnObject && v != VRC_EventHandler.VrcEventType.SendMessage); bool delete = GUILayout.Button("Remove"); EditorGUILayout.EndHorizontal(); return(delete); }
public static VRCSDK2.VRC_EventHandler.VrcEvent RenderAddEvent(VRCSDK2.VRC_EventHandler myTarget) { VRCSDK2.VRC_EventHandler.VrcEvent newEvent = null; EditorGUILayout.BeginHorizontal(); lastAddedEventType = VRC_EditorTools.FilteredEnumPopup("New Event Type", lastAddedEventType, (v) => v != VRC_EventHandler.VrcEventType.SpawnObject && v != VRC_EventHandler.VrcEventType.SendMessage); if (GUILayout.Button("Add")) { newEvent = new VRCSDK2.VRC_EventHandler.VrcEvent { EventType = lastAddedEventType, ParameterObject = myTarget.gameObject }; myTarget.Events.Add(newEvent); EditorUtility.SetDirty(myTarget); } EditorGUILayout.EndHorizontal(); return(newEvent); }
public override void OnGUI(Rect rect, SerializedProperty property, GUIContent label) { if (property == null) { return; } SerializedProperty nameProperty = property.FindPropertyRelative("name"); SerializedProperty mirrorProperty = property.FindPropertyRelative("mirror"); SerializedProperty typeProperty = property.FindPropertyRelative("type"); SerializedProperty valueProperty = null; switch (typeProperty.enumValueIndex) { case (int)VRC_DataStorage.VrcDataType.Bool: valueProperty = property.FindPropertyRelative("valueBool"); break; case (int)VRC_DataStorage.VrcDataType.Float: valueProperty = property.FindPropertyRelative("valueFloat"); break; case (int)VRC_DataStorage.VrcDataType.Int: valueProperty = property.FindPropertyRelative("valueInt"); break; case (int)VRC_DataStorage.VrcDataType.String: valueProperty = property.FindPropertyRelative("valueString"); break; case (int)VRC_DataStorage.VrcDataType.SerializeObject: valueProperty = property.FindPropertyRelative("serializeComponent"); break; case (int)VRC_DataStorage.VrcDataType.None: case (int)VRC_DataStorage.VrcDataType.SerializeBytes: break; } EditorGUI.BeginProperty(rect, label, property); int baseWidth = (int)(rect.width / 4); Rect nameRect = new Rect(rect.x, rect.y, baseWidth, rect.height); Rect mirrorRect = new Rect(rect.x + baseWidth, rect.y, baseWidth, rect.height); Rect typeRect = new Rect(rect.x + baseWidth * 2, rect.y, baseWidth, rect.height); Rect valueRect = new Rect(rect.x + baseWidth * 3, rect.y, baseWidth, rect.height); Rect typeValueRect = new Rect(rect.x + baseWidth * 2, rect.y, baseWidth * 2, rect.height); EditorGUI.PropertyField(nameRect, nameProperty, GUIContent.none); EditorGUI.PropertyField(mirrorRect, mirrorProperty, GUIContent.none); switch (mirrorProperty.enumValueIndex) { case (int)VRC_DataStorage.VrcDataMirror.None: if (valueProperty == null) { VRC_EditorTools.FilteredEnumPopup <VRC_DataStorage.VrcDataType>(typeValueRect, typeProperty, t => true); } else { VRC_EditorTools.FilteredEnumPopup <VRC_DataStorage.VrcDataType>(typeRect, typeProperty, t => true); EditorGUI.PropertyField(valueRect, valueProperty, GUIContent.none); } break; case (int)VRC_DataStorage.VrcDataMirror.SerializeComponent: typeProperty.enumValueIndex = (int)VRC_DataStorage.VrcDataType.SerializeObject; EditorGUI.PropertyField(typeValueRect, valueProperty, GUIContent.none); break; default: VRC_EditorTools.FilteredEnumPopup <VRC_DataStorage.VrcDataType>(typeValueRect, typeProperty, t => true); break; } EditorGUI.EndProperty(); }