using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; using NewHorizons.Utility; using Newtonsoft.Json; using Newtonsoft.Json.Converters; namespace NewHorizons.External.Modules.VariableSize { [JsonObject] public class SingularityModule : VariableSizeModule { [JsonConverter(typeof(StringEnumConverter))] public enum SingularityType { [EnumMember(Value = @"blackHole")] BlackHole = 0, [EnumMember(Value = @"whiteHole")] WhiteHole = 1 } /// /// Only for White Holes. Should this white hole repel the player from it. /// [DefaultValue(true)] public bool makeZeroGVolume = true; /// /// The uniqueID of the white hole or black hole that is paired to this one. If you don't set a value, entering will kill /// the player /// public string pairedSingularity; /// /// The uniqueID of this white hole or black hole. If not set it will default to the name of the planet /// public string uniqueID; /// /// Position of the singularity /// public MVector3 position; /// /// Radius of the singularity. Note that this isn't the same as the event horizon, but includes the entire volume that /// has warped effects in it. /// [Range(0f, double.MaxValue)] public float size; /// /// If you want a black hole to load a new star system scene, put its name here. /// public string targetStarSystem; /// /// Type of singularity (white hole or black hole) /// public SingularityType type; } }