Exemplo n.º 1
0
 private static void DoClearCacheCoroutineStart(CacheErasingFlags flags)
 {
     if (!(instance.lastCoroutine is null))
     {
         WriteTheSignsMod.Controller.StopCoroutine(instance.lastCoroutine);
     }
     instance.lastCoroutine = WriteTheSignsMod.Controller?.StartCoroutine(instance.PurgeCache(flags, default));
 }
Exemplo n.º 2
0
        private IEnumerator PurgeCache(CacheErasingFlags cacheFlags, InstanceID instanceID)
        {
            coroutineFlagsToErase |= cacheFlags;
            yield return(0);

            var objectsToIterate = m_cacheSegments.Values.Cast <IItemCache>()
                                   .Concat(m_cacheVehicles.Values.Cast <IItemCache>())
                                   .Concat(m_cacheTransportLines.Values.Cast <IItemCache>())
                                   .Concat(m_cacheIntercityTransportLines.Values.Cast <IItemCache>())
                                   .Concat(m_cacheDistricts.Values.Cast <IItemCache>())
                                   .Concat(m_cacheParks.Values.Cast <IItemCache>())
                                   .Concat(m_cacheBuildings.Values.Cast <IItemCache>()).ToList();

            for (int i = 0; i < objectsToIterate.Count; i++)
            {
                objectsToIterate[i].PurgeCache(coroutineFlagsToErase, instanceID);
                if (i % 100 == 99)
                {
                    yield return(0);
                }
            }
            coroutineFlagsToErase  = 0;
            instance.lastCoroutine = null;
        }
Exemplo n.º 3
0
 public static bool Has(this CacheErasingFlags src, CacheErasingFlags test) => (src & test) != 0;