void RigidBody::set_contact_monitor(bool p_enabled) { if (p_enabled == is_contact_monitor_enabled()) return; if (!p_enabled) { if (contact_monitor->locked) { ERR_EXPLAIN("Can't disable contact monitoring during in/out callback. Use call_deferred(\"set_contact_monitor\",false) instead"); } ERR_FAIL_COND(contact_monitor->locked); for (Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.front(); E; E = E->next()) { //clean up mess } memdelete(contact_monitor); contact_monitor = NULL; } else { contact_monitor = memnew(ContactMonitor); contact_monitor->locked = false; } }
void RigidBody::set_contact_monitor(bool p_enabled) { if (p_enabled==is_contact_monitor_enabled()) return; if (!p_enabled) { for(Map<ObjectID,BodyState>::Element *E=contact_monitor->body_map.front();E;E=E->next()) { //clean up mess } memdelete( contact_monitor ); contact_monitor=NULL; } else { contact_monitor = memnew( ContactMonitor ); } }