using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NewHorizons.External.Modules.Volumes.VolumeInfos { [JsonObject] public class GravityVolumeInfo : ForceVolumeInfo { /// /// The upper bounds of the volume's "surface". Above this radius, the force applied by this volume will have falloff applied. /// public float upperRadius; /// /// The lower bounds of the volume's "surface". Above this radius and below the `upperRadius`, the force applied by this volume will be constant. Defaults to 0. /// [DefaultValue(0f)] public float lowerRadius; /// /// The volume's force will decrease linearly from `force` to `minForce` as distance decreases from `lowerRadius` to `minRadius`. Defaults to 0. /// [DefaultValue(0f)] public float minRadius; /// /// The minimum force applied by this volume between `lowerRadius` and `minRadius`. Defaults to 0. /// [DefaultValue(0f)] public float minForce; /// /// How the force falls off with distance. Most planets use linear but the sun and some moons use inverseSquared. /// [DefaultValue("linear")] public GravityFallOff fallOff = GravityFallOff.Linear; /// /// The radius where objects will be aligned to the volume's force. Defaults to 1.5x the `upperRadius`. Set to 0 to disable alignment. /// public float? alignmentRadius; } }