/// <summary> /// 全ての頂点の消去 /// </summary> public void Clear() { int count = mainLine.GetVertexCount(); for (int i = 0; i < count; ++i) { //エフェクト用 RemoveLast(); } subLine.Clear(); mf.mesh = null; }
/// <summary> /// 溜まっている頂点リストを取得して消去、再描画 /// </summary> public List <Vector2> FlushVertices() { List <Vector2> verts = polyLine.GetVertices(); //エフェクト if (removeParticle) { for (int i = 0; i < verts.Count - 1; ++i) { EmitRemoveEffect(verts[i], verts[i + 1], density); } } //消去 polyLine.Clear(); noticeLine.Clear(); //コールバック if (removeVertexCallback != null) { removeVertexCallback(); } //描画 draw = true; return(verts); }
/// <summary> /// 頂点の削除 /// </summary> private bool RemoveVertex(int index) { int size = polyLine.GetVertexCount(); if (size == 0) { return(false); } Vector2 p1 = polyLine.GetVertex(index); polyLine.Remove(index); --size; //予告線と補助線の変更 if (size == 0) { noticeLine.Clear(); } else { Vector2 point = polyLine.GetVertex(size - 1); noticeLine.Change(0, point); //エフェクトの生成 EmitRemoveEffect(point, p1, density); } //アニメーションの距離更新 targetDistance = polyLine.TotalDistance; lerped = true; //コールバック if (removeVertexCallback != null) { removeVertexCallback(); } return(true); }