cphysics.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #ifndef cphysics_h
  2. #define cphysics_h
  3. #include "cengine.h"
  4. #include "assets/cmesh.h"
  5. vec3 vec3_gravity();
  6. bool quadratic(float a, float b, float c, float* t0, float* t1);
  7. typedef struct {
  8. bool collided;
  9. float time;
  10. vec3 point;
  11. vec3 norm;
  12. int flags;
  13. } collision;
  14. collision collision_none();
  15. collision collision_new(float time, vec3 point, vec3 norm);
  16. collision collision_merge(collision c0, collision c1);
  17. collision point_collide_point(vec3 p, vec3 v, vec3 p0);
  18. collision point_collide_sphere(vec3 p, vec3 v, sphere s);
  19. collision point_collide_ellipsoid(vec3 p, vec3 v, ellipsoid e);
  20. collision point_collide_edge(vec3 p, vec3 v, vec3 e0, vec3 e1);
  21. collision point_collide_face(vec3 p, vec3 v, ctri ct);
  22. collision point_collide_ctri(vec3 p, vec3 v, ctri ct);
  23. collision point_collide_mesh(vec3 p, vec3 v, cmesh* m, mat4 world, mat3 world_normal);
  24. collision sphere_collide_point(sphere s, vec3 v, vec3 p);
  25. collision sphere_collide_sphere(sphere s, vec3 v, sphere s0);
  26. collision sphere_collide_edge(sphere s, vec3 v, vec3 e0, vec3 e1);
  27. collision sphere_collide_face(sphere s, vec3 v, ctri ct);
  28. collision sphere_collide_ctri(sphere s, vec3 v, ctri ct);
  29. collision sphere_collide_mesh(sphere s, vec3 v, cmesh* m, mat4 world, mat3 world_normal);
  30. collision ellipsoid_collide_mesh(ellipsoid e, vec3 v, cmesh* m, mat4 world, mat3 world_normal);
  31. collision ellipsoid_collide_point(ellipsoid e, vec3 v, vec3 p);
  32. collision ellipsoid_collide_sphere(ellipsoid e, vec3 v, sphere s);
  33. void collision_response_slide(void* x, vec3* position, vec3* velocity, collision (*colfunc)(void* x, vec3* pos, vec3* vel) );
  34. #endif