Update object segment after object position interpolation. This is always done in DEBUG, but not in RELEASE, where further movement would break at segment check

This commit is contained in:
zicodxx 2008-10-01 11:53:27 +00:00
parent 6054bf7e90
commit 2043c19d60
2 changed files with 14 additions and 0 deletions

View file

@ -1,5 +1,9 @@
D1X-Rebirth Changelog
20081001
--------
main/physics.c: Update object segment after object position interpolation. This is always done in DEBUG, but not in RELEASE, where further movement would break at segment check
20080930
--------
main/console.c, main/collide.c, main/mglobal.c, main/multi.c, main/inferno.c, main/physics.c, main/aipath.c, main/render.c, main/fuelcen.c, main/ai.c, main/game.c, main/game.h, SConstruct, d1x.ini, maths/vecmat.c, arch/sdl/timer.c, arch/sdl/mouse.c, arch/sdl/digi.c, arch/sdl/digi_audio.c, arch/include/mouse.h: Added new function to calculate common timesteps; Increased MAXIMUM_FPS to 200 for release and 1000 for debug; Used fixed sim_time for do_physics_sim and Interpolating to ensure collisions stay accurate at high FPS; New code and faster code for dot products by The_Lion; Disabled Nice-FPS and common Frame-Loop if VSync is active; More accurate delta timer for mouse (consider overhead); Added SDL_(Un)LockAudio for old SDL Audio interface; General support for up to 16 mouse buttons; Code cleanup; Made some AI movement and Player shaking FPS-independent

View file

@ -688,6 +688,16 @@ void do_physics_sim(object *obj)
obj->pos.x = start_pos.x + ((obj->pos.x - start_pos.x) / ((float)PhysTime/FrameTime));
obj->pos.y = start_pos.y + ((obj->pos.y - start_pos.y) / ((float)PhysTime/FrameTime));
obj->pos.z = start_pos.z + ((obj->pos.z - start_pos.z) / ((float)PhysTime/FrameTime));
//check for and update correct object segment
if(!get_seg_masks(&obj->pos, obj->segnum, 0, __FILE__, __LINE__).centermask == 0)
{
if (!update_object_seg(obj)) {
if (!(Game_mode & GM_MULTI))
Int3();
compute_segment_center(&obj->pos,&Segments[obj->segnum]);
obj->pos.x += objnum;
}
}
}
// After collision with objects and walls, set velocity from actual movement