Files
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

48 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "InteractiveTool.h"
#include "BaseOps/VoxelBaseOp.h"
#include "VoxelProperties.generated.h"
UCLASS(MinimalAPI)
class UVoxelProperties : public UInteractiveToolPropertySet
{
GENERATED_BODY()
public:
/** The size of the geometry bounding box major axis measured in voxels */
UPROPERTY(EditAnywhere, Category = VoxelSettings, meta = (UIMin = "8", UIMax = "1024", ClampMin = "8", ClampMax = "1024"))
int32 VoxelCount = 128;
/** Automatically simplify the result of voxel-based meshes.*/
UPROPERTY(EditAnywhere, Category = VoxelSettings)
bool bAutoSimplify = false;
/** Remove internal, occluded geometry */
UPROPERTY(EditAnywhere, Category = VoxelSettings)
bool bRemoveInternalSurfaces = false;
/** The max error (as a multiple of the voxel size) to accept when simplifying the output */
UPROPERTY(EditAnywhere, Category = VoxelSettings, meta = (UIMin = ".1", UIMax = "5", ClampMin = ".001", ClampMax = "10", EditCondition = "bAutoSimplify == true"))
double SimplifyMaxErrorFactor = 1.0;
/** Automatically remove components smaller than this (to clean up any isolated floating bits) */
UPROPERTY(EditAnywhere, Category = VoxelSettings, meta = (UIMin = "0.0", UIMax = "100", ClampMin = "0.0", ClampMax = "1000"))
double CubeRootMinComponentVolume = 0.0;
void SetPropertiesOnOp(UE::Geometry::FVoxelBaseOp& Op)
{
Op.InputVoxelCount = VoxelCount;
Op.OutputVoxelCount = VoxelCount;
Op.bAutoSimplify = bAutoSimplify;
Op.bRemoveInternalSurfaces = bRemoveInternalSurfaces;
Op.SimplifyMaxErrorFactor = SimplifyMaxErrorFactor;
Op.MinComponentVolume = CubeRootMinComponentVolume * CubeRootMinComponentVolume * CubeRootMinComponentVolume;
}
};