I noticed in my mod, due to some asserts I had added, that under certain
circumstances I don't fully understand, the vphysics engine would report a
child object (ie, a weapon) touching a player, which when caused the player to
touch itself. I don't think Valve could've really intended this - anyone have
any ideas on why it might ever have been a good thing to do? Here's the fix if
not...
--- mod/src/dlls/baseentity.cpp 26 Aug 2006 21:24:28 -0000 1.8
+++ mod/src/dlls/baseentity.cpp 7 Oct 2006 18:00:57 -0000
@@ -1787,8 +1787,9 @@
void CBaseEntity::StartTouch( CBaseEntity *pOther )
{
// notify parent
- if ( m_pParent != NULL )
+ if ((m_pParent != NULL) && (m_pParent != pOther)) {
m_pParent->StartTouch( pOther );
+ }
}
void CBaseEntity::Touch( CBaseEntity *pOther )
@@ -1797,15 +1798,15 @@
(this->*m_pfnTouch)( pOther );
// notify parent of touch
- if ( m_pParent != NULL )
+ if ((m_pParent != NULL) && (m_pParent != pOther)) {
m_pParent->Touch( pOther );
+ }
}
void CBaseEntity::EndTouch( CBaseEntity *pOther )
{
// notify parent
- if ( m_pParent != NULL )
- {
+ if ((m_pParent != NULL) && (m_pParent != pOther)) {
m_pParent->EndTouch( pOther );
}
}
@@ -1825,8 +1826,7 @@
//
// Forward the blocked event to our parent, if any.
//
- if ( m_pParent != NULL )
- {
+ if ((m_pParent != NULL) && (m_pParent != pOther)) {
m_pParent->Blocked( pOther );
}
}
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders