Files
UnrealEngineUWP/Engine/Plugins/Experimental/SampleToolsEditorMode/Source/Private/SampleToolsEditorMode.cpp
Ryan Schmidt 7b214c4a33 MeshModeling: add ModelingObjectsCreationAPI, replaces existing usage of IToolsContextAssetAPI in Modeling Tools/Mode
- add new UModelingObjectsCreationAPI and associated data structures, provides abstract API for creating mesh and texture objects from Tools that is not specifically tied to StaticMesh Actors/Assets
- new helper functions in UE::Modeling:: namespace to simplify usage of an implementation of this API registered in a ContextObjectStore
- add new UEditorModelingObjectsCreationAPI implementation of above, supports hooks for higher level to provide custom paths
- add ModelingModeAssetUtils.h, provides several functions in UE::Modeling:: namespace to be used to implement those hooks (various existing path-determination code is moved here)
- ModelingToolsEditorMode now registers an instance of UEditorModelingObjectsCreationAPI in ContextObjectStore and connects up callbacks to these path functions
- AssetGenerationUtil functions and ModelingModeAssetAPI deleted
- All Tools that previously used IToolsContextAssetAPI updated to use this new system

#rb jimmy.andrews
#rnx
#jira none
#preflight 60b7c2ddae46a1000162729b

[CL 16538450 by Ryan Schmidt in ue5-main branch]
2021-06-02 15:58:00 -04:00

80 lines
3.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "SampleToolsEditorMode.h"
#include "SampleToolsEditorModeToolkit.h"
#include "EdModeInteractiveToolsContext.h"
#include "InteractiveToolManager.h"
#include "SampleToolsEditorModeCommands.h"
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// AddYourTool Step 1 - include the header file for your Tools here
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include "SampleTools/CreateActorSampleTool.h"
#include "SampleTools/DrawCurveOnMeshSampleTool.h"
#include "SampleTools/MeasureDistanceSampleTool.h"
// step 2: register a ToolBuilder in FSampleToolsEditorMode::Enter()
#define LOCTEXT_NAMESPACE "FSampleToolsEditorMode"
const FEditorModeID USampleToolsEditorMode::EM_SampleToolsEditorModeId = TEXT("EM_SampleToolsEditorMode");
USampleToolsEditorMode::USampleToolsEditorMode()
{
Info = FEditorModeInfo(USampleToolsEditorMode::EM_SampleToolsEditorModeId,
LOCTEXT("SampleToolsEditorModeName", "SampleToolsEditorMode"),
FSlateIcon(),
true);
}
USampleToolsEditorMode::~USampleToolsEditorMode()
{
}
void USampleToolsEditorMode::ActorSelectionChangeNotify()
{
// @todo support selection change
}
void USampleToolsEditorMode::Enter()
{
UEdMode::Enter();
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// AddYourTool Step 2 - register the ToolBuilders for your Tools here.
// The string name you pass to the ToolManager is used to select/activate your ToolBuilder later.
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
const FSampleToolsEditorModeCommands& SampleToolCommands = FSampleToolsEditorModeCommands::Get();
auto CreateActorSampleToolBuilder = NewObject< UCreateActorSampleToolBuilder>(this);
RegisterTool(SampleToolCommands.CreateActorTool, TEXT("CreateActorSampleTool"), CreateActorSampleToolBuilder);
RegisterTool(SampleToolCommands.DrawCurveOnMeshTool, TEXT("DrawCurveOnMeshSampleTool"), NewObject<UDrawCurveOnMeshSampleToolBuilder>(this));
RegisterTool(SampleToolCommands.MeasureDistanceTool, TEXT("MeasureDistanceSampleTool"), NewObject<UMeasureDistanceSampleToolBuilder>(this));
RegisterTool(SampleToolCommands.SurfacePointTool, TEXT("SurfacePointTool"), NewObject<UMeshSurfacePointToolBuilder>(this));
// active tool type is not relevant here, we just set to default
GetToolManager()->SelectActiveToolType(EToolSide::Left, TEXT("SurfacePointTool"));
}
void USampleToolsEditorMode::CreateToolkit()
{
Toolkit = MakeShareable(new FSampleToolsEditorModeToolkit);
}
TMap<FName, TArray<TSharedPtr<FUICommandInfo>>> USampleToolsEditorMode::GetModeCommands() const
{
return FSampleToolsEditorModeCommands::Get().GetCommands();
}
#undef LOCTEXT_NAMESPACE