From 8b384dffa0d9c63c7a657c6e567c2ddefbf046cd Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 11 Oct 2020 20:00:58 +0800 Subject: +Saionji show off scene --- .../ShaderProperty/Editor/ShaderPropMenu.cs | 99 ++++++++++++++++++++++ .../ShaderProperty/Editor/ShaderPropMenu.cs.meta | 11 +++ .../Editor/ShaderProperty.Editor.asmdef | 12 +++ .../Editor/ShaderProperty.Editor.asmdef.meta | 7 ++ 4 files changed, 129 insertions(+) create mode 100644 Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs create mode 100644 Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs.meta create mode 100644 Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef create mode 100644 Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef.meta (limited to 'Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor') diff --git a/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs new file mode 100644 index 00000000..b13dec97 --- /dev/null +++ b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs @@ -0,0 +1,99 @@ +using System.Reflection; +using System.Linq; +using UnityEditor; +using UnityEngine; +using System.IO; +using UniGLTF.ShaderPropExporter; +using System.Collections.Generic; + +namespace UniGLTF +{ + public static class ShaderPropMenu + { +#if VRM_DEVELOP + [MenuItem("VRM/ShaderProperty/PreExport ShaderProps")] +#endif + public static void PreExport() + { + foreach (var fi in typeof(PreExportShaders).GetFields( + BindingFlags.Static + | BindingFlags.Public + | BindingFlags.NonPublic)) + { + var attr = fi.GetCustomAttributes(true).FirstOrDefault(y => y is PreExportShadersAttribute); + if (attr != null) + { + var supportedShaders = fi.GetValue(null) as SupportedShader[]; + foreach (var supported in supportedShaders) + { + PreExport(supported); + } + } + } + } + + static string EscapeShaderName(string name) + { + return name.Replace("/", "_").Replace(" ", "_"); + } + + static string ExportDir + { + get + { + return Application.dataPath + "/VRM/ShaderProperty/Runtime"; + } + } + + static void PreExport(SupportedShader supportedShader) + { + var shader = Shader.Find(supportedShader.ShaderName); + var props = ShaderProps.FromShader(shader); + + var path = Path.Combine(ExportDir, supportedShader.TargetFolder); + path = Path.Combine(path, EscapeShaderName(supportedShader.ShaderName) + ".cs").Replace("\\", "/"); + Debug.LogFormat("PreExport: {0}", path); + File.WriteAllText(path, ToString(props, shader.name)); + } + + static string ToString(ShaderProps props, string shaderName) + { + var list = new List(); + foreach (var prop in props.Properties) + { + list.Add(string.Format("new ShaderProperty(\"{0}\", ShaderPropertyType.{1})\r\n", prop.Key, prop.ShaderPropertyType)); + } + + return string.Format(@"using System.Collections.Generic; + + +namespace UniGLTF.ShaderPropExporter +{{ + public static partial class PreShaderPropExporter + {{ + [PreExportShader] + static KeyValuePair {0} + {{ + get + {{ + return new KeyValuePair( + ""{1}"", + new ShaderProps + {{ + Properties = new ShaderProperty[]{{ +{2} + }} + }} + ); + }} + }} + }} +}} +" +, EscapeShaderName(shaderName) +, shaderName +, string.Join(",", list.ToArray())); + } + + } +} diff --git a/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs.meta b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs.meta new file mode 100644 index 00000000..0626004d --- /dev/null +++ b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5eb12c186c6337e4db278b5f01d47cae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef new file mode 100644 index 00000000..382622a7 --- /dev/null +++ b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef @@ -0,0 +1,12 @@ +{ + "name": "ShaderProperty.Editor", + "references": [ + "ShaderProperty.Runtime" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false +} \ No newline at end of file diff --git a/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef.meta b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef.meta new file mode 100644 index 00000000..f5affb98 --- /dev/null +++ b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bc66ece0f33b52446a0830c05781d4db +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: -- cgit v1.1-26-g67d0