From 532d5e538eb77102887095e05898d0c52ab50f76 Mon Sep 17 00:00:00 2001 From: SNMetamorph <25657591+SNMetamorph@users.noreply.github.com> Date: Mon, 13 Nov 2023 04:25:38 +0400 Subject: [PATCH] server: fixed interacting of pushable entities and dynamic actors --- server/cbase.h | 2 -- server/physic.cpp | 4 +++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/server/cbase.h b/server/cbase.h index 9f93d4ff..138b8480 100644 --- a/server/cbase.h +++ b/server/cbase.h @@ -632,7 +632,6 @@ class CBaseEntity { if( m_iOldSolid == SOLID_NOT && pev->solid != SOLID_NOT ) { - WorldPhysic->EnableCollision( this, FALSE ); m_iOldSolid = pev->solid; pev->solid = SOLID_NOT; } @@ -642,7 +641,6 @@ class CBaseEntity { if( m_iOldSolid != SOLID_NOT && pev->solid == SOLID_NOT ) { - WorldPhysic->EnableCollision( this, TRUE ); pev->solid = m_iOldSolid; m_iOldSolid = SOLID_NOT; } diff --git a/server/physic.cpp b/server/physic.cpp index a85ac6f9..663f30a5 100644 --- a/server/physic.cpp +++ b/server/physic.cpp @@ -622,7 +622,9 @@ bool CPhysicsPushedEntities::SpeculativelyCheckPush( PhysicsPushedInfo_t &info, } // we're not blocked if the blocker is point-sized or non-solid - if( pBlocker->IsPointSized() || pBlocker->pev->solid == SOLID_NOT ) + // dynamic actors also doesn't block way since all pushables are kinematic actors + // and they just can push away other dynamic actors despite of obstacles + if( pBlocker->IsPointSized() || pBlocker->pev->solid == SOLID_NOT || bIsDynamic ) { return true; }