X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fecs%2Fsystems%2Fphysics.qc;h=b25c93b2d3d3177342e8994b12a29b26ecceb7dd;hb=c9dfa0f9ed0d6b8d7a13269266533877ae782d02;hp=f5052b376f89f4072ca33ef968b3e4bba3d66f56;hpb=4f133bdb70d13143f2ce4b9de097744371c1f92a;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/ecs/systems/physics.qc b/qcsrc/ecs/systems/physics.qc index f5052b376..b25c93b2d 100644 --- a/qcsrc/ecs/systems/physics.qc +++ b/qcsrc/ecs/systems/physics.qc @@ -15,7 +15,7 @@ void sys_phys_update(entity this, float dt) sys_in_update(this, dt); sys_phys_fix(this, dt); - if (sys_phys_override(this)) { return; } sys_phys_monitor(this); + if (sys_phys_override(this, dt)) { return; } sys_phys_monitor(this, dt); this.buttons_old = PHYS_INPUT_BUTTON_MASK(this); this.movement_old = this.movement; @@ -41,7 +41,7 @@ void sys_phys_update(entity this, float dt) // conveyors: first fix velocity if (this.conveyor.state) { this.velocity -= this.conveyor.movedir; } - MUTATOR_CALLHOOK(PlayerPhysics, this); + MUTATOR_CALLHOOK(PlayerPhysics, this, dt); if (!IS_PLAYER(this)) { sys_phys_spectator_control(this); @@ -62,6 +62,8 @@ void sys_phys_update(entity this, float dt) goto end; } + PM_check_slick(this); + if (IS_SVQC && !PHYS_FIXANGLE(this)) { this.angles = '0 1 0' * this.v_angle.y; } if (IS_PLAYER(this)) { if (IS_ONGROUND(this)) { @@ -84,7 +86,7 @@ void sys_phys_update(entity this, float dt) PHYS_TELEPORT_TIME(this) = 0; PHYS_WATERJUMP_TIME(this) = 0; } - } else if (MUTATOR_CALLHOOK(PM_Physics, this, maxspeed_mod)) { + } else if (MUTATOR_CALLHOOK(PM_Physics, this, maxspeed_mod, dt)) { // handled } else if (this.move_movetype == MOVETYPE_NOCLIP || this.move_movetype == MOVETYPE_FLY @@ -115,7 +117,7 @@ void sys_phys_update(entity this, float dt) this.com_phys_ladder = false; this.com_phys_gravity = '0 0 0'; } else if (ITEMS_STAT(this) & IT_USING_JETPACK) { - PM_jetpack(this, maxspeed_mod); + PM_jetpack(this, maxspeed_mod, dt); } else if (IS_ONGROUND(this)) { if (!WAS_ONGROUND(this)) { emit(phys_land, this); @@ -215,7 +217,7 @@ void sys_phys_simulate(entity this, float dt) } if (this.com_phys_ladder) { if (this.viewloc) { - wishvel.z = this.oldmovement.x; + wishvel.z = this.movement_old.x; } if (this.ladder_entity.classname == "func_water") { float f = vlen(wishvel); @@ -263,7 +265,7 @@ void sys_phys_simulate(entity this, float dt) airaccel += (this.com_phys_acc_rate_air_stop - airaccel) * max(0, -(curdir * wishdir)); } // note that for straight forward jumping: - // step = accel * PHYS_INPUT_TIMELENGTH * wishspeed0; + // step = accel * dt * wishspeed0; // accel = bound(0, wishspeed - vel_xy_current, step) * accelqw + step * (1 - accelqw); // --> // dv/dt = accel * maxspeed (when slow) @@ -288,15 +290,15 @@ void sys_phys_simulate(entity this, float dt) // !CPM if (PHYS_WARSOWBUNNY_TURNACCEL(this) && accelerating && this.movement.y == 0 && this.movement.x != 0) { - PM_AirAccelerate(this, wishdir, wishspeed2); + PM_AirAccelerate(this, dt, wishdir, wishspeed2); } else { float sidefric = maxairspd ? (PHYS_AIRACCEL_SIDEWAYS_FRICTION(this) / maxairspd) : 0; - PM_Accelerate(this, wishdir, wishspeed, wishspeed0, airaccel, airaccelqw, + PM_Accelerate(this, dt, wishdir, wishspeed, wishspeed0, airaccel, airaccelqw, PHYS_AIRACCEL_QW_STRETCHFACTOR(this), sidefric, PHYS_AIRSPEEDLIMIT_NONQW(this)); } if (PHYS_AIRCONTROL(this)) { - CPM_PM_Aircontrol(this, wishdir, wishspeed2); + CPM_PM_Aircontrol(this, dt, wishdir, wishspeed2); } } } else { @@ -338,7 +340,7 @@ void sys_phys_simulate(entity this, float dt) } } else { // water acceleration - PM_Accelerate(this, wishdir, wishspeed, wishspeed, this.com_phys_acc_rate, 1, 0, 0, 0); + PM_Accelerate(this, dt, wishdir, wishspeed, wishspeed, this.com_phys_acc_rate, 1, 0, 0, 0); } return; } @@ -391,7 +393,7 @@ void sys_phys_simulate(entity this, float dt) } if (IS_CSQC ? PHYS_WATERJUMP_TIME(this) <= 0 : time >= PHYS_TELEPORT_TIME(this)) { - PM_Accelerate(this, wishdir, wishspeed, wishspeed, this.com_phys_acc_rate, 1, 0, 0, 0); + PM_Accelerate(this, dt, wishdir, wishspeed, wishspeed, this.com_phys_acc_rate, 1, 0, 0, 0); } } }