Description

There is an issue with PIE where sometimes TMap and TSet properties using TSoftObjectPtr or FSoftObjectPath values as keys don't work correctly. Items which are in the container aren't found despite being present for example. This happens with both native and BP-defined properties.

The culprit seems to be FPIEFixupSerializer. It is correctly rewriting the paths to add the PLAYWORLD_PACKAGE_PREFIX, but it doesn't trigger a rehash afterwards (like FScriptMapHelper::Rehash()) so if the rewrite causes the path keys to change hashes the container lookups begin to fail.

Steps to Reproduce
  1. Create an actor with a UPROPERTY of TMap<TSoftObjectPtr<AActor>
  2. Place actor in a level (seems to occur more often in a world partition level)
  3. Fill the property with at least 5 actors
  4. Run PIE
  5. Observe that the actors are only found after a manual rehash

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-184109 in the post.

0
Login to Vote

Unresolved
ComponentUE - Foundation - Core - EditorLoader
Affects Versions5.1
Target Fix5.5
CreatedApr 24, 2023
UpdatedFeb 15, 2024