diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/Import/MaterialFactory.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/Import/MaterialFactory.cs index ab4d0955b..518280865 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/Import/MaterialFactory.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/Import/MaterialFactory.cs @@ -14,20 +14,22 @@ namespace UniGLTF private readonly MaterialDescriptor m_defaultMaterialParams; private readonly List m_materials = new List(); - /// - /// gltfPritmitive.material が無い場合のデフォルトマテリアル - /// https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html#default-material - /// - /// - private Material m_defaultMaterial; - public IReadOnlyList Materials => m_materials; - public MaterialFactory(IReadOnlyDictionary externalMaterialMap, MaterialDescriptor defaultMaterialParams) { m_externalMap = externalMaterialMap; - m_defaultMaterialParams = defaultMaterialParams; + m_defaultMaterialParams = new MaterialDescriptor( + m_defaultMaterialKey.Name, + defaultMaterialParams.Shader, + defaultMaterialParams.RenderQueue, + defaultMaterialParams.TextureSlots, + defaultMaterialParams.FloatValues, + defaultMaterialParams.Colors, + defaultMaterialParams.Vectors, + defaultMaterialParams.Actions, + defaultMaterialParams.AsyncActions + ); } public struct MaterialLoadInfo @@ -56,11 +58,6 @@ namespace UniGLTF UnityObjectDestroyer.DestroyRuntimeOrEditor(x.Asset); } } - - if (m_defaultMaterial != null) - { - UnityObjectDestroyer.DestroyRuntimeOrEditor(m_defaultMaterial); - } } /// @@ -84,12 +81,6 @@ namespace UniGLTF m_materials.Remove(x); } } - - if (m_defaultMaterial != null) - { - take(m_defaultMaterialKey, m_defaultMaterial); - m_defaultMaterial = null; - } } public Material GetMaterial(int index) @@ -99,22 +90,16 @@ namespace UniGLTF return m_materials[index].Asset; } - public async Task GetDefaultMaterialAsync(IAwaitCaller awaitCaller) + /// + /// gltfPritmitive.material が無い場合のデフォルトマテリアル + /// https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html#default-material + /// + /// + public Task GetDefaultMaterialAsync(IAwaitCaller awaitCaller) { - if (m_externalMap.ContainsKey(m_defaultMaterialKey)) - { - m_defaultMaterial = m_externalMap[m_defaultMaterialKey]; - return m_externalMap[m_defaultMaterialKey]; - } - - if (m_defaultMaterial == null) - { - m_defaultMaterial = await LoadAsync(m_defaultMaterialParams, (_, _) => null, awaitCaller); - } - return m_defaultMaterial; + return LoadAsync(m_defaultMaterialParams, (_, _) => null, awaitCaller); } - public async Task LoadAsync(MaterialDescriptor matDesc, GetTextureAsyncFunc getTexture, IAwaitCaller awaitCaller) { if (m_externalMap.TryGetValue(matDesc.SubAssetKey, out Material material))