package alg import ( "hk4e/pkg/logger" ) // Grid 地图格子 type Grid struct { gid uint32 // 格子id // 格子边界坐标 minX int16 maxX int16 minY int16 maxY int16 minZ int16 maxZ int16 entityIdMap map[uint32]bool // k:entityId v:是否存在 } // NewGrid 初始化格子 func NewGrid(gid uint32, minX, maxX, minY, maxY, minZ, maxZ int16) (r *Grid) { r = new(Grid) r.gid = gid r.minX = minX r.maxX = maxX r.minY = minY r.maxY = maxY r.minZ = minZ r.maxZ = maxZ r.entityIdMap = make(map[uint32]bool) return r } // AddEntityId 向格子中添加一个实体id func (g *Grid) AddEntityId(entityId uint32) { g.entityIdMap[entityId] = true } // RemoveEntityId 从格子中删除一个实体id func (g *Grid) RemoveEntityId(entityId uint32) { _, exist := g.entityIdMap[entityId] if exist { delete(g.entityIdMap, entityId) } else { logger.Error("remove entity id but it not exist, entityId: %v", entityId) } } // GetEntityIdList 获取格子中所有实体id func (g *Grid) GetEntityIdList() (entityIdList []uint32) { entityIdList = make([]uint32, 0) for k := range g.entityIdMap { entityIdList = append(entityIdList, k) } return entityIdList }