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); }