示例#1
0
        public void TestDifferenceArrays()
        {
            ThreeDimensionalArray tda = new ThreeDimensionalArray();

            var expected = false;

            int[,,] mass1 = tda.GenerationArray();
            int[,,] mass2 = tda.GenerationArray();

            int[,,] actual = tda.DifferenceArrays(mass1, mass2);

            for (int i = 0; i < actual.GetLength(0); i++)
            {
                for (int j = 0; j < actual.GetLength(1); j++)
                {
                    for (int k = 0; k < actual.GetLength(2); k++)
                    {
                        if (actual[i, j, k] == mass1[i, j, k] - mass2[i, j, k])
                        {
                            expected = true;
                        }
                    }
                }
            }
            Assert.IsTrue(expected);
        }
示例#2
0
        public void TestMultiplicationArrays()
        {
            ThreeDimensionalArray tda = new ThreeDimensionalArray();
            var num = 3;

            int[,,] mass1 = tda.GenerationArray();

            var expected = false;

            int[,,] actual = tda.MultiplicationArray(mass1, num);

            for (int i = 0; i < actual.GetLength(0); i++)
            {
                for (int j = 0; j < actual.GetLength(1); j++)
                {
                    for (int k = 0; k < actual.GetLength(2); k++)
                    {
                        if (actual[i, j, k] == mass1[i, j, k] * num)
                        {
                            expected = true;
                        }
                    }
                }
            }
            Assert.IsTrue(expected);
        }
示例#3
0
        public void TestSumArrays()
        {
            ThreeDimensionalArray tda = new ThreeDimensionalArray();

            //Первый массив
            int[,,] mass1 = tda.GenerationArray();
            //Второй массив
            int[,,] mass2 = tda.GenerationArray();
            //Резульатат сложения
            var expected = false;

            int[,,] actual = tda.SumArray(mass1, mass2);

            for (int i = 0; i < actual.GetLength(0); i++)
            {
                for (int j = 0; j < actual.GetLength(1); j++)
                {
                    for (int k = 0; k < actual.GetLength(2); k++)
                    {
                        if (actual[i, j, k] == mass1[i, j, k] + mass2[i, j, k])
                        {
                            expected = true;
                        }
                    }
                }
            }

            Assert.IsTrue(expected);
        }
示例#4
0
        public void TestGenerationArray()
        {
            var expected = false;
            ThreeDimensionalArray tda = new ThreeDimensionalArray();

            var actual = tda.GenerationArray();

            for (int i = 0; i < actual.GetLength(0); i++)
            {
                for (int j = 0; j < actual.GetLength(1); j++)
                {
                    for (int k = 0; k < actual.GetLength(2); k++)
                    {
                        expected = true;
                    }
                }
            }
            Assert.IsTrue(expected);
        }
示例#5
0
        public void TestComparisonArrays()
        {
            ThreeDimensionalArray tda = new ThreeDimensionalArray();
            var sum = 0;

            int[,,] mass1 = tda.GenerationArray();

            var actual = tda.ComparisonArrays(mass1);

            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    for (int k = 0; k < 5; k++)
                    {
                        sum += mass1[i, j, k];
                    }
                }
            }
            Assert.AreEqual(sum, actual);
        }
    void Start()
    {
        Blocks = new ThreeDimensionalArray <GameObject>(xSize, heightModifier, zSize);

        for (float x = 0; x < xSize; x++)
        {
            for (float z = 0; z < zSize; z++)
            {
                float noiseX = x / xSize;
                float noiseZ = z / zSize;

                float noise = Mathf.PerlinNoise(noiseX, noiseZ);
                int   h     = (int)(noise * heightModifier);
                if (h == 0)
                {
                    h = 1;
                }
                for (int i = 0; i < h; i++)
                {
                    GameObject instantiated = Instantiate(DirtBlock, new Vector3(x, i, z), Quaternion.identity, transform);
                    Blocks[(int)x, h - 1, (int)z] = instantiated;
                }
            }
        }

        var meshFilters = GetComponentsInChildren <MeshFilter>();
        var combine     = new CombineInstance[meshFilters.Length - 1];
        int index       = 0;

        for (int a = 0; a < meshFilters.Length; a++)
        {
            if (meshFilters[a].sharedMesh == null)
            {
                continue;
            }
            combine[index].mesh        = meshFilters[a].sharedMesh;
            combine[index++].transform = meshFilters[a].transform.localToWorldMatrix;
            meshFilters[a].gameObject.SetActive(false);
        }

        GetComponent <MeshFilter>().mesh = new Mesh();
        GetComponent <MeshFilter>().mesh.CombineMeshes(combine);


        //MeshFilter baseMeshFilter = gameObject.AddComponent<MeshFilter>();
        //Mesh newMesh = new Mesh();
        //newMesh.Clear();
        //baseMeshFilter.mesh = newMesh;
        //List<Vector3> vertices = new List<Vector3>();

        //// We loop and check if any block is to our left
        //// If there isn't, and our own block isn't null, we add a bottom back left corner
        //// If we are the last block in the 1D array, we add our bottom front left corner

        //for (int x = 0; x < Blocks.GetLength(0); x++)
        //{
        //    for (int y = 0; y < Blocks.GetLength(1); y++)
        //    {
        //        for (int z = 0; z < Blocks.GetLength(2); z++)
        //        {
        //            if (Blocks.ElementExists(x, y, z))
        //            {
        //                for (int i = 0; i < Corners.Length; i++)
        //                {
        //                    Vector3 vertex = new Vector3(x, y, z) + Corners[i];
        //                    vertices.Add(vertex);
        //                }
        //            }
        //        }
        //    }
        //}

        //newMesh.vertices = vertices.ToArray();

        //int[] triangles = {
        //    0, 2, 1, //face front
        //    0, 3, 2,
        //    2, 3, 4, //face top
        //    2, 4, 5,
        //    1, 2, 5, //face right
        //    1, 5, 6,
        //    0, 7, 4, //face left
        //    0, 4, 3,
        //    5, 4, 7, //face back
        //    5, 7, 6,
        //    0, 6, 7, //face bottom
        //    0, 1, 6
        //};

        //int[] plusTris = new int[triangles.Length * 2];
        //for (int i = 0; i < plusTris.Length; i++)
        //{
        //    if (i < triangles.Length)
        //        plusTris[i] = triangles[i];
        //    else
        //        plusTris[i] = triangles[i / 2] + 8;
        //}


        //newMesh.triangles = plusTris;


        //newMesh.Optimize();
        //newMesh.RecalculateNormals();
    }