// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. #include "SequencerPrivatePCH.h" #include "ModuleManager.h" #include "Sequencer.h" #include "Toolkits/ToolkitManager.h" #include "SequencerCommands.h" #include "SequencerEdMode.h" #include "SequencerObjectChangeListener.h" #include "SequencerDetailKeyframeHandler.h" // 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 #define LOCTEXT_NAMESPACE "SequencerEditor" /** * SequencerModule implementation (private) */ class FSequencerModule : public ISequencerModule { public: // ISequencerModule interface virtual TSharedRef CreateSequencer(const FSequencerInitParams& InitParams) override { TSharedRef Sequencer = MakeShareable(new FSequencer); TSharedRef ObjectChangeListener = MakeShareable(new FSequencerObjectChangeListener(Sequencer, InitParams.bEditWithinLevelEditor)); TSharedRef KeyframeHandler = MakeShareable( new FSequencerDetailKeyframeHandler( Sequencer )); Sequencer->InitSequencer(InitParams, ObjectChangeListener, KeyframeHandler, TrackEditorDelegates); return Sequencer; } 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; } ); } virtual void StartupModule() override { if (GIsEditor) { FSequencerCommands::Register(); FEditorModeRegistry::Get().RegisterMode( FSequencerEdMode::EM_SequencerMode, NSLOCTEXT("Sequencer", "SequencerEditMode", "Sequencer Mode"), FSlateIcon(), false); } MenuExtensibilityManager = MakeShareable( new FExtensibilityManager ); ToolBarExtensibilityManager = MakeShareable( new FExtensibilityManager ); } virtual void ShutdownModule() override { if (GIsEditor) { FSequencerCommands::Unregister(); FEditorModeRegistry::Get().UnregisterMode(FSequencerEdMode::EM_SequencerMode); } } virtual TSharedPtr GetMenuExtensibilityManager() const override { return MenuExtensibilityManager; } virtual TSharedPtr GetToolBarExtensibilityManager() const override { return ToolBarExtensibilityManager; } private: /** List of auto-key handler delegates sequencers will execute when they are created */ TArray< FOnCreateTrackEditor > TrackEditorDelegates; TSharedPtr MenuExtensibilityManager; TSharedPtr ToolBarExtensibilityManager; }; PRAGMA_ENABLE_DEPRECATION_WARNINGS IMPLEMENT_MODULE(FSequencerModule, Sequencer); #undef LOCTEXT_NAMESPACE