public int AddProperty(ShaderProperty p) { var result = shaderInputs.AddProperty(p); MarkDirty(); return(result); }
public int AddProperty( ShaderProperty p ) { var propertyIds = from property in _shaderProperties orderby property.PropertyId select property.PropertyId; int nextId = 0; while ( propertyIds.Contains (nextId)) { ++nextId; } p.PropertyId = nextId; _shaderProperties.Add( p ); return p.PropertyId; }
public int AddProperty(ShaderProperty p) { var propertyIds = from property in _shaderProperties orderby property.PropertyId select property.PropertyId; int nextId = 0; while (propertyIds.Contains(nextId)) { ++nextId; } p.PropertyId = nextId; _shaderProperties.Add(p); return(p.PropertyId); }
public int AddProperty(ShaderProperty p) { return(_owner.AddProperty(p)); }
public void Draw() { if (GUILayout.Button("Add New Input...")) { var menu = new GenericMenu(); menu.AddItem(new GUIContent("Color Property"), false, AddInputProperty, new ColorProperty()); menu.AddItem(new GUIContent("Float4 Property"), false, AddInputProperty, new Float4Property()); menu.AddItem(new GUIContent("Float Property"), false, AddInputProperty, new FloatProperty()); menu.AddItem(new GUIContent("Range Property"), false, AddInputProperty, new RangeProperty()); menu.AddItem(new GUIContent("Texture 2D Property"), false, AddInputProperty, new Texture2DProperty()); menu.AddItem(new GUIContent("Texture Cube Property"), false, AddInputProperty, new TextureCubeProperty()); menu.AddItem(new GUIContent("Matrix Property"), false, AddInputProperty, new MatrixProperty()); menu.AddItem(new GUIContent("Unity/Main Color"), false, AddInputProperty, new ColorProperty() { PropertyName = "_Color", PropertyDescription = "Main Color", Color = new Color(1f, 1f, 1f, 1f) }); menu.AddItem(new GUIContent("Unity/Main Texture"), false, AddInputProperty, new Texture2DProperty() { PropertyName = "_MainTex", PropertyDescription = "Base (RGB) Gloss (A)", _defaultTexture = DefaultTextureType.White }); menu.AddItem(new GUIContent("Unity/Shininess"), false, AddInputProperty, new RangeProperty() { PropertyName = "_Shininess", PropertyDescription = "Shininess", Range = new EditorRange(0.01f, 1.0f, 0.078125f) }); menu.AddItem(new GUIContent("Unity/Bump Map"), false, AddInputProperty, new Texture2DProperty() { PropertyName = "_BumpMap", PropertyDescription = "Normalmap", _defaultTexture = DefaultTextureType.Bump }); menu.AddItem(new GUIContent("Unity/Detail"), false, AddInputProperty, new Texture2DProperty() { PropertyName = "_Detail", PropertyDescription = "Detail (RGB)", _defaultTexture = DefaultTextureType.Gray }); menu.AddItem(new GUIContent("Unity/Parallax"), false, AddInputProperty, new RangeProperty() { PropertyName = "_Parallax", PropertyDescription = "Height", Range = new EditorRange(0.005f, 0.08f, 0.02f) }); menu.AddItem(new GUIContent("Unity/Parallax Map"), false, AddInputProperty, new Texture2DProperty() { PropertyName = "_ParallaxMap", PropertyDescription = "Heightmap (A)", _defaultTexture = DefaultTextureType.Black }); menu.AddItem(new GUIContent("Unity/Reflection Color"), false, AddInputProperty, new ColorProperty() { PropertyName = "_ReflectColor", PropertyDescription = "Reflection Color", Color = new Color(1f, 1f, 1f, 0.5f) }); menu.AddItem(new GUIContent("Unity/Reflection Cubemap"), false, AddInputProperty, new TextureCubeProperty() { PropertyName = "_Cube", PropertyDescription = "Reflection Cubemap", _defaultTexture = DefaultTextureType.Black }); menu.AddItem(new GUIContent("Unity/Emission (Lightmapper)"), false, AddInputProperty, new FloatProperty() { PropertyName = "_EmissionLM", PropertyDescription = "Emission (Lightmapper)", Float = 0.0f }); menu.ShowAsContext(); } ShaderProperty moveUpItem = null; ShaderProperty moveDownItem = null; ShaderProperty deleteItem = null; _upIcon = _upIcon ?? new GUIContent(Resources.Load("Internal/Up", typeof(Texture2D)) as Texture2D); _downIcon = _downIcon ?? new GUIContent(Resources.Load("Internal/Down", typeof(Texture2D)) as Texture2D); _removeIcon = _removeIcon ?? new GUIContent(Resources.Load("Internal/Delete", typeof(Texture2D)) as Texture2D); foreach (var property in _shaderProperties) { GUILayout.BeginVertical(); GUILayout.BeginHorizontal( ); var oldColor = GUI.color; if (_shaderProperties.Where(x => x.PropertyName == property.PropertyName).Count() > 1 || !property.IsValid()) { GUI.color = Color.red; } property.Expanded = EditorGUILayout.Foldout(property.Expanded, property.GetPropertyType().PropertyTypeString()); property.PropertyName = GUILayout.TextField(property.PropertyName, new[] { GUILayout.Width(130) }); GUI.color = oldColor; GUILayout.FlexibleSpace(); if (GUILayout.Button(_upIcon, GUILayout.Width(21), GUILayout.Height(21))) { moveUpItem = property; } if (GUILayout.Button(_downIcon, GUILayout.Width(21), GUILayout.Height(21))) { moveDownItem = property; } if (GUILayout.Button(_removeIcon, GUILayout.Width(21), GUILayout.Height(21))) { deleteItem = property; } GUILayout.EndHorizontal(); if (property.Expanded) { GUILayout.Space(3); GUILayout.BeginHorizontal(); GUILayout.Label("Description", new[] { GUILayout.Width(69) }); property.PropertyDescriptionDisplay = GUILayout.TextField(property.PropertyDescriptionDisplay); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Space(10); property.Draw(); GUILayout.EndHorizontal(); } GUILayout.EndVertical(); GUILayout.Space(10); } if (moveUpItem != null) { var currentPosition = _shaderProperties.IndexOf(moveUpItem); if (currentPosition > 0) { _shaderProperties.Remove(moveUpItem); _shaderProperties.Insert(currentPosition - 1, moveUpItem); } } else if (moveDownItem != null) { var currentPosition = _shaderProperties.IndexOf(moveDownItem); if (currentPosition < _shaderProperties.Count - 1) { _shaderProperties.Remove(moveDownItem); _shaderProperties.Insert(currentPosition + 1, moveDownItem); } } else if (deleteItem != null) { _shaderProperties.Remove(deleteItem); } }