mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-03-01 00:35:36 +08:00
大量优化
This commit is contained in:
56
pkg/alg/aoi_grid.go
Normal file
56
pkg/alg/aoi_grid.go
Normal file
@@ -0,0 +1,56 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user