diff --git a/src/game/server/func_movelinear.cpp b/src/game/server/func_movelinear.cpp index 397fefd18..17fa915dd 100644 --- a/src/game/server/func_movelinear.cpp +++ b/src/game/server/func_movelinear.cpp @@ -84,9 +84,9 @@ void CFuncMoveLinear::Spawn( void ) m_flMoveDistance = DotProductAbs( m_vecMoveDir, vecOBB ) - m_flLip; } - m_vecPosition1 = GetAbsOrigin() - (m_vecMoveDir * m_flMoveDistance * m_flStartPosition); - m_vecPosition2 = m_vecPosition1 + (m_vecMoveDir * m_flMoveDistance); - m_vecFinalDest = GetAbsOrigin(); + m_vecPosition1 = GetLocalOrigin() - ( m_vecMoveDir * m_flMoveDistance * m_flStartPosition ); + m_vecPosition2 = m_vecPosition1 + ( m_vecMoveDir * m_flMoveDistance ); + m_vecFinalDest = GetLocalOrigin(); SetTouch( NULL ); @@ -394,3 +394,23 @@ int CFuncMoveLinear::DrawDebugTextOverlays(void) } return text_offset; } + +//----------------------------------------------------------------------------- + + + +// Purpose: Runs a fix atfer the base version clearly dosen't cut it. + + +//----------------------------------------------------------------------------- + + +void CFuncMoveLinear::SetParent( CBaseEntity *pParentEntity, int iAttachment ) +{ + BaseClass::SetParent( pParentEntity, iAttachment ); + + // Recompute all positions + m_vecPosition1 = GetLocalOrigin() - ( m_vecMoveDir * m_flMoveDistance * m_flStartPosition ); + m_vecPosition2 = m_vecPosition1 + ( m_vecMoveDir * m_flMoveDistance ); + m_vecFinalDest = GetLocalOrigin(); +} \ No newline at end of file diff --git a/src/game/server/func_movelinear.h b/src/game/server/func_movelinear.h index 8f09adc2a..1b3b48f8f 100644 --- a/src/game/server/func_movelinear.h +++ b/src/game/server/func_movelinear.h @@ -36,6 +36,8 @@ public: int DrawDebugTextOverlays(void); + void SetParent( CBaseEntity *pParentEntity, int iAttachment ); + // Input handlers void InputOpen( inputdata_t &inputdata ); void InputClose( inputdata_t &inputdata );