public static void OnDeleteBlockReq(Player player, MemoryStream stream) { Ultilities.Print("OnDeleteBlockReq"); CSDeleteBlockReq req = NetworkManager.Deserialize <CSDeleteBlockReq>(stream); Vector2Int chunk = Ultilities.GetChunk(req.position); bool deleted = TerrainData.RemoveBlockInChunk(chunk, req.position); CSDeleteBlockRes res = new CSDeleteBlockRes(); if (deleted) { res.RetCode = 0; res.position = req.position; } else { res.RetCode = 3; } NetworkManager.Enqueue(player.socket, ENUM_CMD.CS_DELETE_BLOCK_RES, res); if (deleted) { //同步给有该chunk视野的其他玩家 foreach (Player p in TerrainData.GetChunkViewPlayers(chunk)) { if (p.id != player.id) { DeleteBlockNotify(p, req.position); } } } }
static void Single_OnDeleteBlockReq(object obj, Action <object> callback) { CSDeleteBlockReq req = obj as CSDeleteBlockReq; CSDeleteBlockRes res = new CSDeleteBlockRes(); res.RetCode = 0; DeleteBlock(req.position.ToVector3Int(), res.position); callback(res); }
void DeleteBlockRes(object data) { CSDeleteBlockRes rsp = NetworkManager.Deserialize <CSDeleteBlockRes>(data); //Debug.Log("DeleteBlockRes,retCode=" + rsp.RetCode); if (rsp.RetCode == 0) { Vector3Int pos = new Vector3Int(rsp.position.x, rsp.position.y, rsp.position.z); CSBlockType type = ChunkManager.GetBlockType(rsp.position.x, rsp.position.y, rsp.position.z); ChunkManager.RemoveBlock(rsp.position.x, rsp.position.y, rsp.position.z); } else { FastTips.Show(rsp.RetCode); } }
static void Single_OnDeleteBlockReq(object obj, Action <object> callback) { CSDeleteBlockReq req = obj as CSDeleteBlockReq; CSDeleteBlockRes res = new CSDeleteBlockRes(); res.RetCode = 0; res.position = req.position; if (dependenceDict.ContainsKey(req.position.ToVector3Int())) { dependenceDict.Remove(req.position.ToVector3Int()); } if (orientationDict.ContainsKey(req.position.ToVector3Int())) { orientationDict.Remove(req.position.ToVector3Int()); } callback(res); }
void DeleteBlockRes(object data) { CSDeleteBlockRes rsp = NetworkManager.Deserialize <CSDeleteBlockRes>(data); //Debug.Log("DeleteBlockRes,retCode=" + rsp.RetCode); if (rsp.RetCode == 0) { foreach (CSVector3Int pos in rsp.position) { ChunkManager.RemoveBlock(pos.ToVector3Int()); } ChunkManager.RebuildChunks(); } else { FastTips.Show(rsp.RetCode); } }