Developer Notes

In 4.9 respecting the scale of the actor as set in the blueprint was implemented, however, a bug in AActor::FinishSpawning meant that it only worked if you were doing SpawnActor rather than SpawnActorDeferred (BP always uses SpawnActorDeferred/FinishSpawning while C++ can use either path, and more typically the non-deferred one is used) or that something modified the actor transform between SpawnActorDeferred and FinishSpawning was invoked.

This bug has been fixed in 4.12, however, it has the unfortunate side-effect of now applying the scale in cases where it previously wasn't. We tried to come up with a way that would not change existing contents behavior, but unfortunately, maintaining a bugged behavior as backwards compatibility is often not possible, and arguably, not desirable as some people were intending that the behavior work.

Description

When using the Spawn Actor from Class node, the Spawn Transform Scale is being multiplied by the actor's original scale, instead of just setting the scale to the Spawn Transform's value.

In 4.11.2, the Spawn Transform Scale value was the final scale of the object. In 4.12.1 and Main CL 3005971, the scale values are being multiplied instead.

This is a regression. Did not occur in 4.11.2.

Steps to Reproduce

1. Open the editor
2. Add a Cube to the level
3. Convert it to a blueprint class
4. Open the Cube_Blueprint
5. Scale the Cube to 2,2,2
6. Compile & Save
7. Open the Level Blueprint
8. Add a Spawn Actor From Class Node
9. Set it to spawn Cube_Blueprint
10. Right-click on Spawn Transform and Split Struct Pin
11. Enter 5,5,5 for the scale
12. Compile the Level Blueprint
13. PIE
14. Eject
15. Select the spawned cube

Result: Notice the scale is 10,10,10.

Expected: The scale would be 5,5,5

Have Comments or More Details?

Head over to the existing Questions & Answers thread and let us know what's up.

0
Login to Vote

By Design
ComponentUE - Gameplay
Affects Versions4.124.13
CreatedJun 9, 2016
ResolvedJun 10, 2016
UpdatedJul 14, 2021