#pragma once #include #include "vulkan_engine/asset/object/model.h" namespace std { template <> struct hash { std::size_t operator()(const glm::i64vec3& v) const noexcept { std::size_t h1 = std::hash()(v.x); std::size_t h2 = std::hash()(v.y); std::size_t h3 = std::hash()(v.z); return h1 ^ (h2 << 1) ^ (h3 << 2); } }; } // namespace std namespace veng { class Coord { public: Coord() : seg(glm::i64vec3(0)), pos(glm::vec3(0.f)) {} Coord(glm::vec3 _pos) : seg(glm::i64vec3(0)), pos(_pos) {} Coord(glm::i64vec3 _seg, glm::vec3 _pos) : seg(_seg), pos(_pos) {} glm::i64vec3 seg; glm::vec3 pos; Coord operator+(const Coord& other) const; Coord operator-(const Coord& other) const; std::unordered_map coord_system; private: const std::float_t border = 1000.f; }; } // namespace veng