コード例 #1
0
 public static Offset <ShaderProperty> CreateShaderProperty(FlatBufferBuilder builder,
                                                            StringOffset namesOffset       = default(StringOffset),
                                                            ShaderPropertyType type        = ShaderPropertyType.Float,
                                                            ShaderPropertyValue value_type = ShaderPropertyValue.NONE,
                                                            int valueOffset = 0)
 {
     builder.StartObject(4);
     ShaderProperty.AddValue(builder, valueOffset);
     ShaderProperty.AddNames(builder, namesOffset);
     ShaderProperty.AddValueType(builder, value_type);
     ShaderProperty.AddType(builder, type);
     return(ShaderProperty.EndShaderProperty(builder));
 }
コード例 #2
0
 public static void AddValueType(FlatBufferBuilder builder, ShaderPropertyValue valueType)
 {
     builder.AddByte(2, (byte)valueType, 0);
 }
コード例 #3
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            allPropertiesValues.Clear();

            MaterialStateEditor       monobehaviorPropertyEditor = (MaterialStateEditor)target;
            List <ShaderInformations> infos = monobehaviorPropertyEditor.GetAllShaderProperties();



            GUILayout.BeginVertical();

            int colorCounter   = 0;
            int sliderCounter  = 0;
            int floatCounter   = 0;
            int vectorCounter  = 0;
            int toogleCounter  = 0;
            int textureCounter = 0;

            foreach (ShaderInformations informations in infos)
            {
                GUILayout.BeginHorizontal();

                string label = informations.Description;

                if (string.IsNullOrEmpty(label))
                {
                    label = informations.Name;
                }

                allChecked[toogleCounter] = EditorGUILayout.BeginToggleGroup(label, allChecked[toogleCounter]);

                ShaderPropertyValue value = new ShaderPropertyValue();
                value.valueName = informations.Name;

                switch (informations.Type)
                {
                case ShaderUtil.ShaderPropertyType.Color:
                    value.type = MaterialStateEditor.ShaderParameterType.Color;
                    break;

                case ShaderUtil.ShaderPropertyType.TexEnv:
                    value.type = MaterialStateEditor.ShaderParameterType.TexEnv;
                    break;

                case ShaderUtil.ShaderPropertyType.Vector:
                    value.type = MaterialStateEditor.ShaderParameterType.Vector;
                    break;

                default:
                    value.type = MaterialStateEditor.ShaderParameterType.Float;
                    break;
                }



                switch (informations.Type)
                {
                case ShaderUtil.ShaderPropertyType.Color:

                    if (colorCounter >= allColors.Count)
                    {
                        allColors.Add(new Color(1, 1, 0, 1));
                    }

                    allColors[colorCounter] = EditorGUILayout.ColorField("", allColors[colorCounter]);
                    value.colorValue        = allColors[colorCounter];

                    colorCounter++;



                    break;

                case ShaderUtil.ShaderPropertyType.Range:
                    allSliderMax[sliderCounter]    = informations.Max;
                    allSliderMin[sliderCounter]    = informations.Min;
                    allSliderValues[sliderCounter] = EditorGUILayout.Slider(allSliderValues[sliderCounter], allSliderMin[sliderCounter], allSliderMax[sliderCounter]);
                    value.floatValue = allSliderValues[sliderCounter];

                    sliderCounter++;


                    break;

                case ShaderUtil.ShaderPropertyType.TexEnv:
                    GUILayout.BeginVertical();
                    var style = new GUIStyle(GUI.skin.label);
                    style.alignment  = TextAnchor.UpperCenter;
                    style.fixedWidth = 70;
                    GUILayout.Label(name, style);
                    allTextures[textureCounter] = (Texture2D)EditorGUILayout.ObjectField(allTextures[textureCounter], typeof(Texture2D), false, GUILayout.Width(70), GUILayout.Height(70));
                    value.textureValue          = allTextures[textureCounter];
                    textureCounter++;
                    GUILayout.EndVertical();

                    break;

                case ShaderUtil.ShaderPropertyType.Vector:
                    allVectors[vectorCounter] = EditorGUILayout.Vector4Field(informations.Description, allVectors[vectorCounter]);
                    value.vectorValue         = allVectors[vectorCounter];
                    vectorCounter++;
                    break;

                default:
                    allFloats[floatCounter] = EditorGUILayout.FloatField(allFloats[floatCounter]);
                    value.floatValue        = allFloats[floatCounter];
                    floatCounter++;
                    break;
                }

                if (allChecked[toogleCounter])
                {
                    allPropertiesValues.Add(value);
                }

                toogleCounter++;

                EditorGUILayout.EndToggleGroup();
                GUILayout.EndHorizontal();
            }

            if (GUILayout.Button("Create a new material state"))
            {
                if (EditorUtility.DisplayDialog("Are you sure?", "Confirm the creation of a new state please", "F**k yeah!"))
                {
                    monobehaviorPropertyEditor.AddValuesToList(allPropertiesValues);
                }
            }

            GUILayout.EndVertical();
        }