Beispiel #1
0
    /** ********************************************************************************
    * @summary 消す想定のラインを選択する
    ***********************************************************************************/
    private void CheckSelect(ChalkLine line)
    {
        var id = line.GetInstanceID();

        // 既にあればスキップする
        if (this.selectableLines.ContainsKey(id))
        {
            return;
        }

        // まだ書いてる途中のときスキップする
        if (line.Drawing)
        {
            return;
        }

        // 選択中のものを変更する
        this.selectableLines.Add(id, line);
        if (this.selectedLine != null)
        {
            this.selectedLine.DeselectLine();
        }

        this.selectedLine = this.selectableLines.OrderByDescending(item => item.Value.CreatedTime).First().Value;
        this.selectedLine.SelectLine();
    }
Beispiel #2
0
    /** ********************************************************************************
    * @summary 出たときの処理
    ***********************************************************************************/
    private void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.tag == "Line")
        {
            var removeId = collision.GetComponent <ChalkLine>().GetInstanceID();
            this.selectableLines.Remove(removeId);

            if (this.selectedLine != null && this.selectedLine.GetInstanceID() == removeId)
            {
                // 非選択状態にする
                this.selectedLine.DeselectLine();

                // 選択中のものを変える
                if (this.selectableLines.Count() > 0)
                {
                    this.selectedLine = this.selectableLines.OrderByDescending(item => item.Value.CreatedTime).First().Value;
                    this.selectedLine.SelectLine();
                }
                else
                {
                    this.selectedLine = null;
                }
            }
        }
    }
Beispiel #3
0
 /** ********************************************************************************
 * @summary 線をクリアする
 ***********************************************************************************/
 public void ClearLines()
 {
     linePoints.Clear();
     if (newLine != null)
     {
         Destroy(newLine.gameObject);
         newLine = null;
     }
 }
Beispiel #4
0
    /** ********************************************************************************
    * @summary 選択状態を全て解除する
    ***********************************************************************************/
    public void ResetSelectAll()
    {
        if (this.selectedLine != null)
        {
            this.selectedLine.DeselectLine();
            this.selectedLine = null;
        }

        this.selectableLines.Clear();
    }
Beispiel #5
0
    /** ********************************************************************************
    * @summary 線の初期地点を設定する
    *          基本的にはコントローラーでの判定用
    ***********************************************************************************/
    public void SetStartPos(Vector3 initPos)
    {
        this.touchPos   = initPos;
        this.touchPos.z = 0;
        // ClearLines();

        // 二本め以降引くための処理
        this.linePoints.Clear();
        this.newLine = null;
    }
Beispiel #6
0
    }                                                                       // 消すオブジェクトがあるかどうか(消せるかどうか)

    /** ********************************************************************************
    * @summary 選択状態の線を削除する
    ***********************************************************************************/
    public void DeleteLine()
    {
        if (this.selectedLine != null)
        {
            var removeId = this.selectedLine.GetInstanceID();
            this.selectedLine.DeleteLine();
            this.selectedLine = null;
            this.selectableLines.Remove(removeId);

            // 消した後に次のやつを選択する
            if (this.selectableLines.Count() > 0)
            {
                this.selectedLine = this.selectableLines.OrderByDescending(item => item.Value.CreatedTime).First().Value;
                this.selectedLine.SelectLine();
            }
        }
    }
Beispiel #7
0
    /** ********************************************************************************
    * @summary 線を引く
    *          基本的にはコントローラーでの判定用
    ***********************************************************************************/
    public void DragLine(Vector3 currentPos)
    {
        Vector3 startPos = this.touchPos;
        Vector3 endPos   = currentPos;

        endPos.z = 0;
        if (linePoints.Count == 0)
        {
            linePoints.Add(startPos);
        }

        // lineLength以上、カーソルが移動していたら
        if ((endPos - startPos).magnitude > lineLength)
        {
            if (newLine == null)
            {
                newLine = Instantiate(linePrefab);
                newLine.gameObject.name = "Line" + linePoints.Count;
            }

            LineRenderer line = newLine.GetComponent <LineRenderer>();// write line
            line.startColor    = this.lineColor;
            line.endColor      = this.lineColor;
            line.positionCount = 2;
            line.startWidth    = lineWidth;//0.2f;

            // 線の始点、終点設定
            line.SetPosition(0, startPos);
            line.SetPosition(1, endPos);

            // 線のその他情報の設定
            Rigidbody2D rigid2D = newLine.GetComponent <Rigidbody2D>();
            newLine.transform.parent = this.transform;
            PolygonCollider2D polygon = newLine.GetComponent <PolygonCollider2D>();
            linePoints.Add(endPos);
            WriteLine2D(line, polygon);
            touchPos = endPos;
        }
    }
Beispiel #8
0
    private ChalkLine newLine; // 現在引いてる線

    /** ********************************************************************************
    * @summary 初期化処理
    ***********************************************************************************/
    private void Start()
    {
        this.linePoints = new List <Vector2>();
        this.newLine    = null;
    }