2019-12-27 09:26:59 -05:00
// Copyright Epic Games, Inc. All Rights Reserved.
2019-09-12 13:55:17 -04:00
# include "MergeMeshesTool.h"
# include "InteractiveToolManager.h"
# include "ToolBuilderUtil.h"
2023-05-16 15:55:48 -04:00
2019-10-24 16:45:51 -04:00
# include "ToolSetupUtil.h"
2023-05-16 15:55:48 -04:00
2019-09-12 13:55:17 -04:00
# include "Selection/ToolSelectionUtil.h"
2021-06-13 00:36:02 -04:00
# include "DynamicMesh/DynamicMesh3.h"
2023-05-16 15:55:48 -04:00
# include "DynamicMesh/MeshTransforms.h"
# include "InteractiveGizmoManager.h"
# include "BaseGizmos/GizmoComponents.h"
# include "BaseGizmos/CombinedTransformGizmo.h"
2019-09-12 13:55:17 -04:00
# include "CompositionOps/VoxelMergeMeshesOp.h"
2022-09-28 01:06:15 -04:00
# include UE_INLINE_GENERATED_CPP_BY_NAME(MergeMeshesTool)
2021-03-09 19:33:56 -04:00
using namespace UE : : Geometry ;
2019-09-12 13:55:17 -04:00
# define LOCTEXT_NAMESPACE "UMergeMeshesTool"
2023-05-16 15:55:48 -04:00
void UMergeMeshesTool : : SetupProperties ( )
2021-03-11 11:40:03 -04:00
{
2023-05-16 15:55:48 -04:00
//Super::SetupProperties();
//RemoveToolPropertySource(VoxProperties);
2021-03-11 11:40:03 -04:00
2023-05-16 15:55:48 -04:00
UBaseCreateFromSelectedTool : : SetupProperties ( ) ;
MergeProps = NewObject < UMergeMeshesToolProperties > ( this ) ;
2020-04-21 23:51:57 -04:00
MergeProps - > RestoreProperties ( this ) ;
2019-09-12 13:55:17 -04:00
AddToolPropertySource ( MergeProps ) ;
2023-05-16 15:55:48 -04:00
SetToolDisplayName ( LOCTEXT ( " UMergeMeshesToolName " , " Voxel Merge Meshes " ) ) ;
2020-03-10 14:00:36 -04:00
GetToolManager ( ) - > DisplayMessage (
2023-05-16 15:55:48 -04:00
LOCTEXT ( " OnStartTool " , " Compute a CSG Union of the input meshes using voxelization techniques.UVs, sharp edges, and small / thin features will be lost.Increase Voxel Count to enhance accuracy. " ) ,
2020-03-10 14:00:36 -04:00
EToolMessageLevel : : UserNotification ) ;
2023-05-16 15:55:48 -04:00
2019-09-12 13:55:17 -04:00
}
2023-05-16 15:55:48 -04:00
void UMergeMeshesTool : : SaveProperties ( )
2019-09-12 13:55:17 -04:00
{
2023-05-16 15:55:48 -04:00
UBaseCreateFromSelectedTool : : SaveProperties ( ) ;
//Super::SaveProperties();
2020-04-21 23:51:57 -04:00
MergeProps - > SaveProperties ( this ) ;
2023-05-16 15:55:48 -04:00
}
2020-04-21 23:51:57 -04:00
2023-05-16 15:55:48 -04:00
void UMergeMeshesTool : : ConvertInputsAndSetPreviewMaterials ( bool bSetPreviewMesh )
{
Super : : ConvertInputsAndSetPreviewMaterials ( bSetPreviewMesh ) ;
if ( HasOpenBoundariesInMeshInputs ( ) )
2020-04-21 23:51:57 -04:00
{
2023-05-16 15:55:48 -04:00
GetToolManager ( ) - > DisplayMessage (
LOCTEXT ( " WarnOpenEdges " , " Open edges found: some artifacts will result. " ) ,
EToolMessageLevel : : UserWarning ) ;
2019-09-12 13:55:17 -04:00
}
}
2019-10-04 14:13:21 -04:00
TUniquePtr < FDynamicMeshOperator > UMergeMeshesTool : : MakeNewOperator ( )
2019-09-12 13:55:17 -04:00
{
2019-10-04 14:13:21 -04:00
TUniquePtr < FVoxelMergeMeshesOp > MergeOp = MakeUnique < FVoxelMergeMeshesOp > ( ) ;
2023-05-16 15:55:48 -04:00
MergeOp - > VoxelCount = MergeProps - > VoxelCount ;
MergeOp - > AdaptivityD = MergeProps - > MeshAdaptivity ;
MergeOp - > IsoSurfaceD = MergeProps - > OffsetDistance ;
MergeOp - > bAutoSimplify = MergeProps - > bAutoSimplify ;
MergeOp - > Transforms . SetNum ( Targets . Num ( ) ) ;
MergeOp - > Meshes . SetNum ( Targets . Num ( ) ) ;
for ( int Idx = 0 ; Idx < Targets . Num ( ) ; Idx + + )
{
MergeOp - > Meshes [ Idx ] = OriginalDynamicMeshes [ Idx ] ;
MergeOp - > Transforms [ Idx ] = TransformProxies [ Idx ] - > GetTransform ( ) ;
}
2019-09-12 13:55:17 -04:00
return MergeOp ;
}
2023-05-16 15:55:48 -04:00
FString UMergeMeshesTool : : GetCreatedAssetName ( ) const
2019-09-12 13:55:17 -04:00
{
2023-05-16 15:55:48 -04:00
return TEXT ( " VoxelMergedMeshes " ) ;
2019-09-12 13:55:17 -04:00
}
2023-05-16 15:55:48 -04:00
FText UMergeMeshesTool : : GetActionName ( ) const
2019-09-23 16:41:56 -04:00
{
2023-05-16 15:55:48 -04:00
return LOCTEXT ( " VoxelMergeMeshes " , " Voxel Merge Meshes " ) ;
2019-09-23 16:41:56 -04:00
}
2019-09-12 13:55:17 -04:00
# undef LOCTEXT_NAMESPACE
2022-09-28 01:06:15 -04:00