public void FetchBit(string bitName = "default") { HttpRequestOptions options = new HttpRequestOptions(); options.Method = HttpRequestMethod.GET; var result = WaitFor(ScenePrivate.HttpClient.Request, $"{BitUrl}/{bitName}", options) as HttpClient.RequestData; if (!result.Success || result.Response.Status != 200) { Log.Write(LogLevel.Error, $"Bad request fetching bit, {result.Response.Status}"); return; } string jsonResponse = result.Response.Body; JsonSerializerOptions jsonOptions = new JsonSerializerOptions { SerializeReferences = false }; BitResponse parsed = ((JsonSerializationData <BitResponse>)(WaitFor(JsonSerializer.Deserialize <BitResponse>, jsonResponse, jsonOptions))).Object; foreach (ShapeDefinition definition in parsed.data.cubes) { var match = CubePositions.Find(definition.p); if (match == null) { ScenePrivate.CreateClusterData data = Spawner.SpawnCube(definition); Cubes.AddLast(data); CubePositions.AddLast(definition.p); } } foreach (ShapeDefinition definition in parsed.data.ramps) { var match = RampPositions.Find(definition.p); if (match == null) { ScenePrivate.CreateClusterData data = Spawner.SpawnRamp(definition); Ramps.AddLast(data); RampPositions.AddLast(definition.p); } } }