diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/lua/userdata/BehaviorState.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/lua/userdata/BehaviorState.kt index 07f8258a..512f04bc 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/lua/userdata/BehaviorState.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/lua/userdata/BehaviorState.kt @@ -275,13 +275,25 @@ private fun createBehaviorTree(args: LuaThread.ArgStack): Int { val root = createNode(args.lua, mergedParams.root, mergedParams.mappedParameters, blackboard, scripts, functions, handles) handles.add(root) + args.lua.loadGlobal("require") + + scripts.forEach { + args.lua.dup() + args.lua.push(it) + args.lua.call(1) + } + check(args.lua.loadGlobal("BehaviorState") == LuaType.FUNCTION) { "Global BehaviorState is not a Lua function" } args.lua.push(blackboard) args.lua.push(root) - args.lua.call(2, 1) + args.lua.push("bake") + check(args.lua.loadTableValue() == LuaType.FUNCTION) { "BehaviorTree.bake is not a Lua function" } + args.lua.dup(-2) + args.lua.call(1) + handles.forEach { it.close() } return 1 } diff --git a/src/main/resources/scripts/behavior.lua b/src/main/resources/scripts/behavior.lua index 2ae2c9f6..58af354d 100644 --- a/src/main/resources/scripts/behavior.lua +++ b/src/main/resources/scripts/behavior.lua @@ -665,6 +665,10 @@ function statePrototype:clear() self.tree:reset() end +function statePrototype:bake() + self.tree:bake() +end + function statePrototype:blackboard() return self._blackboard end