]> O.S.I.I.S - jp/vke.net.git/commitdiff
add back old # system 12/head
authorShawdooow <banhammer1915@gmail.com>
Sun, 21 Nov 2021 09:37:12 +0000 (04:37 -0500)
committerShawdooow <banhammer1915@gmail.com>
Sun, 21 Nov 2021 09:37:12 +0000 (04:37 -0500)
vke/src/ShaderInfo.cs
vke/src/Utils.cs

index 7cc498b61e833b33e41abc9f705eb618f571b686..6e7a41ed8aa84484ba28534502ff3f14cce6467a 100644 (file)
@@ -43,7 +43,8 @@ namespace vke {
                /// </summary>
                /// <param name="dev">vke Device</param>
                /// <param name="_stageFlags">Stage flags.</param>
-               /// <param name="_spirvPath">path to a compiled SpirV Shader on disk or as embedded ressource if path contains ':' (ex; Assembly:shader.vert.spv)</param>
+               /// <param name="_spirvPath">path to a compiled SpirV Shader on disk or as embedded ressource if path starts with '#' (ex; #Assembly.shader.vert.spv)</param>
+               /// or contains ':' (ex; Assembly:shader.vert.spv)</param>
                /// <param name="specializationInfo">Specialization info</param>
                /// <param name="entryPoint">shader entry point, 'main' by default.</param>
                public ShaderInfo (Device dev, VkShaderStageFlags _stageFlags, string _spirvPath, SpecializationInfo specializationInfo = null, string entryPoint = "main"):
index fc16876aaf5aac930b7e29f75b0dea7c6156d2bb..405c73b31c50fbb3c27840e24e242ffe493c7845 100644 (file)
@@ -40,8 +40,23 @@ namespace Vulkan {
                /// Use ':' to split assembly and resource (ex; "Assembly:shader.vert.spv")
                /// </summary>
                /// <returns>The stream from path.</returns>
-               /// <param name="path">The file or stream path. Embedded resource path contains ':'.</param>
+               /// <param name="path">The file or stream path. Embedded resource path starts with '#' or contains ':'.</param>
                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 (':');