void CalculateListObject() { //list relist if (list.Count == 4) { Triangulator.ReCalcuatePosition(list); } //3D -> 2D position recalculate Vector2[] _vertices2D = new Vector2[list.Count]; Vector3 _pos; for (int i = 0; i < list.Count; i++) { _pos = list[i].position; _vertices2D[i] = new Vector2(_pos.x, _pos.y); } Triangulator _tr = new Triangulator(_vertices2D); int[] _triangles = _tr.Triangulate(); Vector3[] _vertices = new Vector3[_vertices2D.Length]; for (int i = 0; i < _vertices.Length; i++) { _vertices[i] = new Vector3(_vertices2D[i].x, _vertices2D[i].y, 0); } // Create the mesh mesh.Clear(); mesh.vertices = _vertices; mesh.triangles = _triangles; mesh.uv = _tr.CalculateUV(); mesh.RecalculateNormals(); mesh.RecalculateBounds(); //material texture, material.mainTextureScale = _tr.CalculateScale(1f); }
void CalculateListObject() { if (goNewTile != null) { Destroy(goNewTile); } goNewTile = new GameObject(); MeshFilter _meshFilter = goNewTile.AddComponent <MeshFilter>(); MeshRenderer _meshRenderer = goNewTile.AddComponent <MeshRenderer>(); Mesh _mesh = new Mesh(); _meshRenderer.material = material; _mesh.name = "TileMesh"; _meshFilter.mesh = _mesh; //¸®½ºÆ®ÀÇ À§Ä¡¸¦ ÀçÁ¶Á¤ ÇÒ ÇÊ¿ä°¡ ÀÖÀ»‹š ÀçÁ¶Á¤ÇÑ´Ù... if (list.Count == 4) { Triangulator.ReCalcuatePosition(list); } //3D -> 2D position recalculate Vector2[] _vertices2D = new Vector2[list.Count]; Vector3 _pos; float _y = 0f; for (int i = 0; i < list.Count; i++) { _pos = list[i].position; _vertices2D[i] = new Vector2(_pos.x, _pos.z); _y += _pos.y; } _y /= list.Count; //triangle ... Triangulator _tr = new Triangulator(_vertices2D); int[] _triangles = _tr.Triangulate(); //vertices Vector3[] _vertices = new Vector3[_vertices2D.Length]; for (int i = 0; i < _vertices.Length; i++) { _vertices[i] = new Vector3(_vertices2D[i].x, _y, _vertices2D[i].y); } // Create the mesh _mesh.vertices = _vertices; _mesh.triangles = _triangles; _mesh.uv = _tr.CalculateUV(); _mesh.RecalculateNormals(); _mesh.RecalculateBounds(); //material texture, material.mainTextureScale = _tr.CalculateScale(.2f); for (int i = 0; i < list.Count; i++) { Destroy(list[i].gameObject); } list.Clear(); line.SetVertexCount(0); }