35 lines
831 B
GDScript
35 lines
831 B
GDScript
extends Node
|
|
|
|
@export var npc_visual_scene: PackedScene
|
|
@export var simulation_manager: Node
|
|
@export var active_npcs_parent: Node3D
|
|
|
|
var active_npc_visuals := {} # sim_id -> NPCVisual
|
|
|
|
func _ready() -> void:
|
|
call_deferred("spawn_initial_npcs")
|
|
|
|
func spawn_initial_npcs() -> void:
|
|
if simulation_manager == null:
|
|
push_error("WorldViewManager: simulation_manager is missing")
|
|
return
|
|
|
|
if npc_visual_scene == null:
|
|
push_error("WorldViewManager: npc_visual_scene is missing")
|
|
return
|
|
|
|
for npc in simulation_manager.npcs:
|
|
spawn_npc_visual(npc)
|
|
|
|
func spawn_npc_visual(npc: SimNPC) -> void:
|
|
if active_npc_visuals.has(npc.id):
|
|
return
|
|
|
|
var visual := npc_visual_scene.instantiate()
|
|
active_npcs_parent.add_child(visual)
|
|
|
|
visual.global_position = npc.position
|
|
visual.setup_from_sim(npc)
|
|
|
|
active_npc_visuals[npc.id] = visual
|