//-------Stupid way...Orz----------

    /*
     * private int[] GetNodeFormName(string _nodeName) {
     *
     *  int strXStart = _nodeName.IndexOf("(");
     *  int strXLength = _nodeName.IndexOf(",");
     *  int XValue = Int32.Parse(_nodeName.Substring(strXStart + 1, strXLength - 1));
     *
     *  int strYStart = _nodeName.IndexOf(",");
     *  int strYLength = _nodeName.IndexOf(")") - strYStart;
     *  int YValue = Int32.Parse(_nodeName.Substring(strYStart + 1, strYLength - 1));
     *
     *
     *  Debug.Log("x = " + XValue + " y = " + YValue);
     *
     *  int[] tmp = new int[] { XValue, YValue };
     *
     *  return tmp;
     * }
     */

    private void ChangeNodeState(Node _node, NODE_STATE_ENUM _State)
    {
        _node.State = _State;

        Debug.Assert(_node != null);
        Debug.Assert(_node.Self != null);

        Renderer NodeRDR = _node.Self.GetComponent <Renderer>();

        switch (_State)
        {
        case NODE_STATE_ENUM.NOTHING:
            NodeRDR.material.color = Color.white;
            break;

        case NODE_STATE_ENUM.CHECKED:
            NodeRDR.material.color = Color.blue;
            break;

        case NODE_STATE_ENUM.ANSWER:
            NodeRDR.material.color = Color.red;
            break;

        case NODE_STATE_ENUM.CLOSE:
            NodeRDR.material.color = Color.black;
            break;

        case NODE_STATE_ENUM.START:
            StartNode = _node;
            NodeRDR.material.color = Color.green;
            break;

        case NODE_STATE_ENUM.END:
            EndNode = _node;
            NodeRDR.material.color = Color.gray;
            break;
        }
    }
 public Node(Vector2 _pos, Transform _self, NODE_STATE_ENUM _state)
 {
     pos   = _pos;
     Self  = _self;
     State = _state;
 }