fix module name for AssetPath shaders (#9186)
# Objective AssetPath shader imports check if the shader is added using the path without quotes. this causes them to be re-added even if already present, which can cause previous dependents to get unloaded leading to a "missing import" error. ## Solution fix the module name of AssetPath shaders used for checking if it's already added to correctly use the quoted name.
This commit is contained in:
		
							parent
							
								
									a30da0001e
								
							
						
					
					
						commit
						9ad546ecec
					
				| @ -214,7 +214,7 @@ impl ShaderCache { | |||||||
|         shaders: &HashMap<Handle<Shader>, Shader>, |         shaders: &HashMap<Handle<Shader>, Shader>, | ||||||
|         import: &ShaderImport, |         import: &ShaderImport, | ||||||
|     ) -> Result<(), PipelineCacheError> { |     ) -> Result<(), PipelineCacheError> { | ||||||
|         if !composer.contains_module(import.as_str()) { |         if !composer.contains_module(&import.module_name()) { | ||||||
|             if let Some(shader_handle) = import_path_shaders.get(import) { |             if let Some(shader_handle) = import_path_shaders.get(import) { | ||||||
|                 if let Some(shader) = shaders.get(shader_handle) { |                 if let Some(shader) = shaders.get(shader_handle) { | ||||||
|                     for import in &shader.imports { |                     for import in &shader.imports { | ||||||
| @ -366,7 +366,8 @@ impl ShaderCache { | |||||||
|                 shaders_to_clear.extend(data.dependents.iter().map(|h| h.clone_weak())); |                 shaders_to_clear.extend(data.dependents.iter().map(|h| h.clone_weak())); | ||||||
| 
 | 
 | ||||||
|                 if let Some(Shader { import_path, .. }) = self.shaders.get(&handle) { |                 if let Some(Shader { import_path, .. }) = self.shaders.get(&handle) { | ||||||
|                     self.composer.remove_composable_module(import_path.as_str()); |                     self.composer | ||||||
|  |                         .remove_composable_module(&import_path.module_name()); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -303,9 +303,10 @@ pub enum ShaderImport { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl ShaderImport { | impl ShaderImport { | ||||||
|     pub fn as_str(&self) -> &str { |     pub fn module_name(&self) -> Cow<'_, String> { | ||||||
|         match self { |         match self { | ||||||
|             ShaderImport::AssetPath(s) | ShaderImport::Custom(s) => s, |             ShaderImport::AssetPath(s) => Cow::Owned(format!("\"{s}\"")), | ||||||
|  |             ShaderImport::Custom(s) => Cow::Borrowed(s), | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 robtfm
						robtfm