| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #ifndef cphysics_h
- #define cphysics_h
- #include "cengine.h"
- #include "assets/cmesh.h"
- vec3 vec3_gravity();
- bool quadratic(float a, float b, float c, float* t0, float* t1);
- typedef struct {
- bool collided;
- float time;
- vec3 point;
- vec3 norm;
- int flags;
- } collision;
- collision collision_none();
- collision collision_new(float time, vec3 point, vec3 norm);
- collision collision_merge(collision c0, collision c1);
- collision point_collide_point(vec3 p, vec3 v, vec3 p0);
- collision point_collide_sphere(vec3 p, vec3 v, sphere s);
- collision point_collide_ellipsoid(vec3 p, vec3 v, ellipsoid e);
- collision point_collide_edge(vec3 p, vec3 v, vec3 e0, vec3 e1);
- collision point_collide_face(vec3 p, vec3 v, ctri ct);
- collision point_collide_ctri(vec3 p, vec3 v, ctri ct);
- collision point_collide_mesh(vec3 p, vec3 v, cmesh* m, mat4 world, mat3 world_normal);
- collision sphere_collide_point(sphere s, vec3 v, vec3 p);
- collision sphere_collide_sphere(sphere s, vec3 v, sphere s0);
- collision sphere_collide_edge(sphere s, vec3 v, vec3 e0, vec3 e1);
- collision sphere_collide_face(sphere s, vec3 v, ctri ct);
- collision sphere_collide_ctri(sphere s, vec3 v, ctri ct);
- collision sphere_collide_mesh(sphere s, vec3 v, cmesh* m, mat4 world, mat3 world_normal);
- collision ellipsoid_collide_mesh(ellipsoid e, vec3 v, cmesh* m, mat4 world, mat3 world_normal);
- collision ellipsoid_collide_point(ellipsoid e, vec3 v, vec3 p);
- collision ellipsoid_collide_sphere(ellipsoid e, vec3 v, sphere s);
- void collision_response_slide(void* x, vec3* position, vec3* velocity, collision (*colfunc)(void* x, vec3* pos, vec3* vel) );
- #endif
|