Files

62 lines
678 B
C
Raw Permalink Normal View History

2023-09-26 19:40:16 +02:00
#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