Simulator::cPlanetRecord class

Keeps all the information related to a planet.

This does not represent the planet visually (that is the Simulator::cPlanet class), this is just information about the planet that will be stored in the galaxy database in the saved games folder. This class is used by Simulator::cStarRecord. Despite the name, this class also represents asteroid belts in a solar system.

Planet records are uniquely identified with a PlanetID, which can be retrieved using GetID(). You can get the record from an ID using cStarManager::GetPlanetRecord().

Base classes

class Resource::CachedResourceObject

Public static variables

static const uint32_t TYPE

Public static functions

static auto GenerateTerrainKey() -> ResourceKey
Generates a .prop file ResourceKey that is currently unused in game packages, so that the planet terrain can be saved there.
static auto GetPerihelion(cPlanetRecord* pRecord, MoonPerihelionType moonType) -> float
Returns the distance of the perihelion, which is the planet's closest point to the parent object in its orbit (the parent object is either a sun, or another planet if this planet is a moon).
static auto Create(PlanetID planetId, cPlanetRecordPtr& dst) -> void

Public functions

auto GetStarRecord() const -> cStarRecord*
auto GetStarID() const -> StarID
auto GetID() const -> PlanetID
auto GetTechLevel() const -> TechLevel
auto SetGeneratedTerrainKey(const ResourceKey& key) -> void
auto GetGeneratedTerrainKey() -> ResourceKey&

Public variables

eastl::string16 mName
PlanetType mType
The type of the planet, which determines whether it is a gas giant, asteroid belt, or regular rocky planet.
int mFlags
cEllipticalOrbit mOrbit
The orbit this planet follows around its star.
bool mbRotationIsNull
If true, the planet does not rotate around itself (i.e. there are no "days").
Math::Vector3 mRotationAxis
Axis of rotation for planet days, that is, in which axis the planet spins around itself.
float mRotationPeriod
How much time, in real seconds, the planet takes to make a full spin around itself (that is, how long an astronomical day is for this planet).
int8_t mPlanetRing
char field_AD
float mAtmosphereScore
float mTemperatureScore
float mWaterScore
eastl::vector<ResourceKey> mPlantSpecies
IDs of the plant species that inhabit this planet.
eastl::vector<ResourceKey> mAnimalSpecies
IDs of the animal species that inhabit this planet.
eastl::vector<cCommodityNodeData*> mCommodityNodes
eastl::vector<int> field_F8
int field_10C
eastl::vector<int> field_110
int mNumDefenderUFOs
float mTimeLastBuiltUFOs
float mTimeCalledReinforcements
bool mbHomeWorld
eastl::vector<cPlanetObjectData> mPlanetObjects
eastl::vector<uint32_t> mTerrainStampsToRemove
eastl::vector<cCivData*> mCivData
eastl::vector<cTribeData*> mTribeData
PlanetID mKey
ResourceKey field_188
TechLevel mTechLevel
ResourceKey mSpiceGen
ID of the spice file of this planet in GroupIDs::SpaceTrading_; all zeros if it hasn't been assigned yet.
ResourceKey mGeneratedTerrainKey

Function documentation

static float Simulator::cPlanetRecord::GetPerihelion(cPlanetRecord* pRecord, MoonPerihelionType moonType)

Returns the distance of the perihelion, which is the planet's closest point to the parent object in its orbit (the parent object is either a sun, or another planet if this planet is a moon).

Parameters
pRecord The planet
moonType Only used for moons (planets orbiting other planets), determines how the perihelion is calculated