PGRData/Script/matrix/xbehavior/XLuaBehaviorManager.lua

61 lines
1.9 KiB
Lua
Raw Normal View History

CsXBehaviorManager = CS.BehaviorTree.XBehaviorTreeManager
CsNodeStatus = CS.BehaviorTree.XNodeStatus
CsBehaviorNodeType = CS.BehaviorTree.XBehaviorNodeType
XLuaBehaviorManager = {}
local NodeClassType = {}
local AgentClassType = {}
--注册行为节点
function XLuaBehaviorManager.RegisterNode(super, classType, nodeType, islua, needUpdate)
super = XLuaBehaviorNode or super
CsXBehaviorManager.Instance:RegisterLuaNodeProxy(classType, nodeType, islua, needUpdate)
local behaviorNode = XClass(super, classType)
NodeClassType[classType] = behaviorNode
return behaviorNode
end
--创建行为节点实例
function XLuaBehaviorManager.NewLuaNodeProxy(className, nodeProxy)
local baseName = className
local class = NodeClassType[baseName]
if not class then
class = NodeClassType[baseName]
if not class then
XLog.Error("XLuaBehaviorManager.NewLuaNodeProxy error, class not exist, name: " .. className)
return nil
end
end
local obj = class.New(className, nodeProxy)
return obj
end
--注册行为主体
function XLuaBehaviorManager.RegisterAgent(super, classType)
super = XLuaBehaviorAgent or super
CsXBehaviorManager.Instance:RegisterLuaAgentProxy(classType)
local behaviorNode = XClass(super, classType)
AgentClassType[classType] = behaviorNode
return behaviorNode
end
--创建行为主体实例
function XLuaBehaviorManager.NewLuaAgentProxy(className, agentProxy)
local baseName = className
local class = AgentClassType[baseName]
if not class then
class = AgentClassType[baseName]
if not class then
XLog.Error("XLuaBehaviorManager.NewLuaAgentProxy error, class not exist, name: " .. className)
return nil
end
end
local obj = class.New(className, agentProxy)
return obj
end
function XLuaBehaviorManager.PlayId(id, agent)
agent:PlayBehavior(id)
end