void *ode_world;
void *ode_space;
void *ode_contactgroup;
- // number of constraint solver iterations to use (for dWorldStepFast)
+ // number of constraint solver iterations to use (for dWorldQuickStep)
int ode_iterations;
// actual step (server frametime / ode_iterations)
vec_t ode_step;
+ // time we need to simulate, for constantstep
+ vec_t ode_time;
// stats
int ode_numobjects; // total objects cound
int ode_activeovjects; // active objects count
}
world_physics_t;
+struct prvm_prog_s;
+
typedef struct world_s
{
// convenient fields
char filename[MAX_QPATH];
vec3_t mins;
vec3_t maxs;
+ struct prvm_prog_s *prog;
int areagrid_stats_calls;
int areagrid_stats_nodechecks;
void World_Shutdown(void);
/// called after the world model has been loaded, before linking any entities
-void World_SetSize(world_t *world, const char *filename, const vec3_t mins, const vec3_t maxs);
+void World_SetSize(world_t *world, const char *filename, const vec3_t mins, const vec3_t maxs, struct prvm_prog_s *prog);
/// unlinks all entities (used before reallocation of edicts)
void World_UnlinkAll(world_t *world);
// this is called by SV_Physics
void World_Physics_Frame(world_t *world, double frametime, double gravity);
+// change physics properties of entity
+struct prvm_edict_s;
+struct edict_odefunc_s;
+void World_Physics_ApplyCmd(struct prvm_edict_s *ed, struct edict_odefunc_s *f);
+
// remove physics data from entity
// this is called by entity removal
-struct prvm_edict_s;
void World_Physics_RemoveFromEntity(world_t *world, struct prvm_edict_s *ed);
void World_Physics_RemoveJointFromEntity(world_t *world, struct prvm_edict_s *ed);