#include "physics.h" #include void lovrPhysicsInit() { dInitODE(); if (!dCheckConfiguration("ODE_single_precision")) { error("lovr.physics must use single precision"); } atexit(lovrPhysicsDestroy); } void lovrPhysicsDestroy() { dCloseODE(); } World* lovrWorldCreate() { World* world = lovrAlloc(sizeof(World), lovrWorldDestroy); if (!world) return NULL; world->id = dWorldCreate(); return world; } void lovrWorldDestroy(const Ref* ref) { World* world = containerof(ref, World); dWorldDestroy(world->id); free(world); } void lovrWorldGetGravity(World* world, float* x, float* y, float* z) { dReal gravity[3]; dWorldGetGravity(world->id, gravity); *x = gravity[0]; *y = gravity[1]; *z = gravity[2]; } void lovrWorldSetGravity(World* world, float x, float y, float z) { dWorldSetGravity(world->id, x, y, z); }