]> git.localhorst.tv Git - blobs.git/blobdiff - src/world/Planet.hpp
face direction
[blobs.git] / src / world / Planet.hpp
index 2274d045aed749e9d4b65a4f0eceb075b508db34..7ac6b570256f7b256679b067ca8887489a4c3c59 100644 (file)
@@ -5,8 +5,8 @@
 
 #include "Set.hpp"
 #include "Tile.hpp"
-#include "../graphics/glm.hpp"
 #include "../graphics/SimpleVAO.hpp"
+#include "../math/glm.hpp"
 
 #include <cassert>
 #include <memory>
@@ -75,6 +75,19 @@ public:
        // center point of tile on surface at elevation
        glm::dvec3 TileCenter(int surface, int x, int y, double elevation = 0.0) const noexcept;
 
+       static glm::dvec3 SurfaceNormal(int srf) noexcept {
+               glm::dvec3 nrm(0.0);
+               nrm[(srf + 2) % 3] = srf < 3 ? 1.0 : -1.0;
+               return nrm;
+       }
+       static glm::dmat3 SurfaceOrientation(int srf) noexcept {
+               glm::dmat3 mat(0.0);
+               mat[(srf + 0) % 3][0] = 1.0;
+               mat[(srf + 2) % 3][1] = srf < 3 ? -1.0 : 1.0;
+               mat[(srf + 1) % 3][2] = srf < 3 ? 1.0 : -1.0;
+               return mat;
+       }
+
        void BuildVAO(const Set<TileType> &);
        void Draw(app::Assets &, graphics::Viewport &) override;