#pragma once #include "../Time.hpp" #include "../GFX/Actions.hpp" #include "../GFX/Camera.hpp" #include "../GFX/Mesh.hpp" namespace MC::World { class Clouds { public: Clouds() : m_mesh(create_mesh(create_cloud_matrix())) {} void update(Time const& time); void render(GFX::Actions& actions, Position::World player_position); private: constexpr static U32 CloudMatrixSize = 128; constexpr static Int Height = 200; constexpr static Real Scale = 15; constexpr static Real TileSize = CloudMatrixSize * Scale; using CloudMatrix = Matrix; void render_single_instance(GFX::Actions& actions, Int x, Int y); static CloudMatrix create_cloud_matrix(); static GFX::Mesh create_mesh(CloudMatrix const& cloud_matrix); Real m_x_offset = 0.0; GFX::Mesh m_mesh; }; }