using System.ComponentModel; using System.ComponentModel.DataAnnotations; using Newtonsoft.Json; namespace NewHorizons.External.Modules { [JsonObject] public class AsteroidBeltModule { /// /// Amount of asteroids to create. /// [Range(-1, 200)] [DefaultValue(-1)] public int amount = -1; /// /// Angle between the belt and the equatorial plane of the planet. /// public float inclination; /// /// Lowest distance from the planet asteroids can spawn /// [Range(0f, double.MaxValue)] public float innerRadius; /// /// Angle defining the point where the belt rises up from the planet's equatorial plane if inclination is nonzero. /// public float longitudeOfAscendingNode; /// /// Maximum size of the asteroids. /// [Range(0f, double.MaxValue)] [DefaultValue(50)] public float maxSize = 50f; /// /// Minimum size of the asteroids. /// [Range(0f, double.MaxValue)] [DefaultValue(20)] public float minSize = 20; /// /// Greatest distance from the planet asteroids can spawn /// [Range(0f, double.MaxValue)] public float outerRadius; /// /// How the asteroids are generated, unless you supply a detail yourself using "assetBundle" and "path" /// public ProcGenModule procGen; /// /// Number used to randomize asteroid positions /// public int randomSeed; /// /// You can use this to load a custom asset or ingame object, instead of using ProcGen. It will be scaled by "minSize" and "maxSize", so ideally it should be near a 1 meter radius. /// This is a relative filepath to an asset-bundle to load the prefab defined in `path` from. /// public string assetBundle; /// /// You can use this to load a custom asset or ingame object, instead of using ProcGen. It will be scaled by "minSize" and "maxSize", so ideally it should be near a 1 meter radius. /// This is either the path in the scene hierarchy of the item to copy or the path to the object in the supplied asset bundle. /// public string path; /// /// Surface gravity of the asteroids. /// [Range(0f, double.MaxValue)] [DefaultValue(1)] public float gravity = 1f; /// /// Should the detail of the asteroid be randomly oriented, or should it point towards the center. /// [DefaultValue(true)] public bool randomOrientation = true; } }