libgdx/gdx-ai

Error parsing file

Ali-RS opened this issue · 2 comments

Hi
Can i load array of values in text format ?
For attribute

@TaskAttribute(required = true)
    public String[] animNames;

I am getting parsing error for this line
createSequence  sequenceName:"walk_run"  animNames:"walk","run"

com.badlogic.gdx.utils.SerializationException: Error parsing file: doha_animstate.btree
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeReader.parse(BehaviorTreeReader.java:120) ~[gdx-ai-1.8.0.jar:?]
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeParser.parse(BehaviorTreeParser.java:121) ~[gdx-ai-1.8.0.jar:?]
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeLibrary.retrieveArchetypeTree(BehaviorTreeLibrary.java:130) ~[gdx-ai-1.8.0.jar:?]
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeLibrary.createBehaviorTree(BehaviorTreeLibrary.java:111) ~[gdx-ai-1.8.0.jar:?]
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeLibraryManager.createBehaviorTree(BehaviorTreeLibraryManager.java:81) ~[gdx-ai-1.8.0.jar:?]
	at com.overthemoon.app.state.view.MonkanimState$AnimStateMachineContainer.addObject(MonkanimState.java:140) ~[main/:?]
	at com.overthemoon.app.state.view.MonkanimState$AnimStateMachineContainer.addObject(MonkanimState.java:117) ~[main/:?]
	at com.simsilica.es.EntityContainer.addObjects(EntityContainer.java:156) ~[sio2-1.0.3-SNAPSHOT.jar:?]
	at com.simsilica.es.EntityContainer.update(EntityContainer.java:200) ~[sio2-1.0.3-SNAPSHOT.jar:?]
	at com.overthemoon.app.state.view.MonkanimState.update(MonkanimState.java:70) ~[main/:?]
	at com.jme3.app.state.AppStateManager.update(AppStateManager.java:287) ~[jme3-core-3.2.0-SNAPSHOT.jar:3.2-1]
	at com.jme3.app.SimpleApplication.update(SimpleApplication.java:236) ~[jme3-core-3.2.0-SNAPSHOT.jar:3.2-1]
	at com.jme3.system.lwjgl.LwjglWindow.runLoop(LwjglWindow.java:403) ~[jme3-lwjgl3-3.2.0-SNAPSHOT.jar:3.2.0-UNKNOWN]
	at com.jme3.system.lwjgl.LwjglWindow.run(LwjglWindow.java:486) ~[jme3-lwjgl3-3.2.0-SNAPSHOT.jar:3.2.0-UNKNOWN]
	at com.jme3.system.lwjgl.LwjglWindow.create(LwjglWindow.java:324) ~[jme3-lwjgl3-3.2.0-SNAPSHOT.jar:3.2.0-UNKNOWN]
	at com.jme3.app.LegacyApplication.start(LegacyApplication.java:463) ~[jme3-core-3.2.0-SNAPSHOT.jar:3.2-1]
	at com.jme3.app.LegacyApplication.start(LegacyApplication.java:424) ~[jme3-core-3.2.0-SNAPSHOT.jar:3.2-1]
	at com.jme3.app.SimpleApplication.start(SimpleApplication.java:125) ~[jme3-core-3.2.0-SNAPSHOT.jar:3.2-1]
	at example.Main.main(Main.java:111) ~[main/:?]
Caused by: com.badlogic.gdx.utils.SerializationException: Error parsing behavior tree on line 13 near:   sequenceName:"walk_run"  animNames:"walk","run"
      transition from:"walk_run" to:"idle"
      when state:"idle"
      interrupt from:"idle" to:"walk_run"
      when state:"walk_run"
      startWith state:"idle"
  dynamicGuardSelector
    (startManager?)  $startManager
    (isCurrentStateEqualsTo? states:"walk_run")  $blendWithSpeed

	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeReader.parse(BehaviorTreeReader.java:541) ~[gdx-ai-1.8.0.jar:?]
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeParser$DefaultBehaviorTreeReader.parse(BehaviorTreeParser.java:323) ~[gdx-ai-1.8.0.jar:?]
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeReader.parse(BehaviorTreeReader.java:92) ~[gdx-ai-1.8.0.jar:?]
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeReader.parse(BehaviorTreeReader.java:118) ~[gdx-ai-1.8.0.jar:?]
	... 18 more

What is the proper way to load it ?

Thanks in advance

Arrays are not supported, sorry.
But you can use a string with comma-separated value, for instance.
Then the first time the start method is executed you parse the string and set the corresponding instance array.
Your example would become something like that

createSequence  sequenceName:"walk_run"  animNames:"walk,run"

No problem.
I will use comma-separated string as you said.
Thanks