public IEnumerator FlattenedIndicesAreCalculatedFromTemporaryBuffer() { VisualChunkData testCandidate = new VisualChunkData(); int[] indices = { 2, 4 }; int[] secondIndices = { 5, 7 }; int[] thirdIndices = { 9, 8 }; testCandidate.SetUpWithNumberOfBlocksInChunk(3); testCandidate.AddIndicesToTemporaryBuffer(indices); testCandidate.AddIndicesToTemporaryBuffer(secondIndices); testCandidate.AddIndicesToTemporaryBuffer(thirdIndices); testCandidate.AddVerticesToTemporaryBuffer(new float[0]); testCandidate.AddVerticesToTemporaryBuffer(new float[0]); testCandidate.AddVerticesToTemporaryBuffer(new float[0]); testCandidate.AddNormalsToTemporaryBuffer(new float[0]); testCandidate.AddNormalsToTemporaryBuffer(new float[0]); testCandidate.AddNormalsToTemporaryBuffer(new float[0]); testCandidate.AddUvCoordinatesToTemporaryBuffer(new float[0]); testCandidate.AddUvCoordinatesToTemporaryBuffer(new float[0]); testCandidate.AddUvCoordinatesToTemporaryBuffer(new float[0]); testCandidate.BuildChunkData(); int[] result = testCandidate.GetIndices(); yield return(null); Assert.That(result.Length, Is.EqualTo(6)); Assert.That(result[0], Is.EqualTo(2)); Assert.That(result[1], Is.EqualTo(4)); Assert.That(result[2], Is.EqualTo(5)); Assert.That(result[3], Is.EqualTo(7)); Assert.That(result[4], Is.EqualTo(9)); Assert.That(result[5], Is.EqualTo(8)); }
public IEnumerator FlattenedNormalsAreCalculatedFromTemporaryBuffer() { VisualChunkData testCandidate = new VisualChunkData(); float[] normals = { 1.4f, 2.3f }; float[] secondNormals = { 5.4f, 7.1f }; float[] thirdNormals = { 0.4f, 1.5f }; testCandidate.SetUpWithNumberOfBlocksInChunk(3); testCandidate.AddNormalsToTemporaryBuffer(normals); testCandidate.AddNormalsToTemporaryBuffer(secondNormals); testCandidate.AddNormalsToTemporaryBuffer(thirdNormals); testCandidate.AddIndicesToTemporaryBuffer(new int[0]); testCandidate.AddIndicesToTemporaryBuffer(new int[0]); testCandidate.AddIndicesToTemporaryBuffer(new int[0]); testCandidate.AddVerticesToTemporaryBuffer(new float[0]); testCandidate.AddVerticesToTemporaryBuffer(new float[0]); testCandidate.AddVerticesToTemporaryBuffer(new float[0]); testCandidate.AddUvCoordinatesToTemporaryBuffer(new float[0]); testCandidate.AddUvCoordinatesToTemporaryBuffer(new float[0]); testCandidate.AddUvCoordinatesToTemporaryBuffer(new float[0]); testCandidate.BuildChunkData(); float[] result = testCandidate.GetNormals(); yield return(null); Assert.That(result.Length, Is.EqualTo(6)); Assert.That(result[0], Is.EqualTo(1.4f)); Assert.That(result[1], Is.EqualTo(2.3f)); Assert.That(result[2], Is.EqualTo(5.4f)); Assert.That(result[3], Is.EqualTo(7.1f)); Assert.That(result[4], Is.EqualTo(0.4f)); Assert.That(result[5], Is.EqualTo(1.5f)); }
public void TestThatRenderingBlocksInOnePointOneChunkIsDoneProperly() { Island islandToRender = new Island(31); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(18, 2, 18)); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(19, 2, 18)); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(18, 2, 19)); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(19, 2, 19)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(18, 1, 18)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(19, 1, 18)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(18, 1, 19)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(19, 1, 19)); ChunkPresenter testCandidate = new ChunkPresenter(); testCandidate.PresentChunk(islandToRender, 1, 1); VisualChunkData lastRenderedChunkData = ChunkRendererMock.GetLastRenderChunkCallData(); Assert.That(lastRenderedChunkData, Is.Not.Null); Assert.That(lastRenderedChunkData.GetWorldX(), Is.EqualTo(1)); Assert.That(lastRenderedChunkData.GetWorldY(), Is.EqualTo(1)); Assert.That(lastRenderedChunkData.GetVertices().Length, Is.EqualTo(288)); Assert.That(lastRenderedChunkData.GetIndices().Length, Is.EqualTo(144)); Assert.That(lastRenderedChunkData.GetNormals().Length, Is.EqualTo(288)); Assert.That(lastRenderedChunkData.GetUvCoordinates().Length, Is.EqualTo(192)); }
public IEnumerator WorldPositionCanBeSet() { VisualChunkData testCandidate = new VisualChunkData(); testCandidate.SetWorldPosition(5, 9); yield return(null); Assert.That(testCandidate.GetWorldX(), Is.EqualTo(5)); Assert.That(testCandidate.GetWorldY(), Is.EqualTo(9)); }
public ChunkMesh(VisualChunkData chunkData) { chunkRoot = new GameObject(); meshFilter = chunkRoot.AddComponent <MeshFilter>(); meshRenderer = chunkRoot.AddComponent <MeshRenderer>(); this.chunkData = chunkData; chunkRoot.name = GetUniqueChunkName(); UpdateMeshBasedOnChunkData(); }
private ChunkMesh CreateChunkMesh(VisualChunkData chunkData) { ChunkMesh result = new ChunkMesh(chunkData); result.SetMaterial(opaqueChunkMaterial); result.SetRootTransform(transform); Vector3 chunkPosition = new Vector3(chunkData.GetWorldX() * StandardIslandPresenter.CHUNK_EDGE_LENGTH_IN_BLOCKS * 0.5f, 0, chunkData.GetWorldY() * StandardIslandPresenter.CHUNK_EDGE_LENGTH_IN_BLOCKS * 0.5f); result.SetPosition(chunkPosition); return(result); }
public void TestThatCoveredMiddleBlockIsNotRendered() { Island islandToRender = new Island(46); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(34, 3, 18)); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(35, 3, 18)); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(36, 3, 18)); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(34, 3, 19)); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(35, 3, 19)); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(36, 3, 19)); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(34, 3, 20)); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(35, 3, 20)); islandToRender.PlaceBlockAt(GrassyEarthBlock.GetInstance(), new BlockPosition(36, 3, 20)); islandToRender.PlaceBlockAt(EarthBlock.GetInstance(), new BlockPosition(34, 2, 18)); islandToRender.PlaceBlockAt(EarthBlock.GetInstance(), new BlockPosition(35, 2, 18)); islandToRender.PlaceBlockAt(EarthBlock.GetInstance(), new BlockPosition(36, 2, 18)); islandToRender.PlaceBlockAt(EarthBlock.GetInstance(), new BlockPosition(34, 2, 19)); islandToRender.PlaceBlockAt(EarthBlock.GetInstance(), new BlockPosition(35, 2, 19)); islandToRender.PlaceBlockAt(EarthBlock.GetInstance(), new BlockPosition(36, 2, 19)); islandToRender.PlaceBlockAt(EarthBlock.GetInstance(), new BlockPosition(34, 2, 20)); islandToRender.PlaceBlockAt(EarthBlock.GetInstance(), new BlockPosition(35, 2, 20)); islandToRender.PlaceBlockAt(EarthBlock.GetInstance(), new BlockPosition(36, 2, 20)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(34, 1, 18)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(35, 1, 18)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(36, 1, 18)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(34, 1, 19)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(35, 1, 19)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(36, 1, 19)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(34, 1, 20)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(35, 1, 20)); islandToRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(36, 1, 20)); ChunkPresenter testCandidate = new ChunkPresenter(); testCandidate.PresentChunk(islandToRender, 2, 1); VisualChunkData lastRenderedChunkData = ChunkRendererMock.GetLastRenderChunkCallData(); Assert.That(lastRenderedChunkData, Is.Not.Null); Assert.That(lastRenderedChunkData.GetWorldX(), Is.EqualTo(2)); Assert.That(lastRenderedChunkData.GetWorldY(), Is.EqualTo(1)); Assert.That(lastRenderedChunkData.GetVertices().Length, Is.EqualTo(648)); Assert.That(lastRenderedChunkData.GetIndices().Length, Is.EqualTo(324)); Assert.That(lastRenderedChunkData.GetNormals().Length, Is.EqualTo(648)); Assert.That(lastRenderedChunkData.GetUvCoordinates().Length, Is.EqualTo(432)); }
public void TestThatIslandIsPresentedInChunks() { Island toRender = new Island(64); toRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(15, 0, 15)); toRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(16, 0, 15)); toRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(15, 0, 16)); toRender.PlaceBlockAt(RockBlock.GetInstance(), new BlockPosition(16, 0, 16)); StandardIslandPresenter testCandidate = new StandardIslandPresenter(); testCandidate.PresentIsland(toRender); VisualChunkData lastRenderedChunkData = ChunkRendererMock.GetLastRenderChunkCallData(); Assert.That(lastRenderedChunkData.GetWorldX(), Is.EqualTo(1)); }
public IEnumerator FlattenedVerticesAreCalculatedFromTemporaryBuffer() { VisualChunkData testCandidate = new VisualChunkData(); float[] vertices = { 0.2f, 0.3f, 0.4f, 0.3f, 0.7f, 0.1f }; float[] secondVertices = { 0.3f, 0.4f, 0.5f, 0.6f, 0.8f, 0.3f }; testCandidate.SetUpWithNumberOfBlocksInChunk(2); testCandidate.AddVerticesToTemporaryBuffer(vertices); testCandidate.AddVerticesToTemporaryBuffer(secondVertices); testCandidate.AddIndicesToTemporaryBuffer(new int[0]); testCandidate.AddIndicesToTemporaryBuffer(new int[0]); testCandidate.AddNormalsToTemporaryBuffer(new float[0]); testCandidate.AddNormalsToTemporaryBuffer(new float[0]); testCandidate.AddUvCoordinatesToTemporaryBuffer(new float[0]); testCandidate.AddUvCoordinatesToTemporaryBuffer(new float[0]); testCandidate.BuildChunkData(); float[] result = testCandidate.GetVertices(); yield return(null); Assert.That(result.Length, Is.EqualTo(12)); Assert.That(result[0], Is.EqualTo(0.2f)); Assert.That(result[1], Is.EqualTo(0.3f)); Assert.That(result[2], Is.EqualTo(0.4f)); Assert.That(result[3], Is.EqualTo(0.3f)); Assert.That(result[4], Is.EqualTo(0.7f)); Assert.That(result[5], Is.EqualTo(0.1f)); Assert.That(result[6], Is.EqualTo(0.3f)); Assert.That(result[7], Is.EqualTo(0.4f)); Assert.That(result[8], Is.EqualTo(0.5f)); Assert.That(result[9], Is.EqualTo(0.6f)); Assert.That(result[10], Is.EqualTo(0.8f)); Assert.That(result[11], Is.EqualTo(0.3f)); }
public void RenderChunk(VisualChunkData chunkData) { CreateChunkMesh(chunkData); }
public void RenderChunk(VisualChunkData chunkData) { lastRenderChunkCallData = chunkData; renderedChunkData.Add(chunkData); }
public static void ResetMock() { lastRenderChunkCallData = null; renderedChunkData.Clear(); }