From 29c32828ffc355e536d25991cc9f4f2217ec90b0 Mon Sep 17 00:00:00 2001
From: NiseVoid <nisevoid@gmail.com>
Date: Mon, 10 Jul 2023 17:23:01 +0200
Subject: [PATCH] Fix custom material plugin

---
 assets/rainbow_shader.wgsl    |  6 ++---
 src/render/material/plugin.rs | 44 ++++++++++++++++++-----------------
 2 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/assets/rainbow_shader.wgsl b/assets/rainbow_shader.wgsl
index ee2238b..fc10bb1 100644
--- a/assets/rainbow_shader.wgsl
+++ b/assets/rainbow_shader.wgsl
@@ -1,6 +1,6 @@
-#import kayak_ui::bindings
-#import kayak_ui::sample_quad
-#import kayak_ui::vertex_output
+#import kayak_ui::bindings globals
+#import kayak_ui::sample_quad sample_quad
+#import kayak_ui::vertex_output VertexOutput
 
 fn hsv2rgb(c: vec3<f32>) -> vec3<f32>
 {
diff --git a/src/render/material/plugin.rs b/src/render/material/plugin.rs
index 897a4d9..67a994c 100644
--- a/src/render/material/plugin.rs
+++ b/src/render/material/plugin.rs
@@ -37,26 +37,28 @@ where
         app.add_asset::<M>()
             .add_plugins(ExtractComponentPlugin::<Handle<M>>::extract_visible());
 
-        if let Ok(render_app) = app.get_sub_app_mut(RenderApp) {
-            render_app
-                .add_render_command::<TransparentUI, DrawMaterialUI<M>>()
-                .add_render_command::<TransparentOpacityUI, DrawMaterialUITransparent<M>>()
-                .init_resource::<MaterialUIPipeline<M>>()
-                .init_resource::<ExtractedMaterialsUI<M>>()
-                .init_resource::<RenderMaterialsUI<M>>()
-                .init_resource::<SpecializedRenderPipelines<MaterialUIPipeline<M>>>()
-                .add_systems(ExtractSchedule, extract_materials_ui::<M>)
-                .add_systems(
-                    Render,
-                    (
-                        prepare_materials_ui::<M>
-                            .in_set(RenderSet::Prepare)
-                            .after(PrepareAssetSet::PreAssetPrepare),
-                        queue_material_ui_quads::<M>
-                            .in_set(RenderSet::Queue)
-                            .after(crate::render::unified::pipeline::queue_quads),
-                    ),
-                );
-        }
+        app.sub_app_mut(RenderApp)
+            .add_render_command::<TransparentUI, DrawMaterialUI<M>>()
+            .add_render_command::<TransparentOpacityUI, DrawMaterialUITransparent<M>>()
+            .init_resource::<ExtractedMaterialsUI<M>>()
+            .init_resource::<RenderMaterialsUI<M>>()
+            .init_resource::<SpecializedRenderPipelines<MaterialUIPipeline<M>>>()
+            .add_systems(ExtractSchedule, extract_materials_ui::<M>)
+            .add_systems(
+                Render,
+                (
+                    prepare_materials_ui::<M>
+                        .in_set(RenderSet::Prepare)
+                        .after(PrepareAssetSet::PreAssetPrepare),
+                    queue_material_ui_quads::<M>
+                        .in_set(RenderSet::Queue)
+                        .after(crate::render::unified::pipeline::queue_quads),
+                ),
+            );
+    }
+
+    fn finish(&self, app: &mut App) {
+        app.sub_app_mut(RenderApp)
+            .init_resource::<MaterialUIPipeline<M>>();
     }
 }
-- 
GitLab