void Area2D::_notification(int p_what) { switch(p_what) { case NOTIFICATION_EXIT_TREE: { _clear_monitoring(); } break; } }
void Area2D::set_enable_monitoring(bool p_enable) { if (locked) { ERR_EXPLAIN("This function can't be used during the in/out signal."); } ERR_FAIL_COND(locked); if (p_enable==monitoring) return; monitoring=p_enable; if (monitoring) { Physics2DServer::get_singleton()->area_set_monitor_callback(get_rid(),this,"_body_inout"); } else { Physics2DServer::get_singleton()->area_set_monitor_callback(get_rid(),NULL,StringName()); _clear_monitoring(); } }
void Area::set_monitoring(bool p_enable) { if (locked) { ERR_EXPLAIN("Function blocked during in/out signal. Use set_deferred(\"monitoring\",true/false)"); } ERR_FAIL_COND(locked); if (p_enable == monitoring) return; monitoring = p_enable; if (monitoring) { PhysicsServer::get_singleton()->area_set_monitor_callback(get_rid(), this, SceneStringNames::get_singleton()->_body_inout); PhysicsServer::get_singleton()->area_set_area_monitor_callback(get_rid(), this, SceneStringNames::get_singleton()->_area_inout); } else { PhysicsServer::get_singleton()->area_set_monitor_callback(get_rid(), NULL, StringName()); PhysicsServer::get_singleton()->area_set_area_monitor_callback(get_rid(), NULL, StringName()); _clear_monitoring(); } }
void Area::_notification(int p_what) { if (p_what==NOTIFICATION_EXIT_TREE) { _clear_monitoring(); } }