From 4882866bd9ce33e28bab63add05377bf70b83596 Mon Sep 17 00:00:00 2001 From: Segey Lapin Date: Fri, 29 Oct 2021 15:29:02 +0300 Subject: [PATCH] Now spawn relative nodes via Spawner too --- modules/world/spawner.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/world/spawner.cpp b/modules/world/spawner.cpp index 97a8fa5..02f7806 100644 --- a/modules/world/spawner.cpp +++ b/modules/world/spawner.cpp @@ -71,6 +71,16 @@ void Spawner::place_scene(const StringName &name, const Transform &place) } void Spawner::place_scene_relative(const StringName &name, Node *parent, const Transform &place) { + if (!parent) + return; + lock.lock(); + if (scenes.has(name)) { + Node *n = scenes[name]->instance(); + Spatial *sp = Object::cast_to(n); + sp->set_transform(place); + parent->call_deferred("add_child", sp); + } + lock.unlock(); } void Spawner::update_view(Node *node, float distance) { @@ -95,7 +105,6 @@ void Spawner::update_view(Node *node, float distance) for (i = 0; i < pos.size(); i++) { if (!pos[i].active) { Transform x = pos[i].xform; - Vector3 npos = x.origin; float d = org.distance_squared_to(x.origin); if (d < distance * distance) { Node *pn = scenes[*key]->instance();