]> git.localhorst.tv Git - blobs.git/blobdiff - src/creature/Creature.hpp
track a few things
[blobs.git] / src / creature / Creature.hpp
index 13716878b06f2c6141ffe577e814b2fb2e489edd..3f86670eba4a9aa885e8056c5b3b1e7dd15a7c08 100644 (file)
@@ -134,8 +134,12 @@ public:
        void Hurt(double d) noexcept;
        void Die() noexcept;
        void OnDeath(Callback cb) noexcept { on_death = cb; }
-       void Remove() noexcept { removable = true; }
+       void Remove() noexcept;
        bool Removable() const noexcept { return removable; }
+       void Removed() noexcept;
+
+       void AddParent(Creature &);
+       const std::vector<Creature *> &Parents() const noexcept { return parents; }
 
        Stats &GetStats() noexcept { return stats; }
        const Stats &GetStats() const noexcept { return stats; }
@@ -164,6 +168,7 @@ public:
        glm::dmat4 LocalTransform() noexcept;
 
        void BuildVAO();
+       void KillVAO();
        void Draw(graphics::Viewport &);
 
 private:
@@ -187,9 +192,12 @@ private:
        double size;
 
        double birth;
+       double death;
        Callback on_death;
        bool removable;
 
+       std::vector<Creature *> parents;
+
        Stats stats;
        Memory memory;
 
@@ -204,7 +212,7 @@ private:
                glm::vec3 normal;
                glm::vec3 texture;
        };
-       graphics::SimpleVAO<Attributes, unsigned short> vao;
+       std::unique_ptr<graphics::SimpleVAO<Attributes, unsigned short>> vao;
 
 };