Пример #1
0
        /////////////////////////////////////////

        public static Component_Mesh GetMesh(RectangleF uv)
        {
            //try to get from the cache
            if (items.TryGetValue(uv, out var item))
            {
                item.EngineTime = Time.Current;

                items.Remove(uv);
                items.Add(uv, item);

                return(item.Mesh);
            }

            //remove old item from the cache
            if (items.Count >= MaxCacheSize)
            {
                foreach (var pair in items)
                {
                    if (pair.Value.EngineTime != Time.Current)
                    {
                        pair.Value.Dispose();
                        items.Remove(pair.Key);
                        break;
                    }
                }
            }

            //create item and add to the cache
            item = new Item(uv);
            items.Add(uv, item);

            return(item.Mesh);
        }
Пример #2
0
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        internal static void RemoveInternal(Resource resource)
        {
            lock (lockObject)
                resources.Remove(GetKey(resource.name));
        }