Esempio n. 1
0
        /// <summary>
        /// 全ての頂点の消去
        /// </summary>
        public void Clear()
        {
            int count = mainLine.GetVertexCount();

            for (int i = 0; i < count; ++i)
            {
                //エフェクト用
                RemoveLast();
            }
            subLine.Clear();
            mf.mesh = null;
        }
Esempio n. 2
0
    /// <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);
    }
Esempio n. 3
0
    /// <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);
    }