예제 #1
0
 private void traceNode(BT.BTNode node, string pre)
 {
     Debug.Log(pre + " " + node.GetType());
     pre += "  -  ";
     if (node is BT.ComponentNode)
     {
         var compNode = node as BT.ComponentNode;
         foreach (var child in compNode.childs)
         {
             traceNode(child, pre);
         }
     }
 }
예제 #2
0
    void PopupMenuSelect(object objProperty)
    {
        if (objProperty.GetType() != typeof(PopupMenuOptions))
        {
            return;
        }
        var option = (PopupMenuOptions)objProperty;

        switch (option)
        {
        case PopupMenuOptions.AddAct:
            onAddNodeByType(selectNode, typeof(BT.ActionNode));
            break;

        case PopupMenuOptions.AddCdn:
            onAddNodeByType(selectNode, typeof(BT.ConditionNode));
            break;

        case PopupMenuOptions.Up:
        {
            int index = selectNode.parent.childs.IndexOf(selectNode);
            if (index > 0)
            {
                selectNode.parent.remove(selectNode.sn);
                selectNode.parent.add(index - 1, selectNode);
            }
        }
        break;

        case PopupMenuOptions.Down:
        {
            int index = selectNode.parent.childs.IndexOf(selectNode);
            if (index < selectNode.parent.childs.Count - 1)
            {
                selectNode.parent.remove(selectNode.sn);
                selectNode.parent.add(index + 1, selectNode);
            }
        }
        break;

        case PopupMenuOptions.Rep:
        {
            Type       selectType = null;
            BTViewNode node       = selectNode as BTViewNode;
            if (node.proxy is BT.SelectorNode)
            {
                selectType = typeof(BT.SequenceNode);
            }
            else if (node.proxy is BT.SequenceNode)
            {
                selectType = typeof(BT.SelectorNode);
            }
            BT.BTNode childDataNode = Activator.CreateInstance(selectType) as BT.BTNode;
            var       childViewNode = new BTViewNode();
            childViewNode.formatByDataNode(childDataNode);

            var parentDataNode = (selectNode.parent as BTViewNode).proxy as BT.ComponentNode;
            parentDataNode.addChild(childDataNode);
            selectNode.parent.add(childViewNode);

            for (int i = 0; i < selectNode.childs.Count; i++)
            {
                if (selectNode.childs [i].parent == selectNode)
                {
                    childViewNode.add(selectNode.childs [i]);
                }
            }
            onDelNode(selectNode);
        }
        break;

        case PopupMenuOptions.AddSel:
        {
            Type       selectType = null;
            BTViewNode node       = selectNode as BTViewNode;
            selectType = typeof(BT.SelectorNode);

            BT.BTNode childDataNode = Activator.CreateInstance(selectType) as BT.BTNode;
            var       childViewNode = new BTViewNode();
            childViewNode.formatByDataNode(childDataNode);

            var parentDataNode = (selectNode as BTViewNode).proxy as BT.ComponentNode;
            parentDataNode.addChild(childDataNode);
            selectNode.parent.add(childViewNode);
        }
        break;

        case PopupMenuOptions.AddSeq:
        {
            Type       selectType = null;
            BTViewNode node       = selectNode as BTViewNode;
            selectType = typeof(BT.SequenceNode);

            BT.BTNode childDataNode = Activator.CreateInstance(selectType) as BT.BTNode;
            var       childViewNode = new BTViewNode();
            childViewNode.formatByDataNode(childDataNode);
            var parentDataNode = (selectNode as BTViewNode).proxy as BT.ComponentNode;
            parentDataNode.addChild(childDataNode);
            selectNode.parent.add(childViewNode);
        }
        break;

        case PopupMenuOptions.Del:
            onDelNode(selectNode);
            break;
        }
    }
예제 #3
0
 public void formatByDataNode(BT.BTNode dataNode)
 {
 }