In 4.18, BroadcastOnActorMoved() is no longer being called when an actor is moved in a level. The PostEditChangeProperty() function checks to see if the name of the property that was changed matches either "RelativeLocation", "RelativeRotation", or "RelativeScale3D". Currently the name of the property is set to the name of the axis that was changed ("X", "Y", or "Z"), so the strings do not match which prevents the BroadcastOnActorMoved() function from being called.

Yes. This behavior did not occur in 4.17.2.

Steps to Reproduce
  1. Create a new basic code project.
  2. Add a new Actor code class to the project.
  3. Create a new Blueprint that derives from the new Actor class.
  4. Place an instance of the new Blueprint into a level.
  5. Save the level.
  6. Set the saved level to be the default level.
  7. Close the Editor.
  8. Locate and open the ActorEditor.cpp file in Visual Studio.
    • Engine/Source/Runtime/Engine/Private/ActorEditor.cpp
  9. Start the project through the Visual Studio debugger using the Debug Editor configuration.
  10. Once the Editor opens, place a breakpoint at the beginning of the AActor::PostEditChangeProperty() function in ActorEditor.cpp.
  11. Select the instance of the Actor Blueprint in the level and edit one of the location values for an axis (eg: set the Z value to 100).
  12. When the breakpoint is hit, carefully step through the first few lines of the PostEditChangeProperty() function.

The PropertyThatChanged is set based on the PropertyChangedEvent that is passed into the function. This shows that the "Z" Property was changed (or other axis if you changed a different one). PropertyName is then set to the name of the Property that was changed ("Z", or the name of the axis that you changed). Finally, bTransformationChanged compares PropertyName to see if that string matches "RelativeLocation", "RelativeRotation", or "RelativeScale3D". bTransformationChanged will be set to false since the strings do not match, which results in BroadcastOnActorMoved() never being called.

PropertyName is set to a value that matches one of the following strings: "RelativeLocation", "RelativeRotation", or "RelativeScale3D".

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-55129 in the post.

Login to Vote

Affects Versions4.18.34.20
CreatedFeb 13, 2018
UpdatedApr 27, 2018