Make the slick flag usable outside of applygravity
authorMario <mario.mario@y7mail.com>
Tue, 7 Jan 2020 16:57:11 +0000 (02:57 +1000)
committerMario <mario.mario@y7mail.com>
Tue, 7 Jan 2020 16:57:11 +0000 (02:57 +1000)
qcsrc/common/physics/player.qc
qcsrc/ecs/systems/physics.qc

index 9f7ddab502d31764b79c546bfd40fc3b8e7b176e..02657dee8db2f80360d38e04cd83d917cc3d06dc 100644 (file)
@@ -690,13 +690,12 @@ void PM_check_slick(entity this)
        if(!IS_ONGROUND(this))
                return;
 
-       if(!PHYS_SLICK_APPLYGRAVITY(this))
-               return;
-
+       trace_dphitq3surfaceflags = 0;
        tracebox(this.origin, this.mins, this.maxs, this.origin - '0 0 1', MOVE_NOMONSTERS, this);
        if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK)
        {
-               UNSET_ONGROUND(this);
+               if(PHYS_SLICK_APPLYGRAVITY(this))
+                       UNSET_ONGROUND(this);
                SET_ONSLICK(this);
        }
        else
index f73ade3d12ea58ea6f5652554909505c0a335f79..a5af98d2ce9ac5ce8ee5a5d2c9abffa10f35da95 100644 (file)
@@ -360,11 +360,9 @@ void sys_phys_simulate(entity this, float dt)
                        // apply edge friction
                        const float f2 = vlen2(vec2(this.velocity));
                        if (f2 > 0) {
-                               trace_dphitq3surfaceflags = 0;
-                               tracebox(this.origin, this.mins, this.maxs, this.origin - '0 0 1', MOVE_NOMONSTERS, this);
                                // TODO: apply edge friction
                                // apply ground friction
-                               const int realfriction = (trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK)
+                               const int realfriction = (IS_ONSLICK(this))
                                    ? PHYS_FRICTION_SLICK(this)
                                        : PHYS_FRICTION(this);