use of org.terasology.engine.logic.behavior.core.BehaviorNode in project Terasology by MovingBlocks.
the class CountCallsTest method assertBT.
public void assertBT(String tree, List<BehaviorState> result, List<Integer> executed, boolean step) {
BehaviorNode node = fromJson(tree);
node.construct(null);
List<BehaviorState> actualStates = Lists.newArrayList();
for (int i = 0; i < result.size(); i++) {
BehaviorState state = node.execute(null);
actualStates.add(state);
}
node.destruct(null);
assertEquals(result, actualStates);
assertEquals(executed, executeCalled);
}
use of org.terasology.engine.logic.behavior.core.BehaviorNode in project Terasology by MovingBlocks.
the class Example method main.
public static void main(String[] args) {
BehaviorTreeBuilder treeBuilder = new BehaviorTreeBuilder();
BehaviorNode node = treeBuilder.fromJson("{ sequence:[ success, success, failure ] }");
logger.info("{}", new DefaultBehaviorTreeRunner(node, null).step());
treeBuilder.registerAction("print", Print.class);
node = treeBuilder.fromJson("{ sequence:[ success, { print:{msg:world} } ] }");
logger.info("{}", new DefaultBehaviorTreeRunner(node, null).step());
treeBuilder.registerAction("delay", Delay.class);
Actor actor = new Actor(null);
actor.setDelta(0.1f);
node = treeBuilder.fromJson("{ sequence:[ success, { delay:{duration:1}}, { print:{msg:Hello} }, " + "{ delay:{duration:1}}, { print:{msg:World} } ] }");
DefaultBehaviorTreeRunner tree = new DefaultBehaviorTreeRunner(node, actor);
for (int i = 0; i < 100; i++) {
tree.step();
}
treeBuilder.registerDecorator("repeat", Repeat.class);
actor = new Actor(null);
actor.setDelta(0.1f);
node = treeBuilder.fromJson("{ sequence:[ " + "{repeat :{ count:5, child:{print:{msg:x}}}}, success, { delay:{duration:1}}, " + "{ print:{msg:Hello} }, { delay:{duration:1}}, { print:{msg:World} } " + "] }");
tree = new DefaultBehaviorTreeRunner(node, actor);
for (int i = 0; i < 100; i++) {
tree.step();
}
}
use of org.terasology.engine.logic.behavior.core.BehaviorNode in project Terasology by MovingBlocks.
the class BehaviorTreeFormat method load.
public BehaviorTreeData load(InputStream stream) {
BehaviorTreeBuilder builder = CoreRegistry.get(BehaviorTreeBuilder.class);
if (builder == null) {
builder = new BehaviorTreeBuilder();
CoreRegistry.put(BehaviorTreeBuilder.class, builder);
}
BehaviorNode node = builder.fromJson(stream);
BehaviorTreeData data = new BehaviorTreeData();
data.setRoot(node);
return data;
}
use of org.terasology.engine.logic.behavior.core.BehaviorNode in project Terasology by MovingBlocks.
the class BehaviorEditor method createNode.
public RenderableNode createNode(BehaviorNodeComponent data) {
if (tree == null) {
return null;
}
BehaviorNode node = behaviorNodeFactory.createNode(data);
newNode = createRenderableNode(node);
behaviorSystem.treeModified(tree);
return newNode;
}
use of org.terasology.engine.logic.behavior.core.BehaviorNode in project Terasology by MovingBlocks.
the class BehaviorEditor method copyNode.
public void copyNode(RenderableNode node) {
BehaviorTreeBuilder treeBuilder = CoreRegistry.get(BehaviorTreeBuilder.class);
String json = treeBuilder.toJson(node.getNode());
BehaviorNode nodeCopy = treeBuilder.fromJson(json);
List<RenderableNode> renderables = createRenderables(nodeCopy);
if (renderables.size() > 0) {
newNode = renderables.get(0);
Vector2f oldPos = new Vector2f(newNode.getPosition());
layout(newNode);
oldPos.sub(newNode.getPosition());
newNode.move(oldPos);
}
}
Aggregations