Files
UnrealEngineUWP/Engine/Source/Developer/PhysicsUtilities/Private/SkinnedLevelSetBuilder.h
Alex McAdams 2fc19a1670 Fix unity build
#preflight 63db2d857a39a18021aebd4f
#rb trivial

[CL 23964185 by Alex McAdams in ue5-main branch]
2023-02-01 22:59:55 -05:00

45 lines
1.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Chaos/WeightedLatticeImplicitObject.h"
class FSkinnedBoneTriangleCache;
class FSkeletalMeshModel;
class FSkeletalMeshRenderData;
struct FPhysAssetCreateParams;
class USkeletalMesh;
namespace Chaos
{
class FLevelSet;
}
class FSkinnedLevelSetBuilder : public Chaos::FWeightedLatticeImplicitObjectBuilder
{
public:
FSkinnedLevelSetBuilder(const USkeletalMesh& InSkeletalMesh, const FSkinnedBoneTriangleCache& InTriangleCache, const int32 InRootBoneIndex);
bool InitializeSkinnedLevelset(const FPhysAssetCreateParams& Params, const TArray<int32>& BoneIndices, TArray<uint32>& OutOrigIndices);
void AddBoneInfluence(int32 PrimaryBoneIndex, const TArray<int32>& AllBonesForInfluence);
FKSkinnedLevelSetElem CreateSkinnedLevelSetElem();
void GetInfluencingBones(const TArray<uint32>& SkinnedVertexIndices, TSet<int32>& Bones);
private:
// Input
const USkeletalMesh& SkeletalMesh;
const FSkinnedBoneTriangleCache& TriangleCache;
const int32 RootBoneIndex;
// Computed from Input
FSkeletalMeshModel* StaticLODModel;
const FSkeletalMeshRenderData* RenderData;
// Output
TUniquePtr<Chaos::FLevelSet> LevelSet;
float GetWeightForIndices(const TSet<int32>& BoneIndices, uint32 VertIndex) const;
};