#ifndef _PIUMA_PHYSICS_OBJECT_H_ #define _PIUMA_PHYSICS_OBJECT_H_ #include "../lib/math.h" #include "../lib/geometry.h" enum phy_shape_type { PHY_SHAPE_SPHERE, PHY_SHAPE_BOX, PHY_SHAPE_MESH, PHY_SHAPE_COUNT }; struct phy_sphere { f32 radius; }; struct phy_box { v3 dimensions; }; struct phy_mesh { // TODO }; struct phy_body { v3 position; v3 rotation; f32 mass; v3 center_of_mass; f32 gravity_multiplier; f32 friction; f32 bounciness; // Dynamics v3 velocity; v3 angular_velocity; // Collision phy_shape_type shape; union { phy_sphere sphere; phy_box box; phy_mesh mesh; }; Box aabb; }; Box phy_aabb_from_body(phy_body *body); #endif