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