libgdx/gdx-ai

Use inner class in btree file

Genhis opened this issue · 0 comments

Issue details

It's not possible to use inner classes in btree file (parser does not allow '$' character used for separating class names).

Reproduction steps/code

  1. Create a public static inner class.
  2. Use full name instead of import in btree file.
  3. com.badlogic.gdx.utils.SerializationException: Error parsing behavior tree on line 3 near: $Inner

OuterClass.java:

package test;

import com.badlogic.gdx.ai.btree.leaf.Success;

public class OuterClass {
	public static class Inner<E> extends Success<E> {}
}

mytree.btree:

root
	selector
		test.OuterClass$Inner

Version of gdx-ai and/or relevant dependencies

1.8.1

Stacktrace

com.badlogic.gdx.utils.SerializationException: Error parsing behavior tree on line 3 near: $Inner
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeReader.parse(BehaviorTreeReader.java:541)
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeParser$DefaultBehaviorTreeReader.parse(BehaviorTreeParser.java:326)
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeReader.parse(BehaviorTreeReader.java:92)
	at com.badlogic.gdx.ai.btree.utils.BehaviorTreeReader.parse(BehaviorTreeReader.java:118)