Esempio n. 1
0
        public override InteropFloat32 Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
        {
            InteropFloat32 nums;

            context.StartArray();

            for (int i = 0; i < InteropFloat32.MAX_LENGTH; i++)
            {
                // Ew.
                try { nums[i] = context.ReadFloat(); } catch { break; }
            }

            context.EndArray();
            return(nums);
        }
Esempio n. 2
0
        public override SimplexNoise Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
        {
            SimplexNoise noise;

            context.StartArray();

            noise.octaves = context.ReadFloat();

            noise.persistence = context.ReadFloat();
            noise.scale       = context.ReadFloat();
            noise.octaveScale = context.ReadFloat();

            noise.noiseOffset.x = context.ReadFloat();
            noise.noiseOffset.y = context.ReadFloat();
            noise.noiseOffset.z = context.ReadFloat();

            context.EndArray();
            return(noise);
        }
Esempio n. 3
0
        public override UberData Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
        {
            UberData noise;

            context.StartArray();

            noise.octaves = context.ReadFloat();

            noise.perturb   = context.ReadFloat();
            noise.sharpness = context.ReadFloat();
            noise.amplify   = context.ReadFloat();

            noise.altitudeErosion = context.ReadFloat();
            noise.ridgeErosion    = context.ReadFloat();
            noise.slopeErosion    = context.ReadFloat();

            noise.lacunarity     = context.ReadFloat();
            noise.gain           = context.ReadFloat();
            noise.startAmplitude = context.ReadFloat();
            noise.scale          = context.ReadFloat();

            context.EndArray();
            return(noise);
        }
Esempio n. 4
0
        /// <summary> Directly Deserialize a <see cref="JsonArray"/></summary>
        /// <param name="ctx"> context </param>
        public static JsonArray ReadJsonArray(this BsonDeserializationContext ctx)
        {
            var firstType = ctx.Reader.CurrentBsonType;

            if (firstType == BsonType.Null)
            {
                ctx.Reader.ReadNull();
                return(null);
            }
            JsonArray value = new JsonArray();

            // Log.Info($"Starting Reading JsonArray");
            ctx.StartArray();
            while (true)
            {
                // Log.Info($"Top of loop, state is {ctx.Reader.State}");
                var nextType = ctx.Reader.ReadBsonType();
                // This is retarded, again it should know immediately upon consuming
                // the start of the array that the array immediately ends
                // and shouldn't need to enter the loop.
                if (nextType == BsonType.EndOfDocument)
                {
                    break;
                }

                // Log.Info($"Read type is [{nextType}], state is {ctx.Reader.State}");
                if (nextType == BsonType.String)
                {
                    value.Add(ctx.Reader.ReadString());
                }
                else if (nextType == BsonType.Int32)
                {
                    value.Add(ctx.Reader.ReadInt32());
                }
                else if (nextType == BsonType.Int64)
                {
                    value.Add(ctx.Reader.ReadInt64());
                }
                else if (nextType == BsonType.Double)
                {
                    value.Add(ctx.Reader.ReadDouble());
                }
                else if (nextType == BsonType.Document)
                {
                    value.Add(ctx.ReadJsonObject());
                }
                else if (nextType == BsonType.Array)
                {
                    value.Add(ctx.ReadJsonArray());
                }
                else if (nextType == BsonType.Boolean)
                {
                    value.Add(ctx.Reader.ReadBoolean());
                }
                else if (nextType == BsonType.Null)
                {
                    value.Add(JsonNull.instance); ctx.Reader.ReadNull();
                }
                else
                {
                    ctx.Reader.SkipValue();
                }
            }

            // Log.Info($"Finishing Reading JsonArray");
            ctx.EndArray();
            return(value);
        }