private FlexibleFieldProperty GetFlexibleProperty(SendMessageArgument.Type type) { switch (type) { case SendMessageArgument.Type.None: return(null); case SendMessageArgument.Type.Int: return(intValueProperty); case SendMessageArgument.Type.Float: return(floatValueProperty); case SendMessageArgument.Type.Bool: return(boolValueProperty); case SendMessageArgument.Type.String: return(stringValueProperty); case SendMessageArgument.Type.Long: return(longValueProperty); case SendMessageArgument.Type.Enum: return(enumValueProperty); case SendMessageArgument.Type.GameObject: return(gameObjectValueProperty); case SendMessageArgument.Type.Vector2: return(vector2ValueProperty); case SendMessageArgument.Type.Vector3: return(vector3ValueProperty); case SendMessageArgument.Type.Quaternion: return(quaternionValueProperty); case SendMessageArgument.Type.Rect: return(rectValueProperty); case SendMessageArgument.Type.Bounds: return(boundsValueProperty); case SendMessageArgument.Type.Color: return(colorValueProperty); case SendMessageArgument.Type.Component: return(componentValueProperty); } return(null); }
public void Disconnect(SendMessageArgument.Type type) { if (type == SendMessageArgument.Type.Slot) { inputSlotValueProperty.Disconnect(); return; } FlexibleFieldProperty flexibleProperty = GetFlexibleProperty(type); if (flexibleProperty != null) { flexibleProperty.Disconnect(); } }
public SerializedProperty GetValueProperty(SendMessageArgument.Type type) { if (type == SendMessageArgument.Type.Slot) { return(inputSlotValueProperty.property); } FlexibleFieldProperty flexibleProperty = GetFlexibleProperty(type); if (flexibleProperty != null) { return(flexibleProperty.property); } return(null); }
void DoGUI(GUIContent label) { EditorGUI.BeginProperty(_LayoutArea.rect, label, property); int indentLevel = EditorGUI.indentLevel; if (label != GUIContent.none) { _LayoutArea.LabelField(label); EditorGUI.indentLevel++; } SendMessageArgument.Type argumentType = _ArgumentProperty.type; EditorGUI.BeginChangeCheck(); _LayoutArea.PropertyField(_ArgumentProperty.typeProperty); if (EditorGUI.EndChangeCheck() && _ArgumentProperty.type != argumentType) { _ArgumentProperty.Disconnect(argumentType); argumentType = _ArgumentProperty.type; if (argumentType == SendMessageArgument.Type.Enum || argumentType == SendMessageArgument.Type.Component) { _ArgumentProperty.referenceTypeProperty.Clear(); } else if (argumentType == SendMessageArgument.Type.Slot) { _ArgumentProperty.inputSlotValueProperty.Clear(); } } SerializedProperty valueProperty = _ArgumentProperty.GetValueProperty(argumentType); if (valueProperty != null) { switch (argumentType) { case SendMessageArgument.Type.Enum: _ArgumentProperty.referenceTypeProperty.property.SetStateData <ClassTypeConstraintAttribute>(ClassTypeConstraintEditorUtility.enumField); _LayoutArea.PropertyField(_ArgumentProperty.referenceTypeProperty.property); valueProperty.SetStateData(_ArgumentProperty.referenceTypeProperty.type); break; case SendMessageArgument.Type.Component: _ArgumentProperty.referenceTypeProperty.property.SetStateData <ClassTypeConstraintAttribute>(ClassTypeConstraintEditorUtility.component); _LayoutArea.PropertyField(_ArgumentProperty.referenceTypeProperty.property); valueProperty.SetStateData(_ArgumentProperty.referenceTypeProperty.type); break; case SendMessageArgument.Type.Slot: _LayoutArea.PropertyField(_ArgumentProperty.inputSlotValueProperty.typeProperty.property, EditorGUITools.GetTextContent("Reference Type")); break; } _LayoutArea.PropertyField(valueProperty); } EditorGUI.indentLevel = indentLevel; EditorGUI.EndProperty(); }