Difference between revisions of "API:CelestialBody"
From Kerbal Space Program Wiki
Line 224: | Line 224: | ||
}} | }} | ||
− | {{Field|type=bool|name=use_The_InName|When true, the <code>theName</code> property will include "the " in the body's name}} | + | {{Field |
+ | |type=bool | ||
+ | |name=use_The_InName | ||
+ | |desc=When true, the <code>theName</code> property will include "the " in the body's name | ||
+ | }} | ||
{{Field|type=Vector3d|name=zUpAngularVelocity}} | {{Field|type=Vector3d|name=zUpAngularVelocity}} | ||
Line 236: | Line 240: | ||
|desc=The altitude above sea level of a given world position, in meters. | |desc=The altitude above sea level of a given world position, in meters. | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=Bounds | |returntype=Bounds | ||
Line 242: | Line 247: | ||
|desc=Looks like a sphere for detecting potential collisions. Has a radius substantially larger than the body's radius—presumably to account for terrain and atmospheric height plus a safety margin. | |desc=Looks like a sphere for detecting potential collisions. Has a radius substantially larger than the body's radius—presumably to account for terrain and atmospheric height plus a safety margin. | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=double | |returntype=double | ||
Line 249: | Line 255: | ||
|desc=The latitude of a given world position, in degrees. | |desc=The latitude of a given world position, in degrees. | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=double | |returntype=double | ||
Line 256: | Line 263: | ||
|desc=The longitude of a given world position, in degrees. The returned value doesn't seem to stay in any particular range. It may be > 360 or < 0. You'll probably want to do some modulo arithmetic to force this into a certain range like -180 to 180 or 0 to 360. | |desc=The longitude of a given world position, in degrees. The returned value doesn't seem to stay in any particular range. It may be > 360 or < 0. You'll probably want to do some modulo arithmetic to force this into a certain range like -180 to 180 or 0 to 360. | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=string | |returntype=string | ||
Line 262: | Line 270: | ||
|desc=Same as <code>name</code> property. | |desc=Same as <code>name</code> property. | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=Vector3 | |returntype=Vector3 | ||
Line 267: | Line 276: | ||
|desc=Infinite loop? (version 0.23.5) | |desc=Infinite loop? (version 0.23.5) | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=Orbit | |returntype=Orbit | ||
Line 272: | Line 282: | ||
|desc=Same as <code>orbit</code>. | |desc=Same as <code>orbit</code>. | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=OrbitDriver | |returntype=OrbitDriver | ||
Line 277: | Line 288: | ||
|desc=Same as <code>orbitDriver</code>. | |desc=Same as <code>orbitDriver</code>. | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=Vector3d | |returntype=Vector3d | ||
Line 284: | Line 296: | ||
|desc=Converts a world position into a body-relative position? | |desc=Converts a world position into a body-relative position? | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=Vector3d | |returntype=Vector3d | ||
Line 290: | Line 303: | ||
|desc=Returns position in body-relative coordinates for a given longitude/latitude/altitude. Same as GetSurfaceNVector * (body radius + alt). | |desc=Returns position in body-relative coordinates for a given longitude/latitude/altitude. Same as GetSurfaceNVector * (body radius + alt). | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=Vector3d | |returntype=Vector3d | ||
Line 297: | Line 311: | ||
|desc=The reference frame of the planet's surface rotates with respect to an inertial reference frame. For example, a ship landed on the planet's surface is actually moving with respect to an inertial frame, because the planet is rotating. This function gives the difference between a velocity in the rotating frame and the same velocity in the inertial frame. You can use it to convert an inertial frame velocity (like the one returned by <code>Orbit.GetVel()</code>) to a rotating frame velocity by (rotating frame velocity) = (inertial frame velocity) - <code>body.GetRFrmVel(position)</code>. | |desc=The reference frame of the planet's surface rotates with respect to an inertial reference frame. For example, a ship landed on the planet's surface is actually moving with respect to an inertial frame, because the planet is rotating. This function gives the difference between a velocity in the rotating frame and the same velocity in the inertial frame. You can use it to convert an inertial frame velocity (like the one returned by <code>Orbit.GetVel()</code>) to a rotating frame velocity by (rotating frame velocity) = (inertial frame velocity) - <code>body.GetRFrmVel(position)</code>. | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=Vector3d | |returntype=Vector3d | ||
Line 302: | Line 317: | ||
|desc=Always returns a zero vector. (as of version 0.23.5) | |desc=Always returns a zero vector. (as of version 0.23.5) | ||
}} | }} | ||
+ | |||
{{Method | {{Method | ||
|returntype=Vector3d | |returntype=Vector3d | ||
Line 309: | Line 325: | ||
|desc=Returns a unit vector that is normal to the sphere of the planet at the given latitude and longitude. (Tells you which way is "up" at a given point on the planet.) | |desc=Returns a unit vector that is normal to the sphere of the planet at the given latitude and longitude. (Tells you which way is "up" at a given point on the planet.) | ||
}} | }} | ||
+ | |||
{{Method|returntype=Transform|name=GetTransform|desc=Same as <code>bodyTransform</code> field}} | {{Method|returntype=Transform|name=GetTransform|desc=Same as <code>bodyTransform</code> field}} | ||
{{Method | {{Method | ||
Line 317: | Line 334: | ||
|desc=Returns the world position corresponding to a given latitude, longitude, and altitude above sea level. | |desc=Returns the world position corresponding to a given latitude, longitude, and altitude above sea level. | ||
}} | }} | ||
+ | |||
{{Method|returntype=bool|name=HasChild|args={{arg|CelestialBody|body}}|desc=True if the given body orbits this one. Doesn't seem to need to be a <i>direct</i> orbit—can be something that orbits something that orbits this. Inverse of <code>HasParent</code>.}} | {{Method|returntype=bool|name=HasChild|args={{arg|CelestialBody|body}}|desc=True if the given body orbits this one. Doesn't seem to need to be a <i>direct</i> orbit—can be something that orbits something that orbits this. Inverse of <code>HasParent</code>.}} | ||
{{Method|returntype=bool|name=HasParent|args={{arg|CelestialBody|body}}|desc=True if the given body orbits is orbited by this one. Doesn't seem to need to be a <i>direct</i> orbit—can be something that's orbited by something that's orbited by this. Inverse of <code>HasChild</code>.}} | {{Method|returntype=bool|name=HasParent|args={{arg|CelestialBody|body}}|desc=True if the given body orbits is orbited by this one. Doesn't seem to need to be a <i>direct</i> orbit—can be something that's orbited by something that's orbited by this. Inverse of <code>HasChild</code>.}} |
Revision as of 20:33, 25 December 2014
CelestialBody Class
Inherits | Implements |
---|---|
UnityEngine.MonoBehaviour | ITargetable, IDiscoverable |
A CelestialBody represents a planet, moon, or star that acts as a source of gravity and has some sphere of influence. You can find the CelestialBody whose sphere of influence you are currently in with the vessel.mainBody
field.
Properties
The following are public properties available in CelestialBody.
Signature | Description |
---|---|
DiscoveryInfo DiscoveryInfo { get; } | ? |
int flightsGlobalIndex { get; set; } | ? |
string name { get; } | The name of the body, as it appears in e.g. the map view. Same as bodyName field.
|
Orbit orbit { get; } | Contains all information about the body's orbit around whatever other body it is orbiting. |
Vector3d position { get; set; } | The position of the center of the body in world space. |
CelestialBody referenceBody { get; } | (not confirmed) The celestial body that this one orbits. |
Texture2D ResourceMap { get; } | ? |
PResource Resources { get; } | ? |
string theName { get; } | (not confirmed) Same as name except prefixed with "the " (if appropriate)
|
Fields
The following is a list of publically-accessible fields in CelestialBody. This includes protected items, which can be accessed by subclasses.
Signature | Description |
---|---|
float altitudeMultiplier | ? |
float altitudeOffset | ? |
double angularV | The magnitude of angularVelocity
|
Vector3d angularVelocity | ? |
float atmosphereTemperatureMultiplier | ? |
bool atmosphere | Whether the body has an atmosphere |
bool atmosphereContainsOxygen | Whether oxygen is available (for jet engines) |
float atmosphereMultiplier | Pressure at sea level (atm) |
double atmosphereScaleHeight | Atmospheric scale height (km) |
Color atmosphericAmbientColor | ? |
CBAttributeMap BiomeMap | ? |
string bodyName | Same as the name property
|
Transform bodyTransition | ? |
CelestialBodyType bodyType | ? |
double directRotAngle | ? |
double GeeASL | Acceleration due to gravity in multiple of g (“gees”) experienced At Sea Level |
double gMagnitudeAtCenter | Same as gravParameter (below) |
double gravParameter | Gravitational parameter (G × Mass) |
double hillSphere | Radius of body's Hill sphere computed as . |
double initialRotation | ? |
bool inverseRotation | ? |
float inverseRotThresholdAltitude | ? |
double Mass | the mass of the body (kg). Computed as M = µ/G where µ is the gravitational parameter (exactly 6.674e-11 N⋅m²⋅kg⁻² in KSP) |
double maxAtmosphereAltitude | Used when useLegacyAtmosphere is False; atmosphere top altitude (m) |
bool ocean | ? |
OrbitDriver orbitDriver | ? |
List<CelestialBody> orbitingBodies | A list of all the bodies that orbit this one (e.g., the moons of a planet) |
PQS pqsController | An object that can give you information about the planet's terrain height as a function of position. See the documentation on the PQS class to see how to use it. |
AnimationCurve pressureCurve | Used when useLegacyAtmosphere is False; AnimationCurve mapping some altitudes (m) to pressure ratios (atm); actual pressure is obtained by multiplying by pressureMultiplier |
float pressureMultiplier | Used when useLegacyAtmosphere is False; linear factor in pressure (non-zero only on Kerbol, where it is set to 1000000) |
double Radius | The radius of the planet in meters. This defines sea level. |
bool rotates | ? |
QuaternionD rotation | ? |
double rotationAngle | The current angle of the body's rotation |
double rotationPeriod | How long it takes the planet to revolve once about its axis, in seconds. |
CelestialBodyScienceParams scienceValues | ? |
double sphereOfInfluence | Radius of the body's sphere of influence (m); measured from the center of the planet, not from sea level. |
double staticPressureASL | ?; 21.46 on Kerbol, 1 everywhere else |
AnimationCurve temperatureCurve | ? |
PlanetQuadTreeController terrainController | ? |
bool tidallyLocked | Whether the body is tidally locked to its primary (its rotational period is its orbital period) |
array of float timeWarpAltitudeLimits | ? |
bool useLegacyAtmosphere | If True, then atmospheric pressure is based on scale height and atmosphere height threshold is a millionth of sea level pressure. Currently set to True for all bodies with an atmosphere. |
bool use_The_InName | When true, the theName property will include "the " in the body's name
|
Vector3d zUpAngularVelocity | ? |
Methods
The following are methods included in CelestialBody.
Signature | Description |
---|---|
double GetAltitude(Vector3d worldPos) | The altitude above sea level of a given world position, in meters. |
Bounds getBounds() | Looks like a sphere for detecting potential collisions. Has a radius substantially larger than the body's radius—presumably to account for terrain and atmospheric height plus a safety margin. |
double GetLatitude(Vector3d worldPos) | The latitude of a given world position, in degrees. |
double GetLongitude(Vector3d worldPos) | The longitude of a given world position, in degrees. The returned value doesn't seem to stay in any particular range. It may be > 360 or < 0. You'll probably want to do some modulo arithmetic to force this into a certain range like -180 to 180 or 0 to 360. |
string GetName() | Same as name property.
|
Vector3 GetObtVelocity() | Infinite loop? (version 0.23.5) |
Orbit GetOrbit() | Same as orbit .
|
OrbitDriver GetOrbitDriver() | Same as orbitDriver .
|
Vector3d GetRelSurfacePosition(Vector3d worldPosition) | Converts a world position into a body-relative position? |
Vector3d GetRelSurfacePosition(double lat, double lon, double alt) | Returns position in body-relative coordinates for a given longitude/latitude/altitude. Same as GetSurfaceNVector * (body radius + alt). |
Vector3d getRFrmVel(Vector3d worldPos) | The reference frame of the planet's surface rotates with respect to an inertial reference frame. For example, a ship landed on the planet's surface is actually moving with respect to an inertial frame, because the planet is rotating. This function gives the difference between a velocity in the rotating frame and the same velocity in the inertial frame. You can use it to convert an inertial frame velocity (like the one returned by Orbit.GetVel() ) to a rotating frame velocity by (rotating frame velocity) = (inertial frame velocity) - body.GetRFrmVel(position) .
|
Vector3d GetSrfVelocity() | Always returns a zero vector. (as of version 0.23.5) |
Vector3d GetSurfaceNVector(double lat, double lon) | Returns a unit vector that is normal to the sphere of the planet at the given latitude and longitude. (Tells you which way is "up" at a given point on the planet.) |
Transform GetTransform() | Same as bodyTransform field
|
Vector3d GetWorldSurfacePosition(double lat, double lon, double alt) | Returns the world position corresponding to a given latitude, longitude, and altitude above sea level. |
bool HasChild(CelestialBody body) | True if the given body orbits this one. Doesn't seem to need to be a direct orbit—can be something that orbits something that orbits this. Inverse of HasParent .
|
bool HasParent(CelestialBody body) | True if the given body orbits is orbited by this one. Doesn't seem to need to be a direct orbit—can be something that's orbited by something that's orbited by this. Inverse of HasChild .
|