public static void OnAddBlockReq(Player player, MemoryStream stream) { Ultilities.Print("OnAddBlockReq"); CSAddBlockReq req = NetworkManager.Deserialize <CSAddBlockReq>(stream); Vector2Int chunk = Ultilities.GetChunk(req.block.position); bool addSuccess = TerrainData.AddBlockInChunk(chunk, req.block); //回包 CSAddBlockRes res = new CSAddBlockRes(); if (addSuccess) { res.RetCode = 0; res.block = req.block; } else { res.RetCode = 2; } NetworkManager.Enqueue(player.socket, ENUM_CMD.CS_ADD_BLOCK_RES, res); if (addSuccess) { //同步给有该chunk视野的其他玩家 foreach (Player p in TerrainData.GetChunkViewPlayers(chunk)) { if (p.id != player.id) { AddBlockNotify(p, req.block); } } } }
void AddBlockRes(object data) { CSAddBlockRes rsp = NetworkManager.Deserialize <CSAddBlockRes>(data); //Debug.Log("AddBlockRes,retCode=" + rsp.RetCode); if (rsp.RetCode == 0) { ChunkManager.AddBlock(rsp.block); SoundManager.PlayPlaceSound(rsp.block.type, gameObject); } else { FastTips.Show(rsp.RetCode); } }
static void Single_OnAddBlockReq(object obj, Action <object> callback) { CSAddBlockReq req = obj as CSAddBlockReq; CSAddBlockRes res = new CSAddBlockRes(); res.RetCode = 0; res.block = req.block; if (req.block.depentPos != null) { dependenceDict.Add(req.block.position.ToVector3Int(), req.block.depentPos.ToVector3Int()); } if (req.block.orient != CSBlockOrientation.Default) { orientationDict.Add(req.block.position.ToVector3Int(), req.block.orient); } callback(res); }