Beispiel #1
0
        void RenderMapInView(BufferJobData <MapViewBuffer> viewData, TerminalJobContext termData)
        {
            var mapData       = new MapJobContext(this, GetSingletonEntity <Map>(), true);
            var tileAssetsCTX = new MapTileAssetsBufferJobContext(this, true);

            Job.WithReadOnly(mapData)
            .WithReadOnly(viewData)
            .WithCode(() =>
            {
                var map  = mapData.Grid;
                var term = termData.GetAccessor();
                var view = viewData.GetArray <bool>();

                var tileAssets = tileAssetsCTX.Tiles;

                if (view.Length == 0)
                {
                    return;
                }

                TerminalTile t = TerminalTile.Default;

                for (int i = 0; i < view.Length; ++i)
                {
                    if (view[i])
                    {
                        int tileType = (int)map[i];
                        t            = tileAssets[tileType];
                        term[i]      = t;
                    }
                }
            }).Schedule();
        }
Beispiel #2
0
        void RenderView(Entity viewEntity, TerminalJobContext termData)
        {
            var viewData = new BufferJobData <MapViewBuffer>(this, viewEntity, true);

            RenderMapInView(viewData, termData);
            RenderItemsInview(viewData, termData);
            RenderActorsInView(viewData, termData);
        }
Beispiel #3
0
        void RenderActorsInView(BufferJobData <MapViewBuffer> viewData, TerminalJobContext termData)
        {
            Entities
            //.WithoutBurst()
            .WithAll <Actor>()
            .ForEach((in Position pos, in Renderable renderable) =>
            {
                var view = viewData.GetArray <bool>();
                var term = termData.GetAccessor();

                int i = Grid2D.PosToIndex(pos, term.Width);
                if (view[i])
                {
                    term[i] = renderable.ToTile();
                }
            }).Schedule();