From f9c62e02aa9d5c8964e8ed3fba8d904700bc53c6 Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Mon, 8 Sep 2025 19:59:59 -0600 Subject: [PATCH] Null check in laser-cast ID association --- src/equipment/beam/laser_cast/laser_cast.gd | 51 ++++++++++----------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/equipment/beam/laser_cast/laser_cast.gd b/src/equipment/beam/laser_cast/laser_cast.gd index 3b8110a..6e4cc4f 100644 --- a/src/equipment/beam/laser_cast/laser_cast.gd +++ b/src/equipment/beam/laser_cast/laser_cast.gd @@ -28,32 +28,8 @@ func _process(_delta: float) -> void: (c as Node3D).global_position = child_pos var collider: Object = get_collider() - var new_gunk_id: int = collider.get_instance_id() - if new_gunk_id != gunk_id: - gunk_id = new_gunk_id - if gunkable: - # Disconnect old signals to avoid emitting from previous node and accumulating connections - if gunkable.painted_at_point.is_connected(grunk_dust._on_gunkable_painted_at_point): - gunkable.painted_at_point.disconnect(grunk_dust._on_gunkable_painted_at_point) - if gunkable.clear_total_updated.is_connected( - grunk_dust._on_gunkable_clear_total_updated - ): - gunkable.clear_total_updated.disconnect( - grunk_dust._on_gunkable_clear_total_updated - ) - gunkable = Gunkable.get_component(collider) - if gunkable: - # Connect signals of new gunkable to our gunk dust - if !gunkable.painted_at_point.is_connected( - grunk_dust._on_gunkable_painted_at_point - ): - gunkable.painted_at_point.connect(grunk_dust._on_gunkable_painted_at_point) - if !gunkable.clear_total_updated.is_connected( - grunk_dust._on_gunkable_clear_total_updated - ): - gunkable.clear_total_updated.connect( - grunk_dust._on_gunkable_clear_total_updated - ) + if is_instance_valid(collider): + _connect_gunkable(collider) laser_dust.emitting = true @@ -61,3 +37,26 @@ func _process(_delta: float) -> void: else: laser_dust.emitting = false glow_light.visible = false + + +func _connect_gunkable(collider: Object) -> void: + var new_gunk_id: int = collider.get_instance_id() + if new_gunk_id != gunk_id: + gunk_id = new_gunk_id + if gunkable: + # Disconnect old signals to avoid emitting from previous node and accumulating connections + if gunkable.painted_at_point.is_connected(grunk_dust._on_gunkable_painted_at_point): + gunkable.painted_at_point.disconnect(grunk_dust._on_gunkable_painted_at_point) + if gunkable.clear_total_updated.is_connected( + grunk_dust._on_gunkable_clear_total_updated + ): + gunkable.clear_total_updated.disconnect(grunk_dust._on_gunkable_clear_total_updated) + gunkable = Gunkable.get_component(collider) + if gunkable: + # Connect signals of new gunkable to our gunk dust + if !gunkable.painted_at_point.is_connected(grunk_dust._on_gunkable_painted_at_point): + gunkable.painted_at_point.connect(grunk_dust._on_gunkable_painted_at_point) + if !gunkable.clear_total_updated.is_connected( + grunk_dust._on_gunkable_clear_total_updated + ): + gunkable.clear_total_updated.connect(grunk_dust._on_gunkable_clear_total_updated)