2014-12-07 19:09:38 -05:00
|
|
|
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
2014-03-14 14:13:41 -04:00
|
|
|
|
|
|
|
|
#include "SequencerPrivatePCH.h"
|
|
|
|
|
#include "ModuleManager.h"
|
|
|
|
|
#include "Sequencer.h"
|
|
|
|
|
#include "Toolkits/ToolkitManager.h"
|
|
|
|
|
#include "SequencerCommands.h"
|
2014-06-06 09:03:19 -04:00
|
|
|
#include "SequencerAssetEditor.h"
|
2014-06-16 23:53:56 -04:00
|
|
|
#include "SequencerObjectChangeListener.h"
|
2014-03-14 14:13:41 -04:00
|
|
|
|
2015-01-08 09:29:27 -05:00
|
|
|
// We disable the deprecation warnings here because otherwise it'll complain about us
|
|
|
|
|
// implementing RegisterTrackEditor and UnRegisterTrackEditor. We know
|
|
|
|
|
// that, but we only want it to complain if *others* implement or call these functions.
|
|
|
|
|
//
|
|
|
|
|
// These macros should be removed when those functions are removed.
|
|
|
|
|
PRAGMA_DISABLE_DEPRECATION_WARNINGS
|
|
|
|
|
|
2014-03-14 14:13:41 -04:00
|
|
|
/**
|
|
|
|
|
* SequencerModule implementation (private)
|
|
|
|
|
*/
|
|
|
|
|
class FSequencerModule : public ISequencerModule
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
/** ISequencerModule interface */
|
2014-07-22 14:11:55 -04:00
|
|
|
virtual TSharedPtr<ISequencer> CreateSequencer( UMovieScene* RootMovieScene, const FSequencerViewParams& InViewParams, TSharedRef<ISequencerObjectBindingManager> ObjectBindingManager ) override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
2014-06-05 16:56:40 -04:00
|
|
|
TSharedRef< FSequencer > Sequencer = MakeShareable(new FSequencer);
|
2014-06-16 16:37:22 -04:00
|
|
|
|
|
|
|
|
FSequencerInitParams SequencerInitParams;
|
2014-07-22 14:11:55 -04:00
|
|
|
SequencerInitParams.ViewParams = InViewParams;
|
2014-06-16 16:37:22 -04:00
|
|
|
SequencerInitParams.ObjectChangeListener = MakeShareable( new FSequencerObjectChangeListener( Sequencer, false ) );
|
|
|
|
|
|
|
|
|
|
SequencerInitParams.ObjectBindingManager = ObjectBindingManager;
|
|
|
|
|
|
|
|
|
|
SequencerInitParams.RootMovieScene = RootMovieScene;
|
|
|
|
|
|
|
|
|
|
SequencerInitParams.bEditWithinLevelEditor = false;
|
|
|
|
|
|
|
|
|
|
SequencerInitParams.ToolkitHost = nullptr;
|
|
|
|
|
|
|
|
|
|
Sequencer->InitSequencer( SequencerInitParams, TrackEditorDelegates );
|
|
|
|
|
|
2014-06-05 16:56:40 -04:00
|
|
|
return Sequencer;
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
2014-07-22 14:11:55 -04:00
|
|
|
virtual TSharedPtr<ISequencer> CreateSequencerAssetEditor( const EToolkitMode::Type Mode, const FSequencerViewParams& InViewParams, const TSharedPtr< class IToolkitHost >& InitToolkitHost, UMovieScene* InRootMovieScene, bool bEditWithinLevelEditor ) override
|
2014-06-05 16:56:40 -04:00
|
|
|
{
|
|
|
|
|
TSharedRef< FSequencerAssetEditor > SequencerAssetEditor = MakeShareable(new FSequencerAssetEditor);
|
2014-07-22 14:11:55 -04:00
|
|
|
|
|
|
|
|
SequencerAssetEditor->InitSequencerAssetEditor( Mode, InViewParams, InitToolkitHost, InRootMovieScene, TrackEditorDelegates, bEditWithinLevelEditor );
|
2014-06-05 16:56:40 -04:00
|
|
|
return SequencerAssetEditor->GetSequencerInterface();
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual void RegisterTrackEditor( FOnCreateTrackEditor InOnCreateTrackEditor ) override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
2015-01-08 09:29:27 -05:00
|
|
|
if (!TrackEditorDelegates.ContainsByPredicate([&](const FOnCreateTrackEditor& Delegate){ return Delegate.DEPRECATED_Compare(InOnCreateTrackEditor); }))
|
|
|
|
|
{
|
|
|
|
|
TrackEditorDelegates.Add(InOnCreateTrackEditor);
|
|
|
|
|
}
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual void UnRegisterTrackEditor( FOnCreateTrackEditor InOnCreateTrackEditor ) override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
2015-01-08 09:29:27 -05:00
|
|
|
TrackEditorDelegates.RemoveAll( [&](const FOnCreateTrackEditor& Delegate){ return Delegate.DEPRECATED_Compare(InOnCreateTrackEditor); } );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual FDelegateHandle RegisterTrackEditor_Handle( FOnCreateTrackEditor InOnCreateTrackEditor ) override
|
|
|
|
|
{
|
|
|
|
|
TrackEditorDelegates.Add( InOnCreateTrackEditor );
|
|
|
|
|
return TrackEditorDelegates.Last().GetHandle();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual void UnRegisterTrackEditor_Handle( FDelegateHandle InHandle ) override
|
|
|
|
|
{
|
|
|
|
|
TrackEditorDelegates.RemoveAll( [=](const FOnCreateTrackEditor& Delegate){ return Delegate.GetHandle() == InHandle; } );
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual void StartupModule() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
2014-11-11 10:35:51 -05:00
|
|
|
if (GIsEditor)
|
|
|
|
|
{
|
|
|
|
|
FSequencerCommands::Register();
|
|
|
|
|
}
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual void ShutdownModule() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
2014-11-11 10:35:51 -05:00
|
|
|
if (GIsEditor)
|
|
|
|
|
{
|
|
|
|
|
FSequencerCommands::Unregister();
|
|
|
|
|
}
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
private:
|
|
|
|
|
/** List of auto-key handler delegates sequencers will execute when they are created */
|
|
|
|
|
TArray< FOnCreateTrackEditor > TrackEditorDelegates;
|
|
|
|
|
};
|
|
|
|
|
|
2015-01-08 09:29:27 -05:00
|
|
|
PRAGMA_ENABLE_DEPRECATION_WARNINGS
|
2014-03-14 14:13:41 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_MODULE( FSequencerModule, Sequencer );
|