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 CreateMesh() { switch (type) { case eMeshType.TMesh: vertices2D = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 100), new Vector2(0, 100), new Vector2(0, 150), new Vector2(150, 150), new Vector2(150, 100), new Vector2(100, 100), new Vector2(100, 50), new Vector2(150, 50), new Vector2(150, 0), }; break; case eMeshType.BoxClock: vertices2D = new Vector2[] { new Vector2(0, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(50, 0) }; break; case eMeshType.BoxAntiClock: vertices2D = new Vector2[] { new Vector2(0, 0), new Vector2(50, 0), new Vector2(50, 50), new Vector2(0, 50) }; break; case eMeshType.PolygonClock: vertices2D = new Vector2[] { new Vector2(10, 0), new Vector2(0, 50), new Vector2(50, 50), new Vector2(40, 0) }; break; case eMeshType.PolygonAntiClock: vertices2D = new Vector2[] { new Vector2(0, 0), new Vector2(10, 50), new Vector2(40, 50), new Vector2(50, 0) }; break; } // Use the triangulator to get indices for creating triangles Triangulator tr = new Triangulator(vertices2D); int[] _triangles = tr.Triangulate(); // Create the Vector3 vertices 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(); GetComponent <MeshRenderer>().material.mainTextureScale = tr.CalculateScale(10f); // Set up game object with mesh; //gameObject.AddComponent(typeof(MeshRenderer)); //MeshFilter filter = gameObject.AddComponent(typeof(MeshFilter)) as MeshFilter; }
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); }