CelticCraft/Plugins/VoxelFree/Source/Voxel/Private/VoxelRender/PhysicsCooker/VoxelAsyncPhysicsCooker_Chaos.h

36 lines
No EOL
843 B
C++

// Copyright 2020 Phyronnaz
#pragma once
#include "CoreMinimal.h"
#include "VoxelAsyncPhysicsCooker.h"
namespace Chaos
{
class FTriangleMeshImplicitObject;
}
class IPhysXCooking;
class FVoxelAsyncPhysicsCooker_Chaos : public IVoxelAsyncPhysicsCooker
{
public:
explicit FVoxelAsyncPhysicsCooker_Chaos(UVoxelProceduralMeshComponent* Component);
private:
~FVoxelAsyncPhysicsCooker_Chaos() = default;
template<typename T>
friend struct TVoxelAsyncWorkDelete;
protected:
//~ Begin IVoxelAsyncPhysicsCooker Interface
virtual bool Finalize(UBodySetup& BodySetup, FVoxelProceduralMeshComponentMemoryUsage& OutMemoryUsage) override;
virtual void CookMesh() override;
//~ End IVoxelAsyncPhysicsCooker Interface
private:
void CreateTriMesh();
TArray<TSharedPtr<Chaos::FTriangleMeshImplicitObject, ESPMode::ThreadSafe>> TriMeshes;
};