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); }
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); }
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); }
/// <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); }