Files
UnrealEngine/Engine/Plugins/Runtime/MeshModelingToolset/Source/ModelingComponents/Public/LatticeManager.h
2025-05-18 13:04:45 +08:00

43 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "GeometryBase.h"
#include "BoxTypes.h"
#include "IntVectorTypes.h"
#include "LatticeManager.generated.h"
UENUM()
enum class ELatticeInterpolationType : uint8
{
/** Use trilinear interpolation to get new mesh vertex positions from the lattice */
Linear UMETA(DisplayName = "Linear"),
/** Use tricubic interpolation to get new mesh vertex positions from the lattice */
Cubic UMETA(DisplayName = "Cubic")
};
UINTERFACE()
class MODELINGCOMPONENTS_API ULatticeStateStorage : public UInterface
{
GENERATED_BODY()
};
class MODELINGCOMPONENTS_API ILatticeStateStorage
{
GENERATED_BODY()
public:
virtual void StoreLatticePoints(const TArray<FVector3d>& LatticePoints) = 0;
virtual void ReadLatticePoints(TArray<FVector3d>& LatticePoints) const = 0;
virtual void StoreInterpolationType(ELatticeInterpolationType Type) = 0;
virtual ELatticeInterpolationType ReadInterpolationType() const = 0;
virtual UE::Geometry::FAxisAlignedBox3d GetInitialBounds() const = 0;
virtual UE::Geometry::FTransformSRT3d GetTransform() const = 0;
virtual UE::Geometry::FVector3i GetResolution() const = 0;
};