// Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt #ifndef _PLANET_H #define _PLANET_H #include "SmartPtr.h" #include "TerrainBody.h" #include "graphics/VertexArray.h" namespace Graphics { class Renderer; class RenderState; class Texture; class Material; } // namespace Graphics class Planet : public TerrainBody { public: OBJDEF(Planet, TerrainBody, PLANET); Planet() = delete; Planet(SystemBody *); Planet(const Json &jsonObj, Space *space); virtual void SubRender(Graphics::Renderer *r, const matrix4x4d &viewTran, const vector3d &camPos) override; void GetAtmosphericState(double dist, double *outPressure, double *outDensity) const; double GetAtmosphereRadius() const { return m_atmosphereRadius; } friend class ObjectViewerView; protected: private: void InitParams(const SystemBody *); void GenerateRings(Graphics::Renderer *renderer); void DrawGasGiantRings(Graphics::Renderer *r, const matrix4x4d &modelView); double m_atmosphereRadius; double m_surfaceGravity_g; RefCountedPtr m_ringTexture; Graphics::VertexArray m_ringVertices; std::unique_ptr m_ringMaterial; Graphics::RenderState *m_ringState; // Legacy renderer visuals std::unique_ptr m_atmosphereVertices; std::unique_ptr m_atmosphereMaterial; }; #endif /* _PLANET_H */