#pragma once #include "ZLMath.h" #include "Renderer.h" #include "TextureManager.h" #include #include #include #include #include #include #include #include #include #include #include "Perlin.h" #include "PlanetData.h" namespace ZL { class PlanetObject { private: // Агрегация: логика и данные теперь здесь PlanetData planetData; // Данные только для рендеринга (OpenGL specific) VertexRenderStruct planetRenderStruct; VertexRenderStruct planetRenderRedStruct; VertexRenderStruct planetRenderYellowStruct; VertexRenderStruct planetAtmosphereRenderStruct; std::shared_ptr sandTexture; bool drawDataDirty = true; void prepareDrawData(); public: PlanetObject(); void init(); void update(float deltaTimeMs); void draw(Renderer& renderer); void drawPlanet(Renderer& renderer); void drawYellowZone(Renderer& renderer); void drawAtmosphere(Renderer& renderer); float distanceToPlanetSurface(const Vector3f& viewerPosition); }; } // namespace ZL