Ejemplo n.º 1
0
    private void OnSceneGUI()
    {
        Source = (NodeMove)target;

        for (int i = 0; i < Source.Nodes.Count; i++)
        {
            Source.Nodes[i] = Handles.PositionHandle(Source.Nodes[i], Quaternion.identity);
            Handles.Label(Source.Nodes[i], "Node " + (i + 1));
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(Source);
            EditorSceneManager.MarkSceneDirty(Source.gameObject.scene);
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 目的地までの最短ルートをチェックする
    /// </summary>
    /// <param name="cursorManager">Cursor manager.</param>
    /// <param name="endPos">End position.</param>
    public void CheckShortestRoute(ref CursorManager cursorManager, Vector3 endPos)

    {
        // 最短の移動ルート情報
        cursorManager.moveRoot = new List <Vector3>();

        // 開始地点から終了地点までたどり着けるか
        bool isEnd = false;

        NodeMove[,] nodeList = new NodeMove[MapManager.GetFieldData().height, MapManager.GetFieldData().width];
        nodeList[-(int)cursorManager.focusUnit.moveController.getPos().y, (int)cursorManager.focusUnit.moveController.getPos().x].aREA = AREA.UNIT;

        // スタート地点からエンドまで再帰的に移動コストをチェックする
        CheckRootAreaRecursive(ref nodeList, ref cursorManager.activeAreaList, cursorManager.focusUnit.moveController.getPos(), ref endPos, 0, ref isEnd);

        // ゴールできる場合は最短ルートをチェックする
        if (isEnd)
        {
            cursorManager.moveRoot = CheckEndRoot(ref cursorManager, ref nodeList, endPos);
        }
    }
Ejemplo n.º 3
0
    public override void OnInspectorGUI()
    {
        Source = (NodeMove)target;

        base.OnInspectorGUI();

        if (GUILayout.Button("Add Node"))
        {
            Source.Nodes.Add(Source.transform.position);
        }

        if (GUILayout.Button("Remove Node") && Source.Nodes.Count > 0)
        {
            Source.Nodes.RemoveAt(Source.Nodes.Count - 1);
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(Source);
            EditorSceneManager.MarkSceneDirty(Source.gameObject.scene);
        }
    }