Example #1
0
        private void DetectExplosion(EntityBatch batch)
        {
            var chunks    = batch.GetComponentDataReadWrite <TileChunk>();
            var positions = batch.GetComponentData <Position>();

            for (int i = 0; i < batch.length; ++i)
            {
                var chunkPos = positions[i];

                if (chunks[i].flags.HasFlag(TileChunkFlags.NoneDestructible))
                {
                    continue;
                }

                for (int e = 0; e < this.m_ExplosionCount; ++e)
                {
                    var explPos  = this.m_ExplosionPositionBuffer[e];
                    var explData = this.m_ExplosionDataBuffer[e];

                    if (TileChunk.Intersects(chunkPos, explPos, explData.radius))
                    {
                        DestroyTilesInChunk(ref chunks[i], chunkPos, explPos, explData);
                    }
                }
            }
        }
Example #2
0
        private void RenderTiles(EntityBatch batch)
        {
            var chunks    = batch.GetComponentData <TileChunk>();
            var positions = batch.GetComponentData <Position>();

            for (int i = 0; i < batch.length; ++i)
            {
                if (TileChunk.Intersects(positions[i], this.m_ViewRect))
                {
                    RenderTileChunk(in chunks[i], positions[i]);
                }
            }
        }