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

121 lines
2.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "CADOptions.h"
#include "DatasmithAdditionalData.h"
#include "DatasmithCustomAction.h"
#include "DatasmithImportOptions.h"
#include "DatasmithUtils.h"
#include "DatasmithParametricSurfaceData.generated.h"
namespace CADLibrary
{
class FImportParameters;
struct FMeshParameters;
}
USTRUCT(BlueprintType)
struct PARAMETRICSURFACE_API FParametricSceneParameters
{
GENERATED_BODY()
// value from FDatasmithUtils::EModelCoordSystem
UPROPERTY()
uint8 ModelCoordSys = (uint8)FDatasmithUtils::EModelCoordSystem::ZUp_LeftHanded;
UPROPERTY()
float MetricUnit = 0.01f;
UPROPERTY()
float ScaleFactor = 1.0f;
};
USTRUCT()
struct PARAMETRICSURFACE_API FParametricMeshParameters
{
GENERATED_BODY()
UPROPERTY()
bool bNeedSwapOrientation = false;
UPROPERTY()
bool bIsSymmetric = false;
UPROPERTY()
FVector SymmetricOrigin = FVector::ZeroVector;
UPROPERTY()
FVector SymmetricNormal = FVector::ZeroVector;
operator CADLibrary::FMeshParameters()
{
CADLibrary::FMeshParameters Parameters;
Parameters.bNeedSwapOrientation = bNeedSwapOrientation;
Parameters.bIsSymmetric = bIsSymmetric;
Parameters.SymmetricNormal = (FVector3f) SymmetricNormal;
Parameters.SymmetricOrigin = (FVector3f) SymmetricOrigin;
return Parameters;
}
};
UCLASS(meta = (DisplayName = "Datasmith Parametric Surface Data"))
class PARAMETRICSURFACE_API UDatasmithParametricSurfaceData : public UDatasmithAdditionalData
{
GENERATED_BODY()
public:
virtual bool IsValid()
{
return RawData.Num() > 0;
}
virtual bool SetFile(const TCHAR* FilePath);
virtual void SetImportParameters(const CADLibrary::FImportParameters& InSceneParameters);
virtual void SetMeshParameters(const CADLibrary::FMeshParameters& InMeshParameters);
virtual const FDatasmithTessellationOptions& GetLastTessellationOptions() const
{
return LastTessellationOptions;
}
virtual void SetLastTessellationOptions(const FDatasmithTessellationOptions& InTessellationOptions)
{
LastTessellationOptions = InTessellationOptions;
}
virtual bool Tessellate(UStaticMesh& StaticMesh, const FDatasmithRetessellationOptions& RetessellateOptions)
{
return false;
}
protected:
virtual void Serialize(FArchive& Ar) override;
protected:
UPROPERTY()
FParametricSceneParameters SceneParameters;
UPROPERTY()
FParametricMeshParameters MeshParameters;
UPROPERTY(EditAnywhere, Category = NURBS)
FDatasmithTessellationOptions LastTessellationOptions;
UPROPERTY()
TArray<uint8> RawData_DEPRECATED;
// Too costly to serialize as a UPROPERTY, will use custom serialization.
TArray<uint8> RawData;
};