diff options
Diffstat (limited to 'VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback')
2 files changed, 53 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(); + } +} diff --git a/VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback/FallbackMaterialCache.cs.meta b/VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback/FallbackMaterialCache.cs.meta new file mode 100644 index 00000000..64637629 --- /dev/null +++ b/VRCSDK3AvatarsLegacy/Assets/VRCSDK/Dependencies/VRChat/Scripts/MaterialFallback/FallbackMaterialCache.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 10121679f780956408f9a434a526f553 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |