2
0
Эх сурвалжийг харах

fix bug in a spawner component (#725) (#746)

* parent id can only be set in completion callback

Signed-off-by: Mateusz Żak <[email protected]>
Co-authored-by: Mateusz Żak <[email protected]>
Jan Hanca 1 жил өмнө
parent
commit
b18f827f0c

+ 7 - 2
Gems/ROS2/Code/Source/Spawner/ROS2SpawnerComponent.cpp

@@ -227,8 +227,14 @@ namespace ROS2
             PreSpawn(id, view, transform, spawnableName, spawnableNamespace);
         };
 
-        optionalArgs.m_completionCallback = [service_handle, header, ticketName](auto id, auto view)
+        optionalArgs.m_completionCallback = [service_handle, header, ticketName, parentId = GetEntityId()](auto id, auto view)
         {
+            if (!view.empty())
+            {
+                const AZ::Entity* root = *view.begin();
+                auto* transformInterface = root->FindComponent<AzFramework::TransformComponent>();
+                transformInterface->SetParent(parentId);
+            }
             SpawnEntityResponse response;
             response.success = true;
             response.status_message = ticketName.c_str();
@@ -253,7 +259,6 @@ namespace ROS2
 
         auto* transformInterface = root->FindComponent<AzFramework::TransformComponent>();
         transformInterface->SetWorldTM(transform);
-        transformInterface->SetParent(GetEntityId());
 
         AZStd::string instanceName = AZStd::string::format("%s_%d", spawnableName.c_str(), m_counter++);
         for (AZ::Entity* entity : view)