+import "msp/game/setups";
+
+enum ColliderType
+{
+ value CIRCLE;
+ value BOX;
+};
+
+component Collider
+{
+ field type ColliderType { default "CIRCLE"; };
+ field radius float { default "1.0f"; };
+ field size vector2 { default "1.0f, 1.0f"; };
+};
+
+component RigidBody
+{
+ field mass float { default "1.0f"; };
+ field moment_of_inertia float { default "0.5f"; };
+};
+
+entity Physical
+{
+ field fixture bool { default "false"; };
+ field body RigidBody;
+ field collider Collider;
+};
+
+component HitPoints
+{
+ field max_hits uint { default "1"; };
+ field vulnerable_to uint { default "~0U"; };
+};
+
+component DamageSource
+{
+ field amount uint { default "1"; };
+ field type uint { default "0"; };
+};
+
+entity Hittable
+{
+ field immortal bool { default "false"; };
+ field damaging bool { default "false"; };
+ field hits HitPoints;
+ field damage DamageSource;
+};
+
+entity Playfield
+{
+ field size vector2;
+};
+
+entity Ship
+{
+ field physical Physical;
+ field mesh MeshSource;
+ field speed float;
+ field turn_rate float;
+};
+
+entity Bullet
+{
+ field physical Physical;
+ field hittable Hittable;
+ field mesh MeshSource;
+};
+
+entity Asteroid
+{
+ field physical Physical;
+ field hittable Hittable;
+ field mesh MeshSource;
+};