Files
UnrealEngine/Engine/Source/Runtime/Experimental/Chaos/Public/GeometryCollection/GeometryCollectionConvexPropertiesInterface.h
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

60 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GeometryCollection/ManagedArrayCollection.h"
#include "GeometryCollection/GeometryCollectionConvexUtility.h"
class FGeometryCollection;
class FGeometryCollectionConvexPropertiesInterface : public FManagedArrayInterface
{
public :
typedef FManagedArrayInterface Super;
using FManagedArrayInterface::ManagedCollection;
// Convex Properties Group Name
static CHAOS_API const FName ConvexPropertiesGroup;
// Attribute
static CHAOS_API const FName ConvexIndexAttribute;
// Attribute
static CHAOS_API const FName ConvexEnable;
// Attribute
static CHAOS_API const FName ConvexFractionRemoveAttribute;
// Attribute
static CHAOS_API const FName ConvexSimplificationThresholdAttribute;
// Attribute
static CHAOS_API const FName ConvexCanExceedFractionAttribute;
// Attribute
static CHAOS_API const FName ConvexRemoveOverlapsMethodAttribute;
// Attribute
static CHAOS_API const FName ConvexRemoveOverlapsShrinkAttribute;
struct FConvexCreationProperties {
bool Enable = true;
float FractionRemove = 0.5f;
float SimplificationThreshold = 10.0f;
float CanExceedFraction = 0.5f;
EConvexOverlapRemoval RemoveOverlaps = EConvexOverlapRemoval::All;
float OverlapRemovalShrinkPercent = 0.0f;
};
CHAOS_API FGeometryCollectionConvexPropertiesInterface(FManagedArrayCollection* InGeometryCollection);
CHAOS_API void InitializeInterface() override;
CHAOS_API void CleanInterfaceForCook() override;
CHAOS_API void RemoveInterfaceAttributes() override;
CHAOS_API FConvexCreationProperties GetConvexProperties(int TransformGroupIndex = INDEX_NONE) const;
CHAOS_API void SetConvexProperties(const FConvexCreationProperties&, int TransformGroupIndex = INDEX_NONE);
private:
void SetDefaultProperty();
FConvexCreationProperties GetDefaultProperty() const;
};