Ejemplo n.º 1
0
        public static void CreateAreaMesh(Utility.PositionSetList areaSet, Action <CreateRoadMeshScripts.MeshSet> action)
        {
            var verticesList  = new List <Vector3>();
            var trianglesList = new List <int>();
            var uvList        = new List <Vector2>();

            while (areaSet.Count != 2)
            {
                var index = verticesList.Count;
                // 最東を選ぶ
                var tri  = areaSet.GetSortedList()[0];
                var next = areaSet.FindByIndex(tri.NextIndex);
                var prev = areaSet.FindByIndex(tri.PrevIndex);
                // 最東から内側のメッシュ生成する
                verticesList.Add(tri.position);
                verticesList.Add(next.position);
                verticesList.Add(prev.position);
                CreateRoadMeshScripts.AddTrianglesList(verticesList, trianglesList, index + 0, index + 1, index + 2, Vector3.up);
                uvList.Add(new Vector2(0, 0));
                uvList.Add(new Vector2(1, 0));
                uvList.Add(new Vector2(1, 1));
                // 選んだ頂点を減らす。
                areaSet.RemoveSortedListFirst();
            }

            CreateRoadMeshScripts.CreateMeshSet(verticesList, trianglesList, uvList, action);
        }