--- /dev/null
+#ifndef HITTABLE_H_
+#define HITTABLE_H_
+
+#include <msp/game/entity.h>
+#include "damagesource.h"
+#include "hitpoints.h"
+#include "physicalentity.h"
+
+struct HittableSetup
+{
+ bool immortal = false;
+ bool damaging = false;
+ HitPointsSetup hits;
+ DamageSourceSetup damage;
+};
+
+class Hittable: public PhysicalEntity
+{
+public:
+ using Setup = HittableSetup;
+
+private:
+ Msp::Game::Owned<HitPoints> hits;
+ Msp::Game::Owned<DamageSource> damage;
+
+public:
+ Hittable(Msp::Game::Handle<Msp::Game::Entity>, const Setup &, const PhysicalSetup &,
+ const Msp::Game::TransformValues & = Msp::Game::TransformValues());
+
+ Msp::Game::Handle<HitPoints> get_hitpoints() { return hits; }
+ Msp::Game::Handle<DamageSource> get_damage() { return damage; }
+};
+
+#endif