]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - sv_phys.c
nothing to see here, move along...
[xonotic/darkplaces.git] / sv_phys.c
index 4f06472aa052fd3f329c4c20fce72a43c9e5ccde..555aa44b2df3d1c9d1a324f20836a809405658fb 100644 (file)
--- a/sv_phys.c
+++ b/sv_phys.c
@@ -49,6 +49,7 @@ cvar_t sv_jumpstep = {CVAR_NOTIFY, "sv_jumpstep", "1"};
 cvar_t sv_wallfriction = {CVAR_NOTIFY, "sv_wallfriction", "1"};
 cvar_t sv_newflymove = {CVAR_NOTIFY, "sv_newflymove", "0"};
 cvar_t sv_freezenonclients = {CVAR_NOTIFY, "sv_freezenonclients", "0"};
+cvar_t sv_playerphysicsqc = {CVAR_NOTIFY, "sv_playerphysicsqc", "1"};
 
 #define        MOVE_EPSILON    0.01
 
@@ -61,6 +62,8 @@ void SV_Phys_Init (void)
        Cvar_RegisterVariable(&sv_wallfriction);
        Cvar_RegisterVariable(&sv_newflymove);
        Cvar_RegisterVariable(&sv_freezenonclients);
+
+       Cvar_RegisterVariable(&sv_playerphysicsqc);
 }
 
 /*
@@ -654,8 +657,11 @@ void SV_PushMove (prvm_edict_t *pusher, float movetime)
 
                // if the entity is standing on the pusher, it will definitely be moved
                if (!(((int)check->fields.server->flags & FL_ONGROUND) && PRVM_PROG_TO_EDICT(check->fields.server->groundentity) == pusher))
+               {
+                       // if the entity is not inside the pusher's final position, leave it alone
                        if (!SV_ClipMoveToEntity(pusher, check->fields.server->origin, check->fields.server->mins, check->fields.server->maxs, check->fields.server->origin).startsolid)
                                continue;
+               }
 
                if (forward[0] != 1 || left[1] != 1) // quick way to check if any rotation is used
                {
@@ -1332,7 +1338,7 @@ void SV_Physics_Entity (prvm_edict_t *ent, qboolean runmove)
                // make sure the velocity is sane (not a NaN)
                SV_CheckVelocity(ent);
                // LordHavoc: QuakeC replacement for SV_ClientThink (player movement)
-               if (SV_PlayerPhysicsQC)
+               if (SV_PlayerPhysicsQC && sv_playerphysicsqc.integer)
                {
                        prog->globals.server->time = sv.time;
                        prog->globals.server->self = PRVM_EDICT_TO_PROG(ent);