Exemplo n.º 1
0
        public void Update(IIconDescriptor[] icons)
        {
            var nonUsed = _iconTextures.Keys.ToList();

            foreach (var id in icons)
            {
                var iconTexture = default(IconTextureWrapper);
                if (!_iconTextures.ContainsKey(id))
                {
                    iconTexture = new IconTextureWrapper(id);
                    Allocator.ExecuteSynchronized(() => _iconTextures.Add(id, iconTexture));
                }
                else
                {
                    iconTexture = _iconTextures[id];
                }
                iconTexture.Visible = id.Visible;
                nonUsed.Remove(id);
            }
            if (nonUsed.Count > 0)
            {
                Allocator.ExecuteSynchronized(() =>
                {
                    foreach (var id in nonUsed)
                    {
                        if (!_iconTextures.ContainsKey(id))
                        {
                            continue;
                        }
                        _iconTextures[id].Dispose();
                        _iconTextures.Remove(id);
                    }
                });
            }
        }