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 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 FSoundClassEditor::InitSoundClassEditor( const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, UObject* ObjectToEdit ) { SoundClass = CastChecked<USoundClass>(ObjectToEdit); while (SoundClass->ParentClass) { SoundClass = SoundClass->ParentClass; } // Support undo/redo SoundClass->SetFlags(RF_Transactional); GEditor->RegisterForUndo(this); ToolkitCommands->MapAction( FGenericCommands::Get().Undo, FExecuteAction::CreateSP( this, &FSoundClassEditor::UndoGraphAction )); ToolkitCommands->MapAction( FGenericCommands::Get().Redo, FExecuteAction::CreateSP( this, &FSoundClassEditor::RedoGraphAction )); if( !SoundClass->SoundClassGraph ) { SoundClass->SoundClassGraph = CastChecked<USoundClassGraph>(FBlueprintEditorUtils::CreateNewGraph(SoundClass, NAME_None, USoundClassGraph::StaticClass(), USoundClassGraphSchema::StaticClass())); SoundClass->SoundClassGraph->SetRootSoundClass(SoundClass); } SoundClass->SoundClassGraph->RebuildGraph(); CreateInternalWidgets(); TSharedRef<FTabManager::FLayout> StandaloneDefaultLayout = FTabManager::NewLayout( "Standalone_SoundClassEditor_Layout_v2" ) ->AddArea ( FTabManager::NewPrimaryArea() ->SetOrientation(Orient_Vertical) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.1f) ->SetHideTabWell( true ) ->AddTab(GetToolbarTabId(), ETabState::OpenedTab) ) ->Split ( FTabManager::NewSplitter() ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.2f) ->AddTab(PropertiesTabId, ETabState::OpenedTab) ) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.8f) ->AddTab(GraphCanvasTabId, ETabState::OpenedTab) ) ) ); const bool bCreateDefaultStandaloneMenu = true; const bool bCreateDefaultToolbar = true; FAssetEditorToolkit::InitAssetEditor( Mode, InitToolkitHost, SoundClassEditorAppIdentifier, StandaloneDefaultLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, ObjectToEdit ); ISoundClassEditorModule* SoundClassEditorModule = &FModuleManager::LoadModuleChecked<ISoundClassEditorModule>( "SoundClassEditor" ); AddMenuExtender(SoundClassEditorModule->GetMenuExtensibilityManager()->GetAllExtenders(GetToolkitCommands(), GetEditingObjects())); AddToolbarExtender(SoundClassEditorModule->GetToolBarExtensibilityManager()->GetAllExtenders(GetToolkitCommands(), GetEditingObjects())); GraphEditor->SelectAllNodes(); for (UObject* SelectedNode : GraphEditor->GetSelectedNodes()) { USoundClassGraphNode* GraphNode = CastChecked<USoundClassGraphNode>(SelectedNode); if (GraphNode->SoundClass == ObjectToEdit) { GraphEditor->ClearSelectionSet(); GraphEditor->SetNodeSelection(GraphNode, true); DetailsView->SetObject(ObjectToEdit); break; } } }