List of usage examples for com.badlogic.gdx.ai.btree Task getChild
public Task<E> getChild(int i)
From source file:com.badlogic.gdx.ai.tests.BehaviorTreeViewer.java
License:Apache License
@Override public void create() { step = 0;// w w w . java2 s .c o m taskNodes = new ObjectMap<Task<Dog>, TaskNode>(); BehaviorTreeParser<Dog> parser = new BehaviorTreeParser<Dog>(BehaviorTreeParser.DEBUG_NONE); BehaviorTree<Dog> tree = parser.parse(Gdx.files.internal("data/dog.tree"), null); dog = new Dog("Dog 1", tree); tree.addListener(new BehaviorTree.Listener<Dog>() { @Override public void statusUpdated(Task<Dog> task, Task.Status previousStatus) { TaskNode tn = taskNodes.get(task); tn.updateStatus(previousStatus, step); } @Override public void childAdded(Task<Dog> task, int index) { TaskNode parentNode = taskNodes.get(task); Task<Dog> child = task.getChild(index); addToTree(displayTree, parentNode, child, null, 0); displayTree.expandAll(); } }); KryoUtils.initKryo(); skin = new Skin(Gdx.files.internal("data/uiskin.json")); treeStatus = SUSPENDED; runDelaySlider = new Slider(0, 5, 0.01f, false, skin); runDelaySlider.setValue(.5f); runButton = new TextButton("Run", skin); stepButton = new TextButton("Step", skin); loadButton = new TextButton("Load", skin); loadButton.setDisabled(true); saveButton = new TextButton("Save", skin); stepLabel = new Label(new StringBuilder(LABEL_STEP + step), skin); stage = new Stage(new ScreenViewport()); Table table = new Table(); table.row().height(20).fillX(); table.add(runDelaySlider); table.add(runButton); table.add(stepButton); table.add(saveButton); table.add(loadButton); table.add(stepLabel); table.row(); displayTree = new Tree(skin); redrawTree(); table.add(displayTree).colspan(3).fillX().fillY().expand(true, true); stage.addActor(table); table.setFillParent(true); saveButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { save(); saved = true; loadButton.setDisabled(false); } }); loadButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { load(); } }); stepButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { treeStatus = STEP; // step(); } }); runButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (treeStatus == SUSPENDED) { treeStatus = RUNNING; delay = runDelaySlider.getValue(); // this makes it start immediately runButton.setText("Suspend"); stepButton.setDisabled(true); saveButton.setDisabled(true); loadButton.setDisabled(true); } else { treeStatus = SUSPENDED; runButton.setText("Run"); stepButton.setDisabled(false); saveButton.setDisabled(false); loadButton.setDisabled(!saved); } } }); Gdx.input.setInputProcessor(stage); setScreen(this); }
From source file:com.badlogic.gdx.ai.tests.BehaviorTreeViewer.java
License:Apache License
private void addToTree(Tree displayTree, TaskNode parentNode, Task<Dog> task, IntArray taskSteps, int taskStepIndex) { TaskNode node = new TaskNode(task, taskSteps == null ? step - 1 : taskSteps.get(taskStepIndex), skin); taskNodes.put(task, node);/*from w w w. ja v a2s .c o m*/ if (parentNode == null) { displayTree.add(node); } else { parentNode.add(node); } for (int i = 0; i < task.getChildCount(); i++) { Task<Dog> child = task.getChild(i); addToTree(displayTree, node, child, taskSteps, taskStepIndex + 1); } }
From source file:com.badlogic.gdx.ai.tests.btree.BehaviorTreeViewer.java
License:Apache License
public BehaviorTreeViewer(BehaviorTree<E> tree, boolean loadAndSave, Skin skin) { super(skin);/* www .j av a2 s. c o m*/ this.tree = tree; step = 0; taskNodes = new ObjectMap<Task<E>, TaskNode>(); tree.addListener(new BehaviorTree.Listener<E>() { @Override public void statusUpdated(Task<E> task, Task.Status previousStatus) { TaskNode tn = taskNodes.get(task); if (tn != null) tn.updateStatus(previousStatus, step); } @Override public void childAdded(Task<E> task, int index) { TaskNode parentNode = taskNodes.get(task); Task<E> child = task.getChild(index); addToTree(displayTree, parentNode, child, null, 0); displayTree.expandAll(); } }); treeStatus = BT_SUSPENDED; runDelaySlider = new Slider(0, 5, 0.01f, false, skin); runDelaySlider.setValue(.5f); runButton = new TextButton("Run", skin); runButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { if (treeStatus == BT_SUSPENDED) { treeStatus = BT_RUNNING; runDelayAccumulator = runDelaySlider.getValue(); // this makes it start immediately runButton.setText("Suspend"); stepButton.setDisabled(true); if (saveButton != null) saveButton.setDisabled(true); if (loadButton != null) loadButton.setDisabled(true); } else { treeStatus = BT_SUSPENDED; runButton.setText("Run"); stepButton.setDisabled(false); if (saveButton != null) saveButton.setDisabled(false); if (loadButton != null) loadButton.setDisabled(!saved); } } }); stepButton = new TextButton("Step", skin); stepButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { treeStatus = BT_STEP; } }); resetButton = new TextButton("Reset", skin); resetButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { BehaviorTreeViewer.this.tree.reset(); rebuildDisplayTree(); } }); if (loadAndSave) { loadButton = new TextButton("Load", skin); loadButton.setDisabled(true); loadButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { load(); } }); saveButton = new TextButton("Save", skin); saveButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { save(); saved = true; loadButton.setDisabled(false); } }); } stepLabel = new Label(new StringBuilder(LABEL_STEP + step), skin); this.row().height(26).fillX(); this.add(runDelaySlider); this.add(runButton); this.add(stepButton); this.add(resetButton); if (loadAndSave) { this.add(saveButton); this.add(loadButton); } this.add(stepLabel); this.row(); displayTree = new Tree(skin); rebuildDisplayTree(); this.add(displayTree).colspan(5 + (loadAndSave ? 2 : 0)).grow(); }
From source file:com.badlogic.gdx.ai.tests.btree.BehaviorTreeViewer.java
License:Apache License
private int addToTree(Tree displayTree, TaskNode parentNode, Task<E> task, IntArray taskSteps, int taskStepIndex) { TaskNode node = new TaskNode(task, this, taskSteps == null ? step - 1 : taskSteps.get(taskStepIndex), getSkin());/*from w w w .j a v a 2 s. co m*/ taskNodes.put(task, node); if (parentNode == null) { displayTree.add(node); } else { parentNode.add(node); } taskStepIndex++; for (int i = 0; i < task.getChildCount(); i++) { Task<E> child = task.getChild(i); taskStepIndex = addToTree(displayTree, node, child, taskSteps, taskStepIndex); } return taskStepIndex; }