Ejemplo n.º 1
0
    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);
        }