public static DynamicTileBrush FromXProxy(LibraryX.DynamicTileBrushX proxy, TilePoolManager manager, DynamicTileBrushClassRegistry registry)
        {
            if (proxy == null)
            {
                return(null);
            }

            DynamicTileBrush brush = new DynamicTileBrush(proxy, manager, registry);

            if (brush._brushClass == null)
            {
                return(null);
            }

            return(brush);
        }
        private DynamicTileBrush(LibraryX.DynamicTileBrushX proxy, TilePoolManager manager, DynamicTileBrushClassRegistry registry)
            : base(proxy.Uid, proxy.Name, proxy.TileWidth, proxy.TileHeight)
        {
            _brushClass = registry.Lookup(proxy.Type);
            if (_brushClass == null)
            {
                return;
            }

            _tiles = _brushClass.CreateTileProxyList();

            foreach (var entry in proxy.Entries)
            {
                TilePool pool = manager.PoolFromItemKey(entry.TileId);
                if (pool == null)
                {
                    continue;
                }

                SetTile(entry.Slot, pool.GetTile(entry.TileId));
            }
        }