Streaming levels and actor permanency

Imagine this scenario:

The player pawn moves through the world made up of streaming levels. The actor picks up an item in one streaming level, and brings it to the next, where the item is dropped on the ground.
Now, when the player pawn moves further through the world, the streaming level is unloaded, and the item in the level drops through the floor.

How to avoid this? I want to find the dropped item at exactly the place I dropped it when coming back to the streaming level later.

I imagine I need a permanent actor that handles all the spawning and persist the states of every item somehow.
But how do I detect when an item is dropped on the ground and comes to rest, which level it is dropped in?

Ideally, I’d like callbacks on

  • Item stops moving after being dropped
  • Streaming level loads
  • Streaming level unloads
  • Player (or any actor) transitions to a new streaming level’s bounding volume.

Is there such a thing accessible using Blueprints?

Or even better - is there a prebuild solution to this - I imagine this is quite a common problem.

I’m no expert but …
Why not just make it simply like that :
Player Take BP_Item in StreamLevel_01 >>> BP_Item is flaged has destroyed in GameInstance and won’t be spawned.
Player Drop BP_Item in StreamLevel_02 >>> Bp_Item is added to the list of Assets to be spawned…

objects that need to persist between levels need to be in the persistent level