Files
hk4e/pkg/alg/aoi_grid.go
2023-02-09 01:01:05 +08:00

54 lines
1.1 KiB
Go

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
objectMap map[int64]any // k:objectId 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.objectMap = make(map[int64]any)
return r
}
// AddObject 向格子中添加一个对象
func (g *Grid) AddObject(objectId int64, object any) {
g.objectMap[objectId] = object
}
// RemoveObject 从格子中删除一个对象
func (g *Grid) RemoveObject(objectId int64) {
_, exist := g.objectMap[objectId]
if exist {
delete(g.objectMap, objectId)
} else {
logger.Error("remove object id but it not exist, objectId: %v", objectId)
}
}
// GetObjectList 获取格子中所有对象
func (g *Grid) GetObjectList() map[int64]any {
return g.objectMap
}