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