Touching occurs on the server only and results in calls to the
Touch(CBaseEntity* pOther) functions of both entities involved.
Entity code is not normally called when determining if a touch should occur. However calls can be inserted in a few places:
Be aware when editing your own entity that you cannot reliably prevent other entities from creating their own touches (it all depends on who moved first). Only by altering the
CBaseEntity function can you guarantee success.
To make an entity touch others without colliding with them, call
AddSolidFlags( FSOLID_NOT_SOLID | FSOLID_TRIGGER ).