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 --- .../TextureBlenderMaterialPropertyCacheHelper.cs | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 VRCSDK3Worlds/Assets/MeshBaker/scripts/TextureBlenders/TextureBlenderMaterialPropertyCacheHelper.cs (limited to 'VRCSDK3Worlds/Assets/MeshBaker/scripts/TextureBlenders/TextureBlenderMaterialPropertyCacheHelper.cs') diff --git a/VRCSDK3Worlds/Assets/MeshBaker/scripts/TextureBlenders/TextureBlenderMaterialPropertyCacheHelper.cs b/VRCSDK3Worlds/Assets/MeshBaker/scripts/TextureBlenders/TextureBlenderMaterialPropertyCacheHelper.cs new file mode 100644 index 00000000..ebaf3cba --- /dev/null +++ b/VRCSDK3Worlds/Assets/MeshBaker/scripts/TextureBlenders/TextureBlenderMaterialPropertyCacheHelper.cs @@ -0,0 +1,84 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System; + +namespace DigitalOpus.MB.Core +{ + public class TextureBlenderMaterialPropertyCacheHelper + { + private struct MaterialPropertyPair + { + public Material material; + public string property; + + public MaterialPropertyPair(Material m, string prop) + { + material = m; + property = prop; + } + + public override bool Equals(object obj) + { + if (!(obj is MaterialPropertyPair)) return false; + MaterialPropertyPair b = (MaterialPropertyPair)obj; + if (!material.Equals(b.material)) return false; + if (property != b.property) return false; + return true; + } + + public override int GetHashCode() + { + return base.GetHashCode(); + } + } + + private Dictionary nonTexturePropertyValuesForSourceMaterials = new Dictionary(); + + private bool AllNonTexturePropertyValuesAreEqual(string prop) + { + bool foundFirst = false; + object firstVal = null; + foreach (MaterialPropertyPair k in nonTexturePropertyValuesForSourceMaterials.Keys) + { + if (k.property.Equals(prop)) + { + if (!foundFirst) + { + firstVal = nonTexturePropertyValuesForSourceMaterials[k]; + foundFirst = true; + } + else + { + if (!firstVal.Equals(nonTexturePropertyValuesForSourceMaterials[k])) + { + return false; + } + } + } + } + return true; + } + + public void CacheMaterialProperty(Material m, string property, object value) + { + nonTexturePropertyValuesForSourceMaterials[new MaterialPropertyPair(m, property)] = value; + } + + public object GetValueIfAllSourceAreTheSameOrDefault(string property, object defaultValue) + { + if (AllNonTexturePropertyValuesAreEqual(property)) + { + foreach (MaterialPropertyPair k in nonTexturePropertyValuesForSourceMaterials.Keys) + { + if (k.property.Equals(property)) + { + return nonTexturePropertyValuesForSourceMaterials[k]; + } + } + } + + return defaultValue; + } + } +} \ No newline at end of file -- cgit v1.2.3-freya