public void Refresh(int x, int y, int z) { foreach (var coords in Map.GetNearestNonexistedChunks(x, y)) { var p = new Point(coords.Item1, coords.Item2); if (_tcpAskedBricks.Contains(p)) { continue; } _tcpAskedBricks.Add(p); Debug.Log($"sending get chunk { coords.Item1} { coords.Item2}"); _client.SendText($"get_chunk {coords.Item1} {coords.Item2} "); } foreach (var chunk in Map.GetNearestChunks(x, y).Where(c => !c.Loaded)) { LoadChunk(chunk); return; } foreach (var chunk in Map.GetFarChunks(x, y).Where(c => c.Loaded)) { UnloadChunk(chunk); return; } }
private IEnumerator SendPosition() { while (!_worldInstanced) { yield return(new WaitForSeconds(0.5F)); } while (true) { _client.SendText($"position {_world.Map.Position.X} {_world.Map.Position.Y} {_world.Map.Position.Z}"); yield return(new WaitForSeconds(3F)); } }
public void Start() { _client = new BwTcpClient(ServerIp, PortNumber); _client.ReadData += Client_ReadData; _client.SendText("get_map"); _bricks = new [] { Brick1, Brick2, Brick3, Brick4 }; foreach (var brick in _bricks) { for (var i = 0; i < 6; i++) { SetSideVisible(brick, i, false); } } StartCoroutine("Refresh"); StartCoroutine("SendPosition"); }