From eb84bb298d2b95aec7b2ae12cbf25ac64f25379a Mon Sep 17 00:00:00 2001 From: tylermurphy534 Date: Sun, 6 Nov 2022 15:12:42 -0500 Subject: move to self host --- .../MaterialFallback/FallbackMaterialCache.cs | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback/FallbackMaterialCache.cs (limited to 'VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback/FallbackMaterialCache.cs') diff --git a/VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback/FallbackMaterialCache.cs b/VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback/FallbackMaterialCache.cs new file mode 100644 index 00000000..5a65be9b --- /dev/null +++ b/VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback/FallbackMaterialCache.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +public class FallbackMaterialCache +{ + private readonly Dictionary _fallbackMaterialCache = new Dictionary(); + + public void AddFallbackMaterial(Material material, Material fallbackMaterial) + { + if(!_fallbackMaterialCache.ContainsKey(material)) + { + _fallbackMaterialCache.Add(material, fallbackMaterial); + } + else + { + Debug.LogError($"Attempted to add a duplicate fallback material '{fallbackMaterial.name}' for original material '{material.name}'."); + } + } + + public bool TryGetFallbackMaterial(Material material, out Material fallbackMaterial) + { + if(material != null) + { + return _fallbackMaterialCache.TryGetValue(material, out fallbackMaterial); + } + + fallbackMaterial = null; + return false; + } + + public void Clear() + { + Material[] cachedFallbackMaterials = _fallbackMaterialCache.Values.ToArray(); + for(int i = cachedFallbackMaterials.Length - 1; i >= 0; i--) + { + Object.Destroy(cachedFallbackMaterials[i]); + } + + _fallbackMaterialCache.Clear(); + } +} -- cgit v1.2.3-freya