X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fecs%2Fsystems%2Fphysics.qc;fp=qcsrc%2Fecs%2Fsystems%2Fphysics.qc;h=e6c2f7ccd8617e0087b19d0224d5e0760174cf3f;hb=fdbfb6f9364d8aeae67e108400a6bd1dd37dc0b7;hp=db59359b31abd8a22c08a5bb28f143be94356e1d;hpb=0f2e3cd6c6554bda254111dee0746fea05aac047;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/ecs/systems/physics.qc b/qcsrc/ecs/systems/physics.qc index db59359b3..e6c2f7ccd 100644 --- a/qcsrc/ecs/systems/physics.qc +++ b/qcsrc/ecs/systems/physics.qc @@ -15,11 +15,14 @@ void sys_phys_update(entity this, float dt) sys_in_update(this, dt); sys_phys_fix(this, dt); - if (sys_phys_override(this, dt)) { return; } sys_phys_monitor(this, dt); + 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; - this.v_angle_old = this.v_angle; + PHYS_CS(this).movement_old = PHYS_CS(this).movement; + PHYS_CS(this).v_angle_old = this.v_angle; + PHYS_CS(this).buttons_old = PHYS_INPUT_BUTTON_MASK(this); sys_phys_ai(this); @@ -200,10 +203,10 @@ void sys_phys_simulate(entity this, float dt) } } makevectors(vmul(this.v_angle, (this.com_phys_vel_2d ? '0 1 0' : '1 1 1'))); - // wishvel = v_forward * this.movement.x + v_right * this.movement.y + v_up * this.movement.z; - vector wishvel = v_forward * this.movement.x - + v_right * this.movement.y - + '0 0 1' * this.movement.z * (this.com_phys_vel_2d ? 0 : 1); + // wishvel = v_forward * PHYS_CS(this).movement.x + v_right * PHYS_CS(this).movement.y + v_up * PHYS_CS(this).movement.z; + vector wishvel = v_forward * PHYS_CS(this).movement.x + + v_right * PHYS_CS(this).movement.y + + '0 0 1' * PHYS_CS(this).movement.z * (this.com_phys_vel_2d ? 0 : 1); if (this.com_phys_water) { if (PHYS_INPUT_BUTTON_CROUCH(this)) { wishvel.z = -PHYS_MAXSPEED(this); @@ -216,7 +219,7 @@ void sys_phys_simulate(entity this, float dt) } if (this.com_phys_ladder) { if (this.viewloc) { - wishvel.z = this.movement_old.x; + wishvel.z = PHYS_CS(this).movement_old.x; } if (this.ladder_entity.classname == "func_water") { float f = vlen(wishvel); @@ -271,7 +274,7 @@ void sys_phys_simulate(entity this, float dt) // dv/dt = accel * maxspeed * (1 - accelqw) (when fast) // log dv/dt = logaccel + logmaxspeed (when slow) // log dv/dt = logaccel + logmaxspeed + log(1 - accelqw) (when fast) - float strafity = IsMoveInDirection(this.movement, -90) + IsMoveInDirection(this.movement, +90); // if one is nonzero, other is always zero + float strafity = IsMoveInDirection(PHYS_CS(this).movement, -90) + IsMoveInDirection(PHYS_CS(this).movement, +90); // if one is nonzero, other is always zero if (PHYS_MAXAIRSTRAFESPEED(this)) { wishspeed = min(wishspeed, @@ -288,7 +291,7 @@ void sys_phys_simulate(entity this, float dt) } // !CPM - if (PHYS_WARSOWBUNNY_TURNACCEL(this) && accelerating && this.movement.y == 0 && this.movement.x != 0) { + if (PHYS_WARSOWBUNNY_TURNACCEL(this) && accelerating && PHYS_CS(this).movement.y == 0 && PHYS_CS(this).movement.x != 0) { PM_AirAccelerate(this, dt, wishdir, wishspeed2); } else { float sidefric = maxairspd ? (PHYS_AIRACCEL_SIDEWAYS_FRICTION(this) / maxairspd) : 0;