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) SendMsg(msgId uint32, data proto.Message) error
- 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 PidGen uint32 = 0 //用来生产玩家的 Id计数器
Functions ¶
This section is empty.
Types ¶
type AOIManager ¶
type AOIManager struct { MinX int //区域左边界坐标 MaxX int //区域右边界坐标 MinY int //区域上边界坐标 MaxY int //区域下边界坐标 CntsX int //x方向格子的数量 CntsY int //y方向的格子数量 Grids map[int]*Grid //当前区域中都有哪些格子,key=格子ID, value=格子对象 }
*
- 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 { Id int //格子Id MinX int //格子左边界坐标 MaxX int //格子右边界坐标 MinY int //格子上边界坐标 MaxY int //格子下边界坐标 // contains filtered or unexported fields }
*一个地图中的格子类
type Player ¶
type Player struct { Pid uint32 //玩家 Id Conn ziface.IConnection //当前玩家的连接(用于和客户端的连接) X float32 //平面的 X 坐标 Y float32 //高度 Z float32 //平面 Y 坐标 V float32 //旋转的 0-360 角度 }
玩家对象
func (*Player) GetSurroundingPlayers ¶
获得当前玩家的AOI周边玩家信息
type WorldManager ¶
type WorldManager struct { //AoiManager 当前世界地图 AOI 的管理模块 AoiManager *AOIManager //当前在线的 Players 集合 Players map[uint32]*Player // contains filtered or unexported fields }
*
- 当前游戏的世界总管理模块
var WorldManagerObj *WorldManager
func (*WorldManager) AddPlayer ¶
func (wm *WorldManager) AddPlayer(player *Player)
提供添加一个玩家的的功能,将玩家添加进玩家信息表Players
func (*WorldManager) GetPlayerByPid ¶
func (wm *WorldManager) GetPlayerByPid(pid uint32) *Player
通过玩家ID 获取对应玩家信息
func (*WorldManager) RemovePlayerByPid ¶
func (wm *WorldManager) RemovePlayerByPid(pid uint32)
从玩家信息表中移除一个玩家
Click to show internal directories.
Click to hide internal directories.