void FLandscapeToolKit::Init(const TSharedPtr<IToolkitHost>& InitToolkitHost) { auto NameToCommandMap = FLandscapeEditorCommands::Get().NameToCommandMap; FEdModeLandscape* LandscapeEdMode = GetEditorMode(); TSharedRef<FUICommandList> CommandList = LandscapeEdMode->GetUICommandList(); #define MAP_MODE(ModeName) CommandList->MapAction(NameToCommandMap.FindChecked(ModeName), FUIAction(FExecuteAction::CreateSP(this, &FLandscapeToolKit::OnChangeMode, FName(ModeName)), FCanExecuteAction::CreateSP(this, &FLandscapeToolKit::IsModeEnabled, FName(ModeName)), FIsActionChecked::CreateSP(this, &FLandscapeToolKit::IsModeActive, FName(ModeName)))); MAP_MODE("ToolMode_Manage"); MAP_MODE("ToolMode_Sculpt"); MAP_MODE("ToolMode_Paint"); #undef MAP_MODE #define MAP_TOOL(ToolName) CommandList->MapAction(NameToCommandMap.FindChecked("Tool_" ToolName), FUIAction(FExecuteAction::CreateSP(this, &FLandscapeToolKit::OnChangeTool, FName(ToolName)), FCanExecuteAction::CreateSP(this, &FLandscapeToolKit::IsToolEnabled, FName(ToolName)), FIsActionChecked::CreateSP(this, &FLandscapeToolKit::IsToolActive, FName(ToolName)))); MAP_TOOL("NewLandscape"); MAP_TOOL("ResizeLandscape"); MAP_TOOL("Sculpt"); MAP_TOOL("Paint"); MAP_TOOL("Smooth"); MAP_TOOL("Flatten"); MAP_TOOL("Ramp"); MAP_TOOL("Erosion"); MAP_TOOL("HydraErosion"); MAP_TOOL("Noise"); MAP_TOOL("Retopologize"); MAP_TOOL("Visibility"); MAP_TOOL("Select"); MAP_TOOL("AddComponent"); MAP_TOOL("DeleteComponent"); MAP_TOOL("MoveToLevel"); MAP_TOOL("Mask"); MAP_TOOL("CopyPaste"); MAP_TOOL("Mirror"); MAP_TOOL("Splines"); #undef MAP_TOOL #define MAP_BRUSH_SET(BrushSetName) CommandList->MapAction(NameToCommandMap.FindChecked(BrushSetName), FUIAction(FExecuteAction::CreateSP(this, &FLandscapeToolKit::OnChangeBrushSet, FName(BrushSetName)), FCanExecuteAction::CreateSP(this, &FLandscapeToolKit::IsBrushSetEnabled, FName(BrushSetName)), FIsActionChecked::CreateSP(this, &FLandscapeToolKit::IsBrushSetActive, FName(BrushSetName)))); MAP_BRUSH_SET("BrushSet_Circle"); MAP_BRUSH_SET("BrushSet_Alpha"); MAP_BRUSH_SET("BrushSet_Pattern"); MAP_BRUSH_SET("BrushSet_Component"); MAP_BRUSH_SET("BrushSet_Gizmo"); #undef MAP_BRUSH_SET #define MAP_BRUSH(BrushName) CommandList->MapAction(NameToCommandMap.FindChecked(BrushName), FUIAction(FExecuteAction::CreateSP(this, &FLandscapeToolKit::OnChangeBrush, FName(BrushName)), FCanExecuteAction(), FIsActionChecked::CreateSP(this, &FLandscapeToolKit::IsBrushActive, FName(BrushName)))); MAP_BRUSH("Circle_Smooth"); MAP_BRUSH("Circle_Linear"); MAP_BRUSH("Circle_Spherical"); MAP_BRUSH("Circle_Tip"); #undef MAP_BRUSH LandscapeEditorWidgets = SNew(SLandscapeEditor, SharedThis(this)); FModeToolkit::Init(InitToolkitHost); }
void FLandscapeEditorDetails::CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) { FEdModeLandscape* LandscapeEdMode = GetEditorMode(); CommandList = LandscapeEdMode->GetUICommandList(); static const FLinearColor BorderColor = FLinearColor(0.2f, 0.2f, 0.2f, 0.2f); static const FSlateBrush* BorderStyle = FEditorStyle::GetBrush("DetailsView.GroupSection"); IDetailCategoryBuilder& LandscapeEditorCategory = DetailBuilder.EditCategory("LandscapeEditor", FText::GetEmpty(), ECategoryPriority::TypeSpecific); LandscapeEditorCategory.AddCustomRow(FText::GetEmpty()) .Visibility(TAttribute<EVisibility>::Create(TAttribute<EVisibility>::FGetter::CreateStatic(&FLandscapeEditorDetails::GetTargetLandscapeSelectorVisibility))) [ SNew(SComboButton) .OnGetMenuContent_Static(&FLandscapeEditorDetails::GetTargetLandscapeMenu) .ButtonContent() [ SNew(STextBlock) .Text_Static(&FLandscapeEditorDetails::GetTargetLandscapeName) ] ]; FToolSelectorBuilder ToolBrushSelectorButtons(CommandList, FMultiBoxCustomization::None); { FUIAction ToolSelectorUIAction; //ToolSelectorUIAction.IsActionVisibleDelegate.BindSP(this, &FLandscapeEditorDetails::GetToolSelectorIsVisible); ToolBrushSelectorButtons.AddComboButton( ToolSelectorUIAction, FOnGetContent::CreateSP(this, &FLandscapeEditorDetails::GetToolSelector), LOCTEXT("ToolSelector", "Tool"), TAttribute<FText>(this, &FLandscapeEditorDetails::GetCurrentToolName), LOCTEXT("ToolSelector.Tooltip", "Select Tool"), TAttribute<FSlateIcon>(this, &FLandscapeEditorDetails::GetCurrentToolIcon) ); FUIAction BrushSelectorUIAction; BrushSelectorUIAction.IsActionVisibleDelegate.BindSP(this, &FLandscapeEditorDetails::GetBrushSelectorIsVisible); ToolBrushSelectorButtons.AddComboButton( BrushSelectorUIAction, FOnGetContent::CreateSP(this, &FLandscapeEditorDetails::GetBrushSelector), LOCTEXT("BrushSelector", "Brush"), TAttribute<FText>(this, &FLandscapeEditorDetails::GetCurrentBrushName), LOCTEXT("BrushSelector.Tooltip", "Select Brush"), TAttribute<FSlateIcon>(this, &FLandscapeEditorDetails::GetCurrentBrushIcon) ); FUIAction BrushFalloffSelectorUIAction; BrushFalloffSelectorUIAction.IsActionVisibleDelegate.BindSP(this, &FLandscapeEditorDetails::GetBrushFalloffSelectorIsVisible); ToolBrushSelectorButtons.AddComboButton( BrushFalloffSelectorUIAction, FOnGetContent::CreateSP(this, &FLandscapeEditorDetails::GetBrushFalloffSelector), LOCTEXT("BrushFalloffSelector", "Falloff"), TAttribute<FText>(this, &FLandscapeEditorDetails::GetCurrentBrushFalloffName), LOCTEXT("BrushFalloffSelector.Tooltip", "Select Brush Falloff Type"), TAttribute<FSlateIcon>(this, &FLandscapeEditorDetails::GetCurrentBrushFalloffIcon) ); } LandscapeEditorCategory.AddCustomRow(FText::GetEmpty()) .Visibility(TAttribute<EVisibility>::Create(TAttribute<EVisibility>::FGetter::CreateSP(this, &FLandscapeEditorDetails::GetToolSelectorVisibility))) [ ToolBrushSelectorButtons.MakeWidget() ]; // Tools: Customization_NewLandscape = MakeShareable(new FLandscapeEditorDetailCustomization_NewLandscape); Customization_NewLandscape->CustomizeDetails(DetailBuilder); Customization_ResizeLandscape = MakeShareable(new FLandscapeEditorDetailCustomization_ResizeLandscape); Customization_ResizeLandscape->CustomizeDetails(DetailBuilder); Customization_CopyPaste = MakeShareable(new FLandscapeEditorDetailCustomization_CopyPaste); Customization_CopyPaste->CustomizeDetails(DetailBuilder); Customization_MiscTools = MakeShareable(new FLandscapeEditorDetailCustomization_MiscTools); Customization_MiscTools->CustomizeDetails(DetailBuilder); // Brushes: Customization_AlphaBrush = MakeShareable(new FLandscapeEditorDetailCustomization_AlphaBrush); Customization_AlphaBrush->CustomizeDetails(DetailBuilder); // Target Layers: Customization_TargetLayers = MakeShareable(new FLandscapeEditorDetailCustomization_TargetLayers); Customization_TargetLayers->CustomizeDetails(DetailBuilder); }