extends Node3D @onready var _skin := $skin var _head_track_arr: Array[Node3D]= [] func _pick_head_track_target() -> void: if _head_track_arr.is_empty(): _skin.set_head_target(null) _skin.set_eyes_target(null) else: var target: Node3D = _head_track_arr.front() _skin.set_head_target(target) _skin.set_eyes_target(target) func _on_head_turn_area_entered(area: Area3D) -> void: for node in area.get_children().filter(func(c: Node3D): return c.is_in_group("npc-headTrack")): var i = _head_track_arr.find(node) if i < 0: _head_track_arr.append(node) _pick_head_track_target() func _on_head_turn_area_exited(area: Area3D) -> void: for node in area.get_children().filter(func(c: Node3D): return c.is_in_group("npc-headTrack")): var i = _head_track_arr.find(node) if i >= 0: _head_track_arr.remove_at(i) _pick_head_track_target()