Files
UnrealEngine/Engine/Source/Editor/Sequencer/Private/SequencerTimeChangeUndoRedoProxy.h
2025-05-18 13:04:45 +08:00

60 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "CoreTypes.h"
#include "UObject/ObjectMacros.h"
#include "EventHandlers/ISignedObjectEventHandler.h"
#include "Delegates/IDelegateInstance.h"
#include "Misc/QualifiedFrameTime.h"
#include "MovieSceneSequenceID.h"
#include "SequencerTimeChangeUndoRedoProxy.generated.h"
class FSequencer;
UCLASS()
class USequencerTimeChangeUndoRedoProxy : public UObject
{
public:
GENERATED_BODY()
USequencerTimeChangeUndoRedoProxy() :bTimeWasSet(false), WeakSequencer(nullptr) { };
~USequencerTimeChangeUndoRedoProxy() {};
/*~ UObject */
virtual void PostEditUndo() override;
UPROPERTY(Transient)
FQualifiedFrameTime Time;
//no TOptional UPROPERTY so use this instead
UPROPERTY(Transient)
bool bTimeWasSet = false;
TWeakPtr<FSequencer> WeakSequencer;
};
class FSequencerTimeChangedHandler: public UE::MovieScene::ISignedObjectEventHandler
{
public:
FSequencerTimeChangedHandler() : UndoRedoProxy(nullptr), WeakSequencer(nullptr){};
virtual ~FSequencerTimeChangedHandler();
/*~ ISignedObjectEventHandler Interface */
virtual void OnModifiedIndirectly(UMovieSceneSignedObject*) override;
void SetSequencer(TSharedRef<FSequencer> InSequencer);
void OnActivateSequenceChanged(FMovieSceneSequenceIDRef ID);
TObjectPtr<USequencerTimeChangeUndoRedoProxy> UndoRedoProxy;
UE::MovieScene::TNonIntrusiveEventHandler<UE::MovieScene::ISignedObjectEventHandler> MovieSceneModified;
TWeakPtr<FSequencer> WeakSequencer;
FDelegateHandle OnActivateSequenceChangedHandle;
};