diff options
author | tylermurphy534 <tylermurphy534@gmail.com> | 2022-11-06 15:12:42 -0500 |
---|---|---|
committer | tylermurphy534 <tylermurphy534@gmail.com> | 2022-11-06 15:12:42 -0500 |
commit | eb84bb298d2b95aec7b2ae12cbf25ac64f25379a (patch) | |
tree | efd616a157df06ab661c6d56651853431ac6b08b /VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback/FallbackMaterialCache.cs | |
download | unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.gz unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.bz2 unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.zip |
move to self host
Diffstat (limited to 'VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback/FallbackMaterialCache.cs')
-rw-r--r-- | VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback/FallbackMaterialCache.cs | 42 |
1 files changed, 42 insertions, 0 deletions
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<Material, Material> _fallbackMaterialCache = new Dictionary<Material, Material>(); + + 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(); + } +} |