Exemplo n.º 1
0
        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);
                }
            }
        }