public void PresentChunk(Island island, int chunkCoordinateX, int chunkCoordinateY) { VisualChunkData chunkRenderData = ClearRenderDataForNewChunk(); FillRenderDataForOneChunk(island, chunkCoordinateX, chunkCoordinateY); if (intBuffersOfOpaqueBlocksInChunk.Count > 0) { RenderChunk(chunkRenderData, chunkCoordinateX, chunkCoordinateY); } }
private void RenderChunk(VisualChunkData chunkToRender, int chunkPositionX, int chunkPositionY) { ChunkRenderer chunkRenderer = TechnicalsFactory.GetInstance().GetChunkRendererInstance(); chunkToRender.SetUpWithNumberOfBlocksInChunk(intBuffersOfOpaqueBlocksInChunk.Count); chunkToRender.SetWorldPosition(chunkPositionX, chunkPositionY); for (int k = 0; k < floatBuffersOfOpaqueBlocksInChunk.Count; k += 3) { chunkToRender.AddVerticesToTemporaryBuffer(floatBuffersOfOpaqueBlocksInChunk[k]); chunkToRender.AddNormalsToTemporaryBuffer(floatBuffersOfOpaqueBlocksInChunk[k + 1]); chunkToRender.AddUvCoordinatesToTemporaryBuffer(floatBuffersOfOpaqueBlocksInChunk[k + 2]); } for (int k = 0; k < intBuffersOfOpaqueBlocksInChunk.Count; k++) { chunkToRender.AddIndicesToTemporaryBuffer(intBuffersOfOpaqueBlocksInChunk[k]); } chunkToRender.BuildChunkData(); chunkRenderer.RenderChunk(chunkToRender); }