BOOL CCustomZone::feel_touch_contact(CObject* O) { if (smart_cast<CCustomZone*>(O)) return FALSE; if (smart_cast<CBreakableObject*>(O)) return FALSE; if (0==smart_cast<IKinematics*>(O->Visual())) return FALSE; if (O->ID() == ID()) return (FALSE); CGameObject *object = smart_cast<CGameObject*>(O); if (!object || !object->IsVisibleForZones()) return (FALSE); if (!((CCF_Shape*)CFORM())->Contact(O)) return (FALSE); return (object->feel_touch_on_contact(this)); }