]> git.localhorst.tv Git - blobs.git/blobdiff - src/world/Body.hpp
half-assed implementation of "other" body rendering
[blobs.git] / src / world / Body.hpp
index 1b9e2e3a2a65036b75f370aa47a58b3730374545..5f82be232b4dc3e78029fd27338b122ab4a41421 100644 (file)
@@ -70,14 +70,19 @@ public:
        double OrbitalPeriod() const noexcept;
        double RotationalPeriod() const noexcept;
 
-       glm::dmat4 LocalTransform() const noexcept;
-       glm::dmat4 InverseTransform() const noexcept;
+       const glm::dmat4 &LocalTransform() const noexcept { return local; }
+       const glm::dmat4 &InverseTransform() const noexcept { return inverse_local; }
 
-       glm::dmat4 ToParent() const noexcept;
-       glm::dmat4 FromParent() const noexcept;
+       const glm::dmat4 &ToParent() const noexcept { return inverse_orbital; }
+       const glm::dmat4 &FromParent() const noexcept { return orbital; }
+
+       glm::dmat4 ToUniverse() const noexcept;
+       glm::dmat4 FromUniverse() const noexcept;
 
        virtual void Draw(app::Assets &, graphics::Viewport &) { }
 
+       void Cache() noexcept;
+
 private:
        void AddChild(Body &);
        void RemoveChild(Body &);
@@ -94,6 +99,11 @@ private:
        double rotation;
        double angular;
 
+       glm::dmat4 orbital;
+       glm::dmat4 inverse_orbital;
+       glm::dmat4 local;
+       glm::dmat4 inverse_local;
+
 };
 
 }