feat: add npc simulation, instancing and visual scene
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
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
|
||||
@@ -0,0 +1 @@
|
||||
uid://c1f3b26n4yntf
|
||||
Reference in New Issue
Block a user