#pragma once #include #include #include #include #include class GeoData { public: struct Node { float height {-1.5F}; }; using Quad = std::array; using Limits = std::pair; GeoData() = default; explicit GeoData(Limits limit, float scale = 10.F); void generateRandom(); void loadFromImages(const std::filesystem::path &, float scale); [[nodiscard]] glm::vec3 positionAt(glm::vec2) const; [[nodiscard]] unsigned int at(glm::ivec2) const; [[nodiscard]] unsigned int at(int x, int y) const; [[nodiscard]] Quad quad(glm::vec2) const; [[nodiscard]] Limits getLimit() const; [[nodiscard]] glm::uvec2 getSize() const; [[nodiscard]] float getScale() const; [[nodiscard]] std::span getNodes() const; protected: Limits limit {}; // Base grid limits first(x,y) -> second(x,y) glm::uvec2 size {}; float scale {1}; std::vector nodes; };