#include "body.h" #include "../lib/geometry.h" #include Box phy_aabb_from_body(phy_body *body) { Box aabb; switch(body->shape) { case PHY_SHAPE_SPHERE: { aabb.min = body->position - body->sphere.radius * v3{1,1,1}; aabb.max = body->position + body->sphere.radius * v3{1,1,1}; } break; case PHY_SHAPE_BOX: { v3 box[8]; build_cube_vertices(box); m3 rotoscale = M3(rotation_v3(body->rotation) * scale_v3(body->box.dimensions)); for(u32 i = 0; i < 8; i++) box[i] = body->position + rotoscale * box[i]; aabb = box_from_point_cloud(box, 8); } break; case PHY_SHAPE_MESH: { assert(false && "Yet to be implemented"); } break; default: { assert(false && "Unknown shape"); } } return aabb; }