using UnityEngine; using System.Collections; using System.Collections.Generic; public interface IWMG_Caching_Functions { void updateCacheAndFlagList(ref List cache, List val, ref bool flag); void updateCacheAndFlag(ref T cache, T val, ref bool flag); void SwapVals(ref T val1, ref T val2); void SwapValsList(ref List val1, ref List val2); } public class WMG_Caching_Functions : IWMG_Caching_Functions { public void updateCacheAndFlag(ref T cache, T val, ref bool flag) { if (!EqualityComparer.Default.Equals(cache, val)) { cache = val; flag = true; } } public void updateCacheAndFlagList(ref List cache, List val, ref bool flag) { if (cache.Count != val.Count) { cache = new List(val); flag = true; } else { for (int i = 0; i < val.Count; i++) { if (!EqualityComparer.Default.Equals(val[i], cache[i])) { cache = new List(val); flag = true; break; } } } } public void SwapVals(ref T val1, ref T val2) { T tmp = val1; val1 = val2; val2 = tmp; } public void SwapValsList(ref List val1, ref List val2) { List tmp = new List(val1); val1 = val2; val2 = tmp; } }