space-game001/PlanetObject.h
Vladislav Khorev 7c272a2ee6 Refactoring
2025-12-15 21:47:45 +03:00

48 lines
1.1 KiB
C++

#pragma once
#include "ZLMath.h"
#include "Renderer.h"
#include "TextureManager.h"
#include <vector>
#include <chrono>
#include <iostream>
#include <string>
#include <array>
#include <numeric>
#include <random>
#include <algorithm>
#include <map>
#include <set>
#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<Texture> sandTexture;
bool drawDataDirty = true;
void prepareDrawData();
public:
PlanetObject();
void init();
void update(float deltaTimeMs);
void draw(Renderer& renderer);
void drawAtmosphere(Renderer& renderer);
float distanceToPlanetSurface(const Vector3f& viewerPosition);
};
} // namespace ZL