using NewHorizons.External.Modules.VariableSize; using NewHorizons.External.SerializableData; using NewHorizons.External.SerializableEnums; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; using System.ComponentModel; using System.Runtime.Serialization; namespace NewHorizons.External.Modules { [JsonObject] public class ParticleFieldModule { /// /// Particle type for this vection field. /// public ParticleFieldType type; /// /// What the particle field activates based on. /// [DefaultValue("player")] public FollowTarget followTarget = FollowTarget.Player; /// /// Density by height curve. Determines how many particles are emitted at different heights. /// Defaults to a curve based on minimum and maximum heights of various other modules. /// public HeightDensityPair[] densityByHeightCurve; /// /// An optional rename of this object /// public string rename; [JsonObject] public class HeightDensityPair { /// /// A specific radius /// public float height; /// /// The particle count for this radius. /// public float density; } [JsonConverter(typeof(StringEnumConverter))] public enum ParticleFieldType { [EnumMember(Value = @"rain")] Rain, [EnumMember(Value = @"snowflakesHeavy")] SnowflakesHeavy, [EnumMember(Value = @"snowflakesLight")] SnowflakesLight, [EnumMember(Value = @"embers")] Embers, [EnumMember(Value = @"clouds")] Clouds, [EnumMember(Value = @"leaves")] Leaves, [EnumMember(Value = @"bubbles")] Bubbles, [EnumMember(Value = @"fog")] Fog, [EnumMember(Value = @"crystalMotes")] CrystalMotes, [EnumMember(Value = @"rockMotes")] RockMotes, [EnumMember(Value = @"iceMotes")] IceMotes, [EnumMember(Value = @"sandMotes")] SandMotes, [EnumMember(Value = @"crawlies")] Crawlies, [EnumMember(Value = @"fireflies")] Fireflies, [EnumMember(Value = @"plankton")] Plankton, [EnumMember(Value = @"pollen")] Pollen, [EnumMember(Value = @"current")] Current } [JsonConverter(typeof(StringEnumConverter))] public enum FollowTarget { [EnumMember(Value = @"player")] Player, [EnumMember(Value = @"probe")] Probe } } }