PGRData/Script/matrix/xhome/XSceneEntityManager.lua

47 lines
1,010 B
Lua
Raw Normal View History

XSceneEntityManager = XSceneEntityManager or {}
local EntityMap = {}
local ChildToKeyGoMap = {}
function XSceneEntityManager.AddEntity(go, entity)
local list = go:GetComponentsInChildren(typeof(CS.UnityEngine.Collider))
local keyList = {}
for i = 0, list.Length - 1 do
local key = list[i].gameObject
ChildToKeyGoMap[key] = go
table.insert(keyList, key)
end
if entity and not XTool.UObjIsNil(go) then
EntityMap[go] = entity
end
end
function XSceneEntityManager.RemoveEntity(go)
local key = ChildToKeyGoMap[go]
if key == nil then
key = go
end
if not XTool.UObjIsNil(key) then
EntityMap[key] = nil
end
end
function XSceneEntityManager.ClearEntities()
EntityMap = {}
ChildToKeyGoMap = {}
end
function XSceneEntityManager.GetEntity(go)
local key = ChildToKeyGoMap[go]
if not key then
key = go
end
if XTool.UObjIsNil(key) then
return nil
end
return EntityMap[key]
end