feat: add nearby villager field notes
This commit is contained in:
@@ -130,6 +130,26 @@ func reload_npc_visual(npc_id: int) -> bool:
|
||||
return false
|
||||
|
||||
|
||||
func find_nearest_active_npc_id(origin: Vector3, max_distance: float) -> int:
|
||||
if not origin.is_finite() or not is_finite(max_distance) or max_distance < 0.0:
|
||||
return -1
|
||||
var nearest_id := -1
|
||||
var nearest_distance_squared := max_distance * max_distance
|
||||
var sorted_ids: Array = active_npc_visuals.keys()
|
||||
sorted_ids.sort()
|
||||
for npc_id in sorted_ids:
|
||||
var visual := active_npc_visuals[npc_id] as Node3D
|
||||
if visual == null or not is_instance_valid(visual) or bool(visual.get("is_dead_visual")):
|
||||
continue
|
||||
var distance_squared := origin.distance_squared_to(visual.global_position)
|
||||
if distance_squared > nearest_distance_squared:
|
||||
continue
|
||||
if nearest_id < 0 or distance_squared < nearest_distance_squared:
|
||||
nearest_id = int(npc_id)
|
||||
nearest_distance_squared = distance_squared
|
||||
return nearest_id
|
||||
|
||||
|
||||
func _on_npc_target_requested(npc: SimNPC) -> void:
|
||||
var visual = active_npc_visuals.get(npc.id) as Node3D
|
||||
if visual == null:
|
||||
|
||||
Reference in New Issue
Block a user