From: Shawdooow Date: Sun, 21 Nov 2021 09:37:12 +0000 (-0500) Subject: add back old # system X-Git-Tag: v0.2.4-beta~15 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=99ac79f83a48da46cde5712aa0897241cc190f95;p=jp%2Fvke.net.git add back old # system --- diff --git a/vke/src/ShaderInfo.cs b/vke/src/ShaderInfo.cs index 7cc498b..6e7a41e 100644 --- a/vke/src/ShaderInfo.cs +++ b/vke/src/ShaderInfo.cs @@ -43,7 +43,8 @@ namespace vke { /// /// vke Device /// Stage flags. - /// path to a compiled SpirV Shader on disk or as embedded ressource if path contains ':' (ex; Assembly:shader.vert.spv) + /// path to a compiled SpirV Shader on disk or as embedded ressource if path starts with '#' (ex; #Assembly.shader.vert.spv) + /// or contains ':' (ex; Assembly:shader.vert.spv) /// Specialization info /// shader entry point, 'main' by default. public ShaderInfo (Device dev, VkShaderStageFlags _stageFlags, string _spirvPath, SpecializationInfo specializationInfo = null, string entryPoint = "main"): diff --git a/vke/src/Utils.cs b/vke/src/Utils.cs index fc16876..405c73b 100644 --- a/vke/src/Utils.cs +++ b/vke/src/Utils.cs @@ -40,8 +40,23 @@ namespace Vulkan { /// Use ':' to split assembly and resource (ex; "Assembly:shader.vert.spv") /// /// The stream from path. - /// The file or stream path. Embedded resource path contains ':'. + /// The file or stream path. Embedded resource path starts with '#' or contains ':'. public static Stream GetStreamFromPath (string path) { + if (path.StartsWith("#", StringComparison.Ordinal)) + { + Stream stream = null; + string resId = path.Substring(1); + if (tryFindResource(Assembly.GetEntryAssembly(), resId, out stream)) + return stream; + string[] assemblyNames = resId.Split('.'); + Assembly assembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(aa => aa.GetName().Name == assemblyNames[0]); + if (assembly == null && assemblyNames.Length > 3) + assembly = AppDomain.CurrentDomain.GetAssemblies() + .FirstOrDefault(aa => aa.GetName().Name == $"{assemblyNames[0]}.{assemblyNames[1]}"); + if (assembly != null && tryFindResource(assembly, resId, out stream)) + return stream; + throw new Exception("Resource not found: " + path); + } if (path.Contains(":", StringComparison.Ordinal)) { Stream stream = null; string[] assemblyNames = path.Split (':');