Add tidal lock and comet tail orientation parameters

This commit is contained in:
Nick 2022-03-11 22:10:16 -05:00
parent 5c23772ebb
commit ace3755cc7
4 changed files with 25 additions and 16 deletions

View File

@ -19,10 +19,10 @@ namespace NewHorizons.Builder.Body
cometTail.name = "CometTail"; cometTail.name = "CometTail";
cometTail.transform.localScale = Vector3.one * config.Base.SurfaceSize / 110; cometTail.transform.localScale = Vector3.one * config.Base.SurfaceSize / 110;
Vector3 alignmentAxis = new Vector3(0, -1, 0); Vector3 alignment = new Vector3(0, 270, 90);
if (config.Orbit.AlignmentAxis != null) alignmentAxis = config.Orbit.AlignmentAxis; if (config.Base.CometTailRotation != null) alignment = config.Base.CometTailRotation;
cometTail.transform.localRotation = Quaternion.Euler(0, 270, 90) * Quaternion.FromToRotation(new Vector3(0, -1, 0), alignmentAxis); cometTail.transform.rotation = Quaternion.Euler(alignment);
} }
} }
} }

View File

@ -49,7 +49,7 @@ namespace NewHorizons.Builder.Updater
var planetoid = new Planet.Plantoid( var planetoid = new Planet.Plantoid(
original.size, original.size,
original.gravity, original.gravity,
go.transform.rotation, mapping[heavenlyBody].state.orbit.orientation.rotation,
InitialMotionBuilder.SiderealPeriodToAngularSpeed(body.Config.Orbit.SiderealPeriod), InitialMotionBuilder.SiderealPeriodToAngularSpeed(body.Config.Orbit.SiderealPeriod),
parent, parent,
coords coords

View File

@ -17,6 +17,7 @@ namespace NewHorizons.External
public float SphereOfInfluence { get; set; } public float SphereOfInfluence { get; set; }
public float GroundSize { get; set; } public float GroundSize { get; set; }
public bool HasCometTail { get; set; } public bool HasCometTail { get; set; }
public MVector3 CometTailRotation { get; set; }
public bool HasReferenceFrame { get; set; } = true; public bool HasReferenceFrame { get; set; } = true;
public bool CenterOfSolarSystem { get; set; } = false; public bool CenterOfSolarSystem { get; set; } = false;
public bool IsSatellite { get; set; } public bool IsSatellite { get; set; }

View File

@ -131,12 +131,12 @@
"hasMapMarker": { "hasMapMarker": {
"type": "boolean", "type": "boolean",
"default": false, "default": false,
"description" : "If the body should have a marker on the map screen." "description": "If the body should have a marker on the map screen."
}, },
"hasAmbientLight": { "hasAmbientLight": {
"type": "boolean", "type": "boolean",
"default": false, "default": false,
"description" : "If the dark side of the body should have some slight ammount of light" "description": "If the dark side of the body should have some slight ammount of light"
}, },
"surfaceGravity": { "surfaceGravity": {
"type": "number", "type": "number",
@ -150,7 +150,7 @@
"inverseSquared" "inverseSquared"
], ],
"default": "linear", "default": "linear",
"description" : "How gravity falls off with distance. Most planets use linear but the sun and some moons use inverseSquared." "description": "How gravity falls off with distance. Most planets use linear but the sun and some moons use inverseSquared."
}, },
"surfaceSize": { "surfaceSize": {
"type": "number", "type": "number",
@ -170,7 +170,11 @@
"hasCometTail": { "hasCometTail": {
"type": "boolean", "type": "boolean",
"default": false, "default": false,
"description" : "If you want the body to have a tail like the Interloper." "description": "If you want the body to have a tail like the Interloper."
},
"cometTailRotation": {
"type": "#/$defs/vector3",
"description": "If it has a comet tail, it'll be oriented according to these Euler angles."
}, },
"hasReferenceFrame": { "hasReferenceFrame": {
"type": "boolean", "type": "boolean",
@ -286,41 +290,45 @@
}, },
"longitudeOfAscendingNode": { "longitudeOfAscendingNode": {
"$ref": "#/$defs/angle", "$ref": "#/$defs/angle",
"description" : "An angle (in degrees) defining the point where the orbit of the body rises above the orbital plane if it has nonzero inclination." "description": "An angle (in degrees) defining the point where the orbit of the body rises above the orbital plane if it has nonzero inclination."
}, },
"eccentricity": { "eccentricity": {
"type": "number", "type": "number",
"default": 0, "default": 0,
"minimum": 0, "minimum": 0,
"maximum": 0.99999, "maximum": 0.99999,
"description" : "At 0 the orbit is a circle. The closer to 1 it is, the more oval-shaped the orbit is." "description": "At 0 the orbit is a circle. The closer to 1 it is, the more oval-shaped the orbit is."
}, },
"argumentOfPeriapsis": { "argumentOfPeriapsis": {
"$ref": "#/$defs/angle", "$ref": "#/$defs/angle",
"description" : "An angle (in degrees) defining the location of the periapsis (closest distance to it's primary body) if it has nonzero eccentricity." "description": "An angle (in degrees) defining the location of the periapsis (closest distance to it's primary body) if it has nonzero eccentricity."
}, },
"trueAnomaly": { "trueAnomaly": {
"$ref": "#/$defs/angle", "$ref": "#/$defs/angle",
"description" : "Where the planet should start off in its orbit in terms of the central angle." "description": "Where the planet should start off in its orbit in terms of the central angle."
}, },
"axialTilt": { "axialTilt": {
"$ref": "#/$defs/angle", "$ref": "#/$defs/angle",
"description" : "The angle between the normal to the orbital plane and its axis of rotation." "description": "The angle between the normal to the orbital plane and its axis of rotation."
}, },
"siderealPeriod": { "siderealPeriod": {
"type": "number", "type": "number",
"default": 0, "default": 0,
"description" : "Rotation period in minutes." "description": "Rotation period in minutes."
}, },
"isTidallyLocked": { "isTidallyLocked": {
"type": "boolean", "type": "boolean",
"default": false, "default": false,
"description" : "Should the body always have one side facing its primary?" "description": "Should the body always have one side facing its primary?"
},
"alignmentAxis": {
"type": "#/$defs/vector3",
"description": "If it is tidally locked, this direction will face towards the primary. Ex) Interloper uses 0, -1, 0. Most planets will want something like -1, 0, 0."
}, },
"showOrbitLine": { "showOrbitLine": {
"type": "boolean", "type": "boolean",
"default": false, "default": false,
"description" : "Referring to the orbit line in the map screen." "description": "Referring to the orbit line in the map screen."
}, },
"isStatic": { "isStatic": {
"type": "boolean", "type": "boolean",