From 5c0316746e34f0d777036e60ed8552cdaa62fd8e Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sat, 28 Dec 2024 22:42:04 +0700 Subject: [PATCH] Fix not baking behavior tree --- .../kstarbound/lua/userdata/BehaviorState.kt | 14 +++++++++++++- src/main/resources/scripts/behavior.lua | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) 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