@@ -185,44 +185,28 @@ void InstancedRenderer3D::set_prefabs_rendered(const godot::PackedStringArray &p
185185 update_configuration_warnings ();
186186}
187187
188- void InstancedRenderer3D::connect_configuration_change_signals ( ) {
188+ void InstancedRenderer3D::set_lod_levels ( const godot::TypedArray<InstancedRenderer3DLODConfiguration> &p_lod_levels ) {
189189 const godot::Callable warnings_callable = callable_mp (static_cast <godot::Node *>(this ), &godot::Node::update_configuration_warnings);
190190
191191 for (int i = 0 ; i < lod_levels.size (); ++i) {
192- godot::Ref<InstancedRenderer3DLODConfiguration> lod_level = lod_levels[i];
193- if (lod_level .is_valid () && !lod_level ->is_connected (" changed" , warnings_callable)) {
194- lod_level-> connect (" changed" , warnings_callable);
192+ godot::Ref<InstancedRenderer3DLODConfiguration> previous_lod_level = lod_levels[i];
193+ if (previous_lod_level .is_valid () && previous_lod_level ->is_connected (" changed" , warnings_callable)) {
194+ previous_lod_level-> disconnect (" changed" , warnings_callable);
195195 }
196196 }
197- }
198197
199- void InstancedRenderer3D::disconnect_configuration_change_signals () {
200- const godot::Callable warnings_callable = callable_mp (static_cast <godot::Node *>(this ), &godot::Node::update_configuration_warnings);
198+ lod_levels = p_lod_levels;
201199
202200 for (int i = 0 ; i < lod_levels.size (); ++i) {
203201 godot::Ref<InstancedRenderer3DLODConfiguration> lod_level = lod_levels[i];
204- if (lod_level.is_valid () && lod_level->is_connected (" changed" , warnings_callable)) {
205- lod_level->disconnect (" changed" , warnings_callable);
202+ if (lod_level.is_valid () && ! lod_level->is_connected (" changed" , warnings_callable)) {
203+ lod_level->connect (" changed" , warnings_callable);
206204 }
207205 }
208- }
209-
210- void InstancedRenderer3D::set_lod_levels (const godot::TypedArray<InstancedRenderer3DLODConfiguration> &p_lod_levels) {
211- disconnect_configuration_change_signals ();
212-
213- lod_levels = p_lod_levels;
214-
215- connect_configuration_change_signals ();
216206
217207 update_configuration_warnings ();
218208}
219209
220- void InstancedRenderer3D::_notification (int p_what) {
221- if (p_what == godot::Node::NOTIFICATION_EXIT_TREE || p_what == godot::Object::NOTIFICATION_PREDELETE ) {
222- disconnect_configuration_change_signals ();
223- }
224- }
225-
226210godot::PackedStringArray InstancedRenderer3D::_get_configuration_warnings () const {
227211 godot::PackedStringArray warnings;
228212
0 commit comments