Documentation
¶
Index ¶
- Constants
- Variables
- type AOIManager
- func (m *AOIManager) AddPIDToGrID(pID, gID int)
- func (m *AOIManager) AddToGrIDByPos(pID int, x, y float32)
- func (m *AOIManager) GetGIDByPos(x, y float32) int
- func (m *AOIManager) GetPIDsByGID(gID int) (playerIDs []int)
- func (m *AOIManager) GetPIDsByPos(x, y float32) (playerIDs []int)
- func (m *AOIManager) GetSurroundGrIDsByGID(gID int) (grIDs []*GrID)
- func (m *AOIManager) RemoveFromGrIDByPos(pID int, x, y float32)
- func (m *AOIManager) RemovePIDFromGrID(pID, gID int)
- func (m *AOIManager) String() string
- type GrID
- type Player
- func (p *Player) BroadCastStartPosition()
- func (p *Player) GetSurroundingPlayers() []*Player
- func (p *Player) LostConnection()
- func (p *Player) OnExchangeAoiGrID(oldGID, newGID int) error
- func (p *Player) SendMsg(msgID uint32, data proto.Message)
- func (p *Player) SyncPID()
- func (p *Player) SyncSurrounding()
- func (p *Player) Talk(content string)
- func (p *Player) UpdatePos(x float32, y float32, z float32, v float32)
- type WorldManager
Constants ¶
Variables ¶
View Source
var IDLock sync.Mutex //保护PIDGen的互斥机制
View Source
var PIDGen int32 = 1 //用来生成玩家ID的计数器
Player ID 生成器
Functions ¶
This section is empty.
Types ¶
type AOIManager ¶
type AOIManager struct { MinX int //区域左边界坐标 MaxX int //区域右边界坐标 CntsX int //x方向格子的数量 MinY int //区域上边界坐标 MaxY int //区域下边界坐标 CntsY int //y方向的格子数量 // contains filtered or unexported fields }
AOI管理模块
func NewAOIManager ¶
func NewAOIManager(minX, maxX, cntsX, minY, maxY, cntsY int) *AOIManager
初始化一个AOI区域
func (*AOIManager) AddPIDToGrID ¶
func (m *AOIManager) AddPIDToGrID(pID, gID int)
添加一个PlayerID到一个格子中
func (*AOIManager) AddToGrIDByPos ¶
func (m *AOIManager) AddToGrIDByPos(pID int, x, y float32)
通过横纵坐标添加一个Player到一个格子中
func (*AOIManager) GetPIDsByGID ¶
func (m *AOIManager) GetPIDsByGID(gID int) (playerIDs []int)
通过GID获取当前格子的全部playerID
func (*AOIManager) GetPIDsByPos ¶
func (m *AOIManager) GetPIDsByPos(x, y float32) (playerIDs []int)
通过横纵坐标得到周边九宫格内的全部PlayerIDs
func (*AOIManager) GetSurroundGrIDsByGID ¶
func (m *AOIManager) GetSurroundGrIDsByGID(gID int) (grIDs []*GrID)
根据格子的gID得到当前周边的九宫格信息
func (*AOIManager) RemoveFromGrIDByPos ¶
func (m *AOIManager) RemoveFromGrIDByPos(pID int, x, y float32)
通过横纵坐标把一个Player从对应的格子中删除
func (*AOIManager) RemovePIDFromGrID ¶
func (m *AOIManager) RemovePIDFromGrID(pID, gID int)
移除一个格子中的PlayerID
type GrID ¶
type GrID struct { GID int //格子ID MinX int //格子左边界坐标 MaxX int //格子右边界坐标 MinY int //格子上边界坐标 MaxY int //格子下边界坐标 // contains filtered or unexported fields }
一个地图中的格子类
type Player ¶
type Player struct { PID int32 //玩家ID Conn ziface.IConnection //当前玩家的连接 X float32 //平面x坐标 Y float32 //高度 Z float32 //平面y坐标 (注意不是Y) V float32 //旋转0-360度 }
玩家对象
func (*Player) GetSurroundingPlayers ¶
获得当前玩家的AOI周边玩家信息
func (*Player) OnExchangeAoiGrID ¶
type WorldManager ¶
type WorldManager struct { AoiMgr *AOIManager //当前世界地图的AOI规划管理器 Players map[int32]*Player //当前在线的玩家集合 // contains filtered or unexported fields }
当前游戏世界的总管理模块
var WorldMgrObj *WorldManager
提供一个对外的世界管理模块句柄
func (*WorldManager) AddPlayer ¶
func (wm *WorldManager) AddPlayer(player *Player)
提供添加一个玩家的的功能,将玩家添加进玩家信息表Players
func (*WorldManager) GetPlayerByPID ¶
func (wm *WorldManager) GetPlayerByPID(pID int32) *Player
通过玩家ID 获取对应玩家信息
func (*WorldManager) GetPlayersByGID ¶
func (wm *WorldManager) GetPlayersByGID(gID int) []*Player
获取指定gID中的所有player信息
func (*WorldManager) RemovePlayerByPID ¶
func (wm *WorldManager) RemovePlayerByPID(pID int32)
从玩家信息表中移除一个玩家
Click to show internal directories.
Click to hide internal directories.