Esempio n. 1
0
    public void RemovePointAt(Transform point)
    {
        _Vertex originPoint = point.GetComponent <_Vertex>();
        int     index       = points.IndexOf(originPoint);
        _Block  originBlock = blocks[index];

        blocks[NextIndex(index)].SetEndsPosition(_vertices[PreIndex(index)], _vertices[NextIndex(index)]);

        points.Remove(originPoint);
        blocks.Remove(originBlock);
        _vertices.RemoveAt(index);

        originBlock.Recycle();
        originPoint.Recycle();

        if (_vertices.Count < 1)
        {
            RecyclePoints();
        }
    }
    public void InsertPointAt(_Block block, Vector3 position)
    {
        //_Block block = blockObj.GetComponent<_Block>();
        Edge2D edge = block.Edge;

        block.Recycle();
        blocks.Remove(block);

        _Vertex vertex = vertexPrefab.Spawn();

        vertex.transform.SetParent(transform);
        vertex.transform.position = position;
        vertex.Border             = this;

        edge.MiddlePoint = vertex.Point;

        Edge2D e0 = new Edge2D(edge.Points[0], vertex.Point);
        Edge2D e1 = new Edge2D(vertex.Point, edge.Points[1]);

        _Block b0 = blockPrefab.Spawn();
        _Block b1 = blockPrefab.Spawn();

        b0.transform.SetParent(transform);
        b1.transform.SetParent(transform);
        b0.Border = this;
        b1.Border = this;
        b0.Edge   = e0;
        b1.Edge   = e1;

        blocks.Add(b0);
        blocks.Add(b1);

        vertexs.Add(vertex);

        _lazyAllVertices.isValeChanged = true;

        //Debug.Log("Border Vertices Count : " + Vertices.Count);
    }