Hi again!
This is a collection of issues. Lets go trough them step by step:
.
1: Stop() behaves incorrectly if sequence is paused.
If one has a ULevelSequencePlayer and one does this:
SequencePlayer->Play();
SequencePlayer->Pause();
SequencePlayer->Stop();
The ULevelSequencePlayer will not despawn all spawnables as it would if one would just call:
SequencePlayer->Play();
SequencePlayer->Stop();
.
2: Destroying a ULevelSequencePlayer does not make it despawn spawnables.
SequencePlayer->MarkPendingKill();
As the title says this will just leave the spawnables in place. To safely kill a Sequenceplayer right now (accounting for the pause state) one has to:
SequencePlayer->Play();
SequencePlayer->Stop();
SequencePlayer->MarkPendingKill();
Which does not make any sense.
.
3: Pausing a ULevelSequencePlayer does not necessarily freeze playing animations.
If a spawnable with a skeletalmesh component has been recorded with the Animation flag Playing recorded it will continue playing after the sequenceplayer has been paused.
This might be logical from a systemic point of view but is very confusing from the UX perspective.
.
.
Reproducing the issues
For every problem reproduction do:
- Download the attached project and compile it and open it.
- Click the ControlPlugin Button
- Click Play in Editor
- Make sure to have the Control Plugin window in its own window
- Click Create Player in the plugin window
- The plugin window will become unresponsive
- Click the editor window
- Click the plugin window again
- The plugin window is now repsonive again
- Follow the steps for the individual bugs.
1
- Click play
- Click pause
- Click stop
Result: Spawnables do still exist
2
- Click Play
- Click Delete Player
Result: Spawnables are still there
- Click play
- Click pause
Result: Animation does not freeze