Not sure if you got this, but I worked it out pretty sure...
The goal is they're trying to make the existing ones in SkeletalMeshMerge.h editable on the blueprint side, so basically going into that file I could see what the arrays were.
So you want the FSkelMeshMergeSectionMapping_BP to contain int32's:
USTRUCT(BlueprintType)
struct MULTIPLAYERARENA_API FSkelMeshMergeSectionMapping_BP
{
GENERATED_BODY()
/** Indices to final section entries of the merged skeletal mesh */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Mesh Merge Params")
TArray<int32> SectionIDs;
};
and the FSkelMeshMergeSectionMapping_BP to contain FTransform's:
USTRUCT(BlueprintType)
struct MULTIPLAYERARENA_API FSkelMeshMergeUVTransform
{
GENERATED_BODY()
/** A list of how UVs should be transformed on a given mesh, where index represents a specific UV channel. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Mesh Merge Params")
TArray<FTransform> UVTransforms;
};
and the FSkelMeshMergeUVTransformMapping to contain FSkelMeshMergeUVTransform's:
USTRUCT(BlueprintType)
struct MULTIPLAYERARENA_API FSkelMeshMergeUVTransformMapping
{
GENERATED_BODY()
/** For each UV channel on each mesh, how the UVS should be transformed. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Mesh Merge Params")
TArray<FSkelMeshMergeUVTransform> UVTransformsPerMesh;
};
finally in the struct params themselves, like so:
USTRUCT(BlueprintType)
struct MULTIPLAYERARENA_API FSkeletalMeshMergeParams
{
GENERATED_BODY()
FSkeletalMeshMergeParams()
{
MeshSectionMappings = TArray<FSkelMeshMergeSectionMapping_BP>();
UVTransformsPerMesh = TArray<FSkelMeshMergeUVTransformMapping>();
StripTopLODS = 0;
bNeedsCpuAccess = false;
bSkeletonBefore = false;
Skeleton = nullptr;
}
// An optional array to map sections from the source meshes to merged section entries
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<FSkelMeshMergeSectionMapping_BP> MeshSectionMappings;
// An optional array to transform the UVs in each mesh
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<FSkelMeshMergeUVTransformMapping> UVTransformsPerMesh;
// The list of skeletal meshes to merge.
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<class USkeletalMesh*> MeshesToMerge;
// The number of high LODs to remove from input meshes
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 StripTopLODS;
// Whether or not the resulting mesh needs to be accessed by the CPU for any reason (e.g. for spawning particle effects).
UPROPERTY(EditAnywhere, BlueprintReadWrite)
uint32 bNeedsCpuAccess : 1;
// Update skeleton before merge. Otherwise, update after.
// Skeleton must also be provided.
UPROPERTY(EditAnywhere, BlueprintReadWrite)
uint32 bSkeletonBefore : 1;
// Skeleton that will be used for the merged mesh.
// Leave empty if the generated skeleton is OK.
UPROPERTY(EditAnywhere, BlueprintReadOnly)
class USkeleton* Skeleton;
};
It compiles and it works with meshes, but I haven't used these optional parameters so don't know if they actually work