Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        public void Disconnect(SendMessageArgument.Type type)
        {
            if (type == SendMessageArgument.Type.Slot)
            {
                inputSlotValueProperty.Disconnect();
                return;
            }

            FlexibleFieldProperty flexibleProperty = GetFlexibleProperty(type);

            if (flexibleProperty != null)
            {
                flexibleProperty.Disconnect();
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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();
        }