package entity import ( "time" "joylink.club/ecs" "joylink.club/ecs/filter" "joylink.club/rtsssimulation/component" "joylink.club/rtsssimulation/repository" ) // 初始化世界数据 func LoadWorldData(w ecs.World, repo *repository.Repository) { if repo == nil { panic("repo不能为nil") } entry := w.Entry(w.Create(component.WorldDataType)) component.WorldDataType.Set(entry, &component.WorldData{ Repo: repo, Time: time.Now().UnixMilli(), EntityMap: make(map[string]*ecs.Entry), }) } var worldDataQuery = ecs.NewQuery(filter.Contains(component.WorldDataType)) // 获取世界数据 func GetWorldData(w ecs.World) *component.WorldData { entry, ok := worldDataQuery.First(w) if ok { return component.WorldDataType.Get(entry) } panic("不存在世界数据组件") } // 根据uid获取对象实体 func GetEntityByUid(w ecs.World, uid string) (entry *ecs.Entry, ok bool) { wd := GetWorldData(w) entry, ok = wd.EntityMap[uid] return }