void FNiagaraEditor::InitNiagaraEditor( const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, UNiagaraScript* InScript ) { Script = InScript; check(Script != NULL); Source = CastChecked<UNiagaraScriptSource>(Script->Source); check(Source->NodeGraph != NULL); TSharedRef<FTabManager::FLayout> StandaloneDefaultLayout = FTabManager::NewLayout( "Standalone_Niagara_Layout_v4" ) ->AddArea ( FTabManager::NewPrimaryArea() ->SetOrientation(Orient_Vertical) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.1f) ->AddTab(GetToolbarTabId(), ETabState::OpenedTab) ->SetHideTabWell( true ) ) ->Split ( FTabManager::NewSplitter()->SetOrientation(Orient_Horizontal)->SetSizeCoefficient(0.9f) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.2f) ->AddTab(PropertiesTabId, ETabState::OpenedTab) ) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.8f) ->AddTab(NodeGraphTabId, ETabState::OpenedTab) ) ) ); FPropertyEditorModule& PropertyEditorModule = FModuleManager::GetModuleChecked<FPropertyEditorModule>("PropertyEditor"); const FDetailsViewArgs DetailsViewArgs(false, false, true, FDetailsViewArgs::HideNameArea, true, this); NiagaraDetailsView = PropertyEditorModule.CreateDetailView(DetailsViewArgs); const bool bCreateDefaultStandaloneMenu = true; const bool bCreateDefaultToolbar = true; FAssetEditorToolkit::InitAssetEditor( Mode, InitToolkitHost, FNiagaraEditorModule::NiagaraEditorAppIdentifier, StandaloneDefaultLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, Script ); FNiagaraEditorModule& NiagaraEditorModule = FModuleManager::LoadModuleChecked<FNiagaraEditorModule>( "NiagaraEditor" ); AddMenuExtender(NiagaraEditorModule.GetMenuExtensibilityManager()->GetAllExtenders(GetToolkitCommands(), GetEditingObjects())); ExtendToolbar(); RegenerateMenusAndToolbars(); // @todo toolkit world centric editing /*// Setup our tool's layout if( IsWorldCentricAssetEditor() ) { const FString TabInitializationPayload(TEXT("")); // NOTE: Payload not currently used for table properties SpawnToolkitTab( NodeGraphTabId, TabInitializationPayload, EToolkitTabSpot::Details ); }*/ }
void FMediaPlaylistEditorToolkit::Initialize(UMediaPlaylist* InMediaPlaylist, const EToolkitMode::Type InMode, const TSharedPtr<IToolkitHost>& InToolkitHost) { MediaPlaylist = InMediaPlaylist; if (MediaPlaylist == nullptr) { return; } // Support undo/redo MediaPlaylist->SetFlags(RF_Transactional); GEditor->RegisterForUndo(this); // create tab layout const TSharedRef<FTabManager::FLayout> Layout = FTabManager::NewLayout("Standalone_MediaPlaylistEditor_v2") ->AddArea ( FTabManager::NewPrimaryArea() ->SetOrientation(Orient_Vertical) ->Split ( // tool bar FTabManager::NewStack() ->AddTab(GetToolbarTabId(), ETabState::OpenedTab) ->SetHideTabWell(true) ->SetSizeCoefficient(0.1f) ) ->Split ( // details FTabManager::NewStack() ->AddTab(MediaPlaylistEditorToolkit::DetailsTabId, ETabState::OpenedTab) ->SetSizeCoefficient(0.45f) ) ->Split ( // media library FTabManager::NewStack() ->AddTab(MediaPlaylistEditorToolkit::MediaTabId, ETabState::OpenedTab) ->SetHideTabWell(true) ->SetSizeCoefficient(0.45f) ) ); FAssetEditorToolkit::InitAssetEditor( InMode, InToolkitHost, MediaPlaylistEditorToolkit::AppIdentifier, Layout, true /*bCreateDefaultStandaloneMenu*/, true /*bCreateDefaultToolbar*/, InMediaPlaylist ); RegenerateMenusAndToolbars(); }
void FTextAssetEditorToolkit::Initialize(UTextAsset* InTextAsset, const EToolkitMode::Type InMode, const TSharedPtr<class IToolkitHost>& InToolkitHost) { TextAsset = InTextAsset; // Support undo/redo TextAsset->SetFlags(RF_Transactional); GEditor->RegisterForUndo(this); // create tab layout const TSharedRef<FTabManager::FLayout> Layout = FTabManager::NewLayout("Standalone_TextAssetEditor") ->AddArea ( FTabManager::NewPrimaryArea() ->SetOrientation(Orient_Horizontal) ->Split ( FTabManager::NewSplitter() ->SetOrientation(Orient_Vertical) ->SetSizeCoefficient(0.66f) ->Split ( FTabManager::NewStack() ->AddTab(GetToolbarTabId(), ETabState::OpenedTab) ->SetHideTabWell(true) ->SetSizeCoefficient(0.1f) ) ->Split ( FTabManager::NewStack() ->AddTab(TextEditorTabId, ETabState::OpenedTab) ->SetHideTabWell(true) ->SetSizeCoefficient(0.9f) ) ) ); FAssetEditorToolkit::InitAssetEditor( InMode, InToolkitHost, TextAssetEditorAppIdentifier, Layout, true /*bCreateDefaultStandaloneMenu*/, true /*bCreateDefaultToolbar*/, InTextAsset ); RegenerateMenusAndToolbars(); }
void FCurveAssetEditor::InitCurveAssetEditor( const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, UCurveBase* CurveToEdit ) { TSharedRef<FTabManager::FLayout> StandaloneDefaultLayout = FTabManager::NewLayout( "Standalone_CurveAssetEditor_Layout" ) ->AddArea ( FTabManager::NewPrimaryArea() ->SetOrientation(Orient_Vertical) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.1f) ->SetHideTabWell( true ) ->AddTab(GetToolbarTabId(), ETabState::OpenedTab) ) ->Split ( FTabManager::NewStack() ->SetHideTabWell( true ) ->AddTab( CurveTabId, ETabState::OpenedTab ) ) ); const bool bCreateDefaultStandaloneMenu = true; const bool bCreateDefaultToolbar = true; FAssetEditorToolkit::InitAssetEditor( Mode, InitToolkitHost, FCurveAssetEditorModule::CurveAssetEditorAppIdentifier, StandaloneDefaultLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, CurveToEdit ); FCurveAssetEditorModule& CurveAssetEditorModule = FModuleManager::LoadModuleChecked<FCurveAssetEditorModule>( "CurveAssetEditor" ); AddMenuExtender(CurveAssetEditorModule.GetMenuExtensibilityManager()->GetAllExtenders(GetToolkitCommands(), GetEditingObjects())); AddToolbarExtender(GetToolbarExtender()); // @todo toolkit world centric editing /*// Setup our tool's layout if( IsWorldCentricAssetEditor() ) { const FString TabInitializationPayload(TEXT("")); // NOTE: Payload not currently used for table properties SpawnToolkitTab( CurveTabId, TabInitializationPayload, EToolkitTabSpot::Details ); }*/ if (TrackWidget.IsValid()) { RegenerateMenusAndToolbars(); } }
void FSkeletonEditor::InitSkeletonEditor(const EToolkitMode::Type Mode, const TSharedPtr<IToolkitHost>& InitToolkitHost, USkeleton* InSkeleton) { Skeleton = InSkeleton; FPersonaModule& PersonaModule = FModuleManager::LoadModuleChecked<FPersonaModule>("Persona"); PersonaToolkit = PersonaModule.CreatePersonaToolkit(InSkeleton); PersonaToolkit->GetPreviewScene()->SetDefaultAnimationMode(EPreviewSceneDefaultAnimationMode::ReferencePose); TSharedRef<IAssetFamily> AssetFamily = PersonaModule.CreatePersonaAssetFamily(InSkeleton); AssetFamily->RecordAssetOpened(FAssetData(InSkeleton)); FSkeletonTreeArgs SkeletonTreeArgs(OnPostUndo); SkeletonTreeArgs.OnObjectSelected = FOnObjectSelected::CreateSP(this, &FSkeletonEditor::HandleObjectSelected); SkeletonTreeArgs.PreviewScene = PersonaToolkit->GetPreviewScene(); ISkeletonEditorModule& SkeletonEditorModule = FModuleManager::GetModuleChecked<ISkeletonEditorModule>("SkeletonEditor"); SkeletonTree = SkeletonEditorModule.CreateSkeletonTree(PersonaToolkit->GetSkeleton(), PersonaToolkit->GetMesh(), SkeletonTreeArgs); const bool bCreateDefaultStandaloneMenu = true; const bool bCreateDefaultToolbar = true; const TSharedRef<FTabManager::FLayout> DummyLayout = FTabManager::NewLayout("NullLayout")->AddArea(FTabManager::NewPrimaryArea()); FAssetEditorToolkit::InitAssetEditor(Mode, InitToolkitHost, SkeletonEditorAppIdentifier, DummyLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, InSkeleton); BindCommands(); AddApplicationMode( SkeletonEditorModes::SkeletonEditorMode, MakeShareable(new FSkeletonEditorMode(SharedThis(this), SkeletonTree.ToSharedRef()))); SetCurrentMode(SkeletonEditorModes::SkeletonEditorMode); // set up our editor mode check(AssetEditorModeManager); AssetEditorModeManager->SetDefaultMode(FPersonaEditModes::SkeletonSelection); ExtendMenu(); ExtendToolbar(); RegenerateMenusAndToolbars(); }
void Open(const TArray<UObject*>& InObjects, TSharedPtr<IToolkitHost> EditWithinLevelEditor) { Context = InObjects[0]; const EToolkitMode::Type Mode = EditWithinLevelEditor.IsValid() ? EToolkitMode::WorldCentric : EToolkitMode::Standalone; if (Outer->Commands) { Outer->Commands->Bind(&(GetToolkitCommands().Get())); } TSharedPtr<FTabManager::FLayout> StandaloneDefaultLayout = FTabManager::FLayout::NewFromString(Outer->Layout.Replace(TEXT("#toolbartab"), *(GetToolbarTabId().ToString()))); // Initialize the asset editor and spawn nothing (dummy layout) InitAssetEditor(Mode, EditWithinLevelEditor, Outer->ToolkitFName, StandaloneDefaultLayout.ToSharedRef(), /*bCreateDefaultStandaloneMenu=*/ true, /*bCreateDefaultToolbar=*/ true, InObjects); if (Outer->MenuExtender) { auto Extender = Outer->MenuExtender->TakeMenuExtender(GetToolkitCommands()); if (Extender.IsValid()) { AddMenuExtender(Extender); } } if (Outer->ToolbarExtender) { auto Extender = Outer->ToolbarExtender->TakeToolbarExtender(GetToolkitCommands()); if (Extender.IsValid()) { AddToolbarExtender(Extender); } } RegenerateMenusAndToolbars(); }
void FSoundCueEditor::InitSoundCueEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, UObject* ObjectToEdit) { SoundCue = CastChecked<USoundCue>(ObjectToEdit); // Support undo/redo SoundCue->SetFlags(RF_Transactional); GEditor->RegisterForUndo(this); FGraphEditorCommands::Register(); FSoundCueGraphEditorCommands::Register(); BindGraphCommands(); CreateInternalWidgets(); const TSharedRef<FTabManager::FLayout> StandaloneDefaultLayout = FTabManager::NewLayout("Standalone_SoundCueEditor_Layout_v3") ->AddArea ( FTabManager::NewPrimaryArea() ->SetOrientation(Orient_Vertical) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.1f) ->AddTab(GetToolbarTabId(), ETabState::OpenedTab) ->SetHideTabWell( true ) ) ->Split ( FTabManager::NewSplitter() ->SetOrientation(Orient_Horizontal) ->SetSizeCoefficient(0.9f) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.225f) ->AddTab(PropertiesTabId, ETabState::OpenedTab) ) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.65f) ->AddTab(GraphCanvasTabId, ETabState::OpenedTab) ->SetHideTabWell( true ) ) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.125f) ->AddTab(PaletteTabId, ETabState::OpenedTab) ) ) ); const bool bCreateDefaultStandaloneMenu = true; const bool bCreateDefaultToolbar = true; FAssetEditorToolkit::InitAssetEditor(Mode, InitToolkitHost, SoundCueEditorAppIdentifier, StandaloneDefaultLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, ObjectToEdit, false); ISoundCueEditorModule* SoundCueEditorModule = &FModuleManager::LoadModuleChecked<ISoundCueEditorModule>( "SoundCueEditor" ); AddMenuExtender(SoundCueEditorModule->GetMenuExtensibilityManager()->GetAllExtenders(GetToolkitCommands(), GetEditingObjects())); ExtendToolbar(); RegenerateMenusAndToolbars(); // @todo toolkit world centric editing /*if(IsWorldCentricAssetEditor()) { SpawnToolkitTab(GetToolbarTabId(), FString(), EToolkitTabSpot::ToolBar); SpawnToolkitTab(GraphCanvasTabId, FString(), EToolkitTabSpot::Viewport); SpawnToolkitTab(PropertiesTabId, FString(), EToolkitTabSpot::Details); }*/ }
void FSubstanceEditor::InitSubstanceEditor(const TSharedPtr< class IToolkitHost >& InitToolkitHost, UObject* ObjectToEdit) { EditedGraph = CastChecked<USubstanceGraphInstance>(ObjectToEdit); // cannot edit incomplete instance if (!EditedGraph || !EditedGraph->Instance || !EditedGraph->Instance->Desc || !EditedGraph->Parent) { return; } // Register to be notified when an object is reimported. GEditor->OnObjectReimported().AddSP(this, &FSubstanceEditor::OnObjectReimported); // Support undo/redo EditedGraph->SetFlags(RF_Transactional); GEditor->RegisterForUndo(this); // Register our commands. This will only register them if not previously registered FSubstanceEditorCommands::Register(); BindCommands(); CreateInternalWidgets(); const TSharedRef<FTabManager::FLayout> StandaloneDefaultLayout = FTabManager::NewLayout("Standalone_SubstanceEditor_Layout") ->AddArea ( FTabManager::NewPrimaryArea() ->SetOrientation( Orient_Vertical ) ->Split ( FTabManager::NewSplitter() ->SetOrientation(Orient_Vertical) ->Split ( FTabManager::NewStack() ->AddTab(GetToolbarTabId(), ETabState::OpenedTab) ->SetHideTabWell(true) ) ->Split ( FTabManager::NewStack() ->AddTab(SubstanceTabId, ETabState::OpenedTab) ->SetHideTabWell(true) ) ) ); const bool bCreateDefaultStandaloneMenu = true; const bool bCreateDefaultToolbar = true; FAssetEditorToolkit::InitAssetEditor(EToolkitMode::Standalone, InitToolkitHost, SubstanceEditorModule::SubstanceEditorAppIdentifier, StandaloneDefaultLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, ObjectToEdit); ISubstanceEditorModule* SubstanceEditorModule = &FModuleManager::LoadModuleChecked<ISubstanceEditorModule>("SubstanceEditor"); AddMenuExtender(SubstanceEditorModule->GetMenuExtensibilityManager()->GetAllExtenders()); ExtendToolbar(); RegenerateMenusAndToolbars(); }
void FNiagaraEffectEditor::InitNiagaraEffectEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, UNiagaraEffect* InEffect) { Effect = InEffect; check(Effect != NULL); EffectInstance = new FNiagaraEffectInstance(InEffect); const float InTime = -0.02f; const float OutTime = 3.2f; if (!Sequencer.IsValid()) { MovieScene = NewObject<UMovieScene>(InEffect, FName("Niagara Effect MovieScene"), RF_RootSet); auto NewAnimation = NewObject<UNiagaraSequence>(MovieScene); MovieScene->StartTime = InTime; MovieScene->InTime = InTime; MovieScene->OutTime = OutTime; MovieScene->EndTime = OutTime; NewAnimation->MovieScene = MovieScene; FSequencerViewParams ViewParams(TEXT("NiagaraSequencerSettings")); { ViewParams.InitalViewRange = TRange<float>(InTime, OutTime); ViewParams.InitialScrubPosition = 0; } FSequencerInitParams SequencerInitParams; { SequencerInitParams.ViewParams = ViewParams; SequencerInitParams.RootSequence = NewAnimation; SequencerInitParams.bEditWithinLevelEditor = false; SequencerInitParams.ToolkitHost = nullptr; } ISequencerModule &SeqModule = FModuleManager::LoadModuleChecked< ISequencerModule >("Sequencer"); FDelegateHandle CreateTrackEditorHandle = SeqModule.RegisterTrackEditor_Handle(FOnCreateTrackEditor::CreateStatic(&FNiagaraEffectEditor::CreateTrackEditor)); Sequencer = SeqModule.CreateSequencer(SequencerInitParams); for (TSharedPtr<FNiagaraSimulation> Emitter : EffectInstance->GetEmitters()) { UEmitterMovieSceneTrack *Track = Cast<UEmitterMovieSceneTrack> (MovieScene->AddMasterTrack(UEmitterMovieSceneTrack::StaticClass()) ); Track->SetEmitter(Emitter); } } TSharedRef<FTabManager::FLayout> StandaloneDefaultLayout = FTabManager::NewLayout("Standalone_Niagara_Effect_Layout_v7") ->AddArea ( FTabManager::NewPrimaryArea()->SetOrientation(Orient_Vertical) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.1f) ->AddTab(GetToolbarTabId(), ETabState::OpenedTab) ->SetHideTabWell(true) ) ->Split ( FTabManager::NewSplitter()->SetOrientation(Orient_Horizontal) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.1f) ->AddTab(ViewportTabID, ETabState::OpenedTab) ) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.3f) ->AddTab(EmitterEditorTabID, ETabState::OpenedTab) ->AddTab(DevEmitterEditorTabID, ETabState::OpenedTab) ) ) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.3f) ->AddTab(CurveEditorTabID, ETabState::OpenedTab) ->AddTab(SequencerTabID, ETabState::OpenedTab) ) ); const bool bCreateDefaultStandaloneMenu = true; const bool bCreateDefaultToolbar = true; FAssetEditorToolkit::InitAssetEditor(Mode, InitToolkitHost, FNiagaraEditorModule::NiagaraEditorAppIdentifier, StandaloneDefaultLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, Effect); FNiagaraEditorModule& NiagaraEditorModule = FModuleManager::LoadModuleChecked<FNiagaraEditorModule>("NiagaraEditor"); AddMenuExtender(NiagaraEditorModule.GetMenuExtensibilityManager()->GetAllExtenders(GetToolkitCommands(), GetEditingObjects())); ExtendToolbar(); RegenerateMenusAndToolbars(); }