X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=world.h;h=e43ebd142c6ffc99f7fcfa01a5badb0baa86966d;hp=4dad70ba435fde58ec0c08acf992726db45bc213;hb=1da6c44635f21581e349b289a47c5f7fc715b398;hpb=556467b184719f636ebc0bea884afe808a238c4b diff --git a/world.h b/world.h index 4dad70ba..e43ebd14 100644 --- a/world.h +++ b/world.h @@ -30,7 +30,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define MOVE_WORLDONLY 3 #define MOVE_HITMODEL 4 -#define AREA_GRID 512 +#define AREA_GRID 128 #define AREA_GRIDNODES (AREA_GRID * AREA_GRID) typedef struct link_s @@ -46,22 +46,30 @@ typedef struct world_physics_s 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 // max velocity for a 1-unit radius object at current step to prevent // missed collisions vec_t ode_movelimit; } 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; @@ -92,7 +100,7 @@ void World_Init(void); 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); @@ -115,9 +123,13 @@ void World_End(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);