/// <inheritdoc/> protected internal override void Initialize() { LoadResource(); material = InspectedObject as Material; if (material == null) { return; } Shader activeShader = material.Shader.Value; BuiltinShader builtinType = ShaderToBuiltin(activeShader); builtinShaderField = new GUIEnumField(typeof(BuiltinShader), new LocEdString("Shader")); builtinShaderField.Value = (ulong)builtinType; builtinShaderField.OnSelectionChanged += OnBuiltinShaderFieldChanged; shaderField = new GUIResourceField(typeof(Shader), new LocEdString("Shader file")); shaderField.ValueRef = material.Shader; shaderField.OnChanged += (x) => { Shader shader = Resources.Load <Shader>(x.UUID); material.Shader = shader; EditorApplication.SetDirty(material); RebuildParamGUI(material); }; bool isCustom = builtinType == BuiltinShader.Custom; shaderField.Active = isCustom; RebuildParamGUI(material); }
/// <summary> /// Returns one of the builtin shaders /// </summary> public static Shader GetShader(BuiltinShader shader) { if (shader == BuiltinShader.Custom) { return(null); } return(Internal_GetBuiltinShader((int)shader)); }
/// <inheritdoc/> protected internal override void Initialize() { Material material = InspectedObject as Material; if (material == null) { return; } Shader activeShader = material.Shader; BuiltinShader builtinType = ShaderToBuiltin(activeShader); builtinShaderField = new GUIEnumField(typeof(BuiltinShader), new LocEdString("Shader")); builtinShaderField.Value = (ulong)builtinType; builtinShaderField.OnSelectionChanged += x => { BuiltinShader newBuiltinType = (BuiltinShader)x; material.Shader = Builtin.GetShader(newBuiltinType); EditorApplication.SetDirty(material); RebuildParamGUI(material); bool newIsCustom = newBuiltinType == BuiltinShader.Custom; shaderField.Active = newIsCustom; }; shaderField = new GUIResourceField(typeof(Shader), new LocEdString("Shader file")); shaderField.Value = material.Shader; shaderField.OnChanged += (x) => { Shader shader = Resources.Load <Shader>(x); material.Shader = shader; EditorApplication.SetDirty(material); RebuildParamGUI(material); }; bool isCustom = builtinType == BuiltinShader.Custom; shaderField.Active = isCustom; Layout.AddElement(builtinShaderField); Layout.AddElement(shaderField); RebuildParamGUI(material); }
private void OnBuiltinShaderFieldChanged(UInt64 value) { Shader activeShader = material.Shader.Value; BuiltinShader builtinType = ShaderToBuiltin(activeShader); BuiltinShader newBuiltinType = (BuiltinShader)value; if (builtinType == newBuiltinType) { return; } material.Shader = Builtin.GetShader(newBuiltinType); EditorApplication.SetDirty(material); RebuildParamGUI(material); bool newIsCustom = newBuiltinType == BuiltinShader.Custom; shaderField.Active = newIsCustom; }