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(); }
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();