We using multiple CameraShake.
Add Log.
MovieSceneCameraAnimTemplate.cpp
ACameraActor* GetTempCameraActor(IMovieScenePlayer& Player)
{
if (!TempCameraActor.IsValid())
{
// spawn the temp CameraActor used for updating CameraAnims
FActorSpawnParameters SpawnInfo;
SpawnInfo.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
// We never want to save these temp actors into a map
SpawnInfo.ObjectFlags |= RF_Transient;
ACameraActor* Cam = Player.GetPlaybackContext()->GetWorld()->SpawnActor<ACameraActor>(SpawnInfo);
UE_LOG(LogTemp, Warning, TEXT(" Spawn CameraActor[%p] [%s]"), Cam, *Cam->GetName());
if (Cam)
{
struct FTempCameraPreAnimatedStateProducer : IMovieScenePreAnimatedTokenProducer
{
virtual IMovieScenePreAnimatedTokenPtr CacheExistingState(UObject& Object) const override
{
struct FTempCameraPreAnimatedState : IMovieScenePreAnimatedToken
{
virtual void RestoreState(UObject& InObject, IMovieScenePlayer& InPlayer)
{
AActor* Actor = CastChecked<AActor>(&InObject);
Actor->Destroy(false, false);
UE_LOG(LogTemp, Warning, TEXT(" Destroy Actor[%p] [%s]"), Actor, *Actor->GetName());
}
};
CameraShake.cpp
// Don't allow shake to flip pitch past vertical, if not using a headset (where we can't limit the camera locked to your head).
APlayerCameraManager* CameraOwner = GetCameraManager();
AActor * WorldActor = (CameraOwner ? CameraOwner : TempCameraActorForCameraAnims);
if (WorldActor->IsPendingKillPending())
UE_LOG(LogTemp, Warning, TEXT(" Actor[%p] [%s] is pendingkill. Is it OK???"), WorldActor, *WorldActor->GetName());
UWorld * World = (WorldActor ? WorldActor->GetWorld() : nullptr);
I got this result.
LogTemp: Warning: Spawn CameraActor[0000014A42EF1600] [CameraActor_1]
LogTemp: Warning: Destroy Actor[0000014A42EF1600] [CameraActor_1]
LogTemp: Warning: Spawn CameraActor[0000014AC74C2080] [CameraActor_2]
LogTemp: Warning: Destroy Actor[0000014AC74C2080] [CameraActor_2]
LogTemp: Warning: Spawn CameraActor[0000014AF3F14100] [CameraActor_3]
LogTemp: Warning: Destroy Actor[0000014AF3F14100] [CameraActor_3]
LogTemp: Warning: Spawn CameraActor[0000014AF3F22080] [CameraActor_4]
LogTemp: Warning: Destroy Actor[0000014AF3F22080] [CameraActor_4]
LogTemp: Warning: Spawn CameraActor[00000149CED86B00] [CameraActor_5]
LogTemp: Warning: Actor[0000014AF3F22080] [CameraActor_4] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AF3F22080] [CameraActor_4] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AF3F22080] [CameraActor_4] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AF3F22080] [CameraActor_4] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AF3F22080] [CameraActor_4] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AF3F22080] [CameraActor_4] is pendingkill. Is it OK???
LogTemp: Warning: Destroy Actor[00000149CED86B00] [CameraActor_5]
LogTemp: Warning: Spawn CameraActor[0000014AFC31EB00] [CameraActor_6]
LogTemp: Warning: Destroy Actor[0000014AFC31EB00] [CameraActor_6]
LogTemp: Warning: Spawn CameraActor[0000014AFC320B80] [CameraActor_7]
LogTemp: Warning: Actor[0000014AFC31EB00] [CameraActor_6] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AFC31EB00] [CameraActor_6] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AFC31EB00] [CameraActor_6] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AFC31EB00] [CameraActor_6] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AFC31EB00] [CameraActor_6] is pendingkill. Is it OK???
LogTemp: Warning: Destroy Actor[0000014AFC320B80] [CameraActor_7]
LogTemp: Warning: Spawn CameraActor[0000014AC664F580] [CameraActor_8]
LogTemp: Warning: Actor[0000014AFC320B80] [CameraActor_7] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AFC320B80] [CameraActor_7] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AFC320B80] [CameraActor_7] is pendingkill. Is it OK???
LogTemp: Warning: Actor[0000014AFC320B80] [CameraActor_7] is pendingkill. Is it OK???
LogTemp: Warning: Destroy Actor[0000014AC664F580] [CameraActor_8]
LogTemp: Warning: Spawn CameraActor[00000149C5A3A080] [CameraActor_9]
LogTemp: Warning: Destroy Actor[00000149C5A3A080] [CameraActor_9]
LogTemp: Warning: Spawn CameraActor[00000149C51E9600] [CameraActor_10]
LogTemp: Warning: Destroy Actor[00000149C51E9600] [CameraActor_10]
Sometimes crash.