using NewHorizons.External.SerializableData; using Newtonsoft.Json; namespace NewHorizons.External.Modules { [JsonObject] public abstract class BasePropInfo { /// /// The relative path from the planet to the parent of this object. Optional (will default to the root sector). /// public string parentPath; /// /// An optional rename of this object /// public string rename; } [JsonObject] public abstract class GeneralPointPropInfo : BasePropInfo { /// /// Position of the object /// public MVector3 position; /// /// Whether the positional and rotational coordinates are relative to parent instead of the root planet object. /// public bool isRelativeToParent; } [JsonObject] public class GeneralPropInfo : GeneralPointPropInfo { /// /// Rotation of the object /// public MVector3 rotation; /// /// Do we try to automatically align this object to stand upright relative to the body's center? Stacks with rotation. /// Defaults to true for geysers, tornados, and volcanoes, and false for everything else. /// public bool? alignRadial; } [JsonObject] public abstract class GeneralSolarSystemPropInfo : GeneralPropInfo { /// /// The name of the planet that will be used with `parentPath`. Must be set if `parentPath` is set. /// public string parentBody; } }