From 3e363b411144f6ebf0d2c1f2ded4e80854b55cc1 Mon Sep 17 00:00:00 2001 From: Roberto De Ioris Date: Fri, 27 Aug 2021 08:49:19 +0200 Subject: [PATCH] fixed warnings --- .../glTFRuntime/Private/glTFRuntimeParser.cpp | 14 +++++--- .../Private/glTFRuntimeParserAudio.cpp | 2 +- .../glTFRuntimeParserSkeletalMeshes.cpp | 36 +++++++++++++------ Source/glTFRuntime/Public/glTFRuntimeParser.h | 8 +++++ 4 files changed, 45 insertions(+), 15 deletions(-) diff --git a/Source/glTFRuntime/Private/glTFRuntimeParser.cpp b/Source/glTFRuntime/Private/glTFRuntimeParser.cpp index d0d89937..9d42e29b 100644 --- a/Source/glTFRuntime/Private/glTFRuntimeParser.cpp +++ b/Source/glTFRuntime/Private/glTFRuntimeParser.cpp @@ -1288,7 +1288,13 @@ USkeleton* FglTFRuntimeParser::LoadSkeleton(const int32 SkinIndex, const FglTFRu USkeletalMesh* SkeletalMesh = NewObject(GetTransientPackage(), NAME_None, RF_Public); USkeleton* Skeleton = NewObject(GetTransientPackage(), NAME_None, RF_Public); - if (!FillReferenceSkeleton(JsonSkinObject.ToSharedRef(), SkeletalMesh->RefSkeleton, BoneMap, SkeletonConfig)) +#if ENGINE_MAJOR_VERSION > 4 || ENGINE_MINOR_VERSION > 26 + FReferenceSkeleton& RefSkeleton = SkeletalMesh->GetRefSkeleton(); +#else + FReferenceSkeleton& RefSkeleton = SkeletalMesh->RefSkeleton; +#endif + + if (!FillReferenceSkeleton(JsonSkinObject.ToSharedRef(), RefSkeleton, BoneMap, SkeletonConfig)) { AddError("FillReferenceSkeleton()", "Unable to fill RefSkeleton."); return nullptr; @@ -1296,17 +1302,17 @@ USkeleton* FglTFRuntimeParser::LoadSkeleton(const int32 SkinIndex, const FglTFRu if (SkeletonConfig.bNormalizeSkeletonScale) { - NormalizeSkeletonScale(SkeletalMesh->RefSkeleton); + NormalizeSkeletonScale(RefSkeleton); } if (SkeletonConfig.bClearRotations || SkeletonConfig.CopyRotationsFrom) { - ClearSkeletonRotations(SkeletalMesh->RefSkeleton); + ClearSkeletonRotations(RefSkeleton); } if (SkeletonConfig.CopyRotationsFrom) { - CopySkeletonRotationsFrom(SkeletalMesh->RefSkeleton, SkeletonConfig.CopyRotationsFrom->GetReferenceSkeleton()); + CopySkeletonRotationsFrom(RefSkeleton, SkeletonConfig.CopyRotationsFrom->GetReferenceSkeleton()); } Skeleton->MergeAllBonesToBoneTree(SkeletalMesh); diff --git a/Source/glTFRuntime/Private/glTFRuntimeParserAudio.cpp b/Source/glTFRuntime/Private/glTFRuntimeParserAudio.cpp index 4c04dee6..af2260f6 100644 --- a/Source/glTFRuntime/Private/glTFRuntimeParserAudio.cpp +++ b/Source/glTFRuntime/Private/glTFRuntimeParserAudio.cpp @@ -38,7 +38,7 @@ bool FglTFRuntimeParser::LoadAudioEmitter(const int32 EmitterIndex, FglTFRuntime const TArray>* JsonClips; if (JsonEmitterObject->TryGetArrayField("clips", JsonClips)) { - for (const TSharedPtr JsonClipItem : *JsonClips) + for (const TSharedPtr& JsonClipItem : *JsonClips) { const TSharedPtr* JsonClipObject; if (JsonClipItem->TryGetObject(JsonClipObject)) diff --git a/Source/glTFRuntime/Private/glTFRuntimeParserSkeletalMeshes.cpp b/Source/glTFRuntime/Private/glTFRuntimeParserSkeletalMeshes.cpp index f37ec2e1..71b2a87c 100644 --- a/Source/glTFRuntime/Private/glTFRuntimeParserSkeletalMeshes.cpp +++ b/Source/glTFRuntime/Private/glTFRuntimeParserSkeletalMeshes.cpp @@ -165,6 +165,12 @@ USkeletalMesh* FglTFRuntimeParser::CreateSkeletalMeshFromLODs(TSharedRefSkinIndex = SkeletalMeshContext->SkeletalMeshConfig.OverrideSkinIndex; } +#if ENGINE_MAJOR_VERSION > 4 || ENGINE_MINOR_VERSION > 26 + FReferenceSkeleton& RefSkeleton = SkeletalMeshContext->SkeletalMesh->GetRefSkeleton(); +#else + FReferenceSkeleton& RefSkeleton = SkeletalMeshContext->SkeletalMesh->RefSkeleton; +#endif + TMap MainBoneMap; if (!SkeletalMeshContext->SkeletalMeshConfig.bIgnoreSkin && SkeletalMeshContext->SkinIndex > INDEX_NONE) { @@ -175,7 +181,7 @@ USkeletalMesh* FglTFRuntimeParser::CreateSkeletalMeshFromLODs(TSharedRefSkeletalMesh->RefSkeleton, MainBoneMap, SkeletalMeshContext->SkeletalMeshConfig.SkeletonConfig)) + if (!FillReferenceSkeleton(JsonSkinObject.ToSharedRef(), RefSkeleton, MainBoneMap, SkeletalMeshContext->SkeletalMeshConfig.SkeletonConfig)) { AddError("CreateSkeletalMeshFromLODs()", "Unable to fill RefSkeleton."); return nullptr; @@ -183,7 +189,7 @@ USkeletalMesh* FglTFRuntimeParser::CreateSkeletalMeshFromLODs(TSharedRefSkeletalMesh->RefSkeleton, MainBoneMap, SkeletalMeshContext->SkeletalMeshConfig)) + if (!FillFakeSkeleton(RefSkeleton, MainBoneMap, SkeletalMeshContext->SkeletalMeshConfig)) { AddError("CreateSkeletalMeshFromLODs()", "Unable to fill fake RefSkeleton."); return nullptr; @@ -192,22 +198,26 @@ USkeletalMesh* FglTFRuntimeParser::CreateSkeletalMeshFromLODs(TSharedRefSkeletalMeshConfig.SkeletonConfig.bNormalizeSkeletonScale) { - NormalizeSkeletonScale(SkeletalMeshContext->SkeletalMesh->RefSkeleton); + NormalizeSkeletonScale(RefSkeleton); } if (SkeletalMeshContext->SkeletalMeshConfig.SkeletonConfig.bClearRotations || SkeletalMeshContext->SkeletalMeshConfig.SkeletonConfig.CopyRotationsFrom) { - ClearSkeletonRotations(SkeletalMeshContext->SkeletalMesh->RefSkeleton); + ClearSkeletonRotations(RefSkeleton); } if (SkeletalMeshContext->SkeletalMeshConfig.SkeletonConfig.CopyRotationsFrom) { - CopySkeletonRotationsFrom(SkeletalMeshContext->SkeletalMesh->RefSkeleton, SkeletalMeshContext->SkeletalMeshConfig.SkeletonConfig.CopyRotationsFrom->GetReferenceSkeleton()); + CopySkeletonRotationsFrom(RefSkeleton, SkeletalMeshContext->SkeletalMeshConfig.SkeletonConfig.CopyRotationsFrom->GetReferenceSkeleton()); } if (SkeletalMeshContext->SkeletalMeshConfig.Skeleton && SkeletalMeshContext->SkeletalMeshConfig.bOverwriteRefSkeleton) { +#if ENGINE_MAJOR_VERSION > 4 || ENGINE_MINOR_VERSION > 26 + SkeletalMeshContext->SkeletalMesh->SetRefSkeleton(SkeletalMeshContext->SkeletalMeshConfig.Skeleton->GetReferenceSkeleton()); +#else SkeletalMeshContext->SkeletalMesh->RefSkeleton = SkeletalMeshContext->SkeletalMeshConfig.Skeleton->GetReferenceSkeleton(); +#endif } TMap MainBonesCache; @@ -436,7 +446,7 @@ USkeletalMesh* FglTFRuntimeParser::CreateSkeletalMeshFromLODs(TSharedRefStaticVertexBuffers.PositionVertexBuffer.Init(NumIndices); LodRenderData->StaticVertexBuffers.StaticMeshVertexBuffer.Init(NumIndices, 1); - int32 NumBones = SkeletalMeshContext->SkeletalMesh->RefSkeleton.GetNum(); + int32 NumBones = RefSkeleton.GetNum(); for (int32 BoneIndex = 0; BoneIndex < NumBones; BoneIndex++) { @@ -528,7 +538,7 @@ USkeletalMesh* FglTFRuntimeParser::CreateSkeletalMeshFromLODs(TSharedRefSkeletalMesh->RefSkeleton.FindBoneIndex(BoneMapInUse[Joints[j]]); + BoneIndex = RefSkeleton.FindBoneIndex(BoneMapInUse[Joints[j]]); BonesCacheInUse.Add(Joints[j], BoneIndex); } @@ -723,9 +733,15 @@ USkeletalMesh* FglTFRuntimeParser::FinalizeSkeletalMeshWithLODs(TSharedRefLODs[LODIndex].Primitives.Num(); MatIndex++) { LODInfo.LODMaterialMap.Add(MatIndex); - int32 NewMatIndex = SkeletalMeshContext->SkeletalMesh->Materials.Add(SkeletalMeshContext->LODs[LODIndex].Primitives[MatIndex].Material); - SkeletalMeshContext->SkeletalMesh->Materials[NewMatIndex].UVChannelData.bInitialized = true; - SkeletalMeshContext->SkeletalMesh->Materials[NewMatIndex].MaterialSlotName = FName(FString::Printf(TEXT("LOD_%d_Section_%d_%s"), LODIndex, MatIndex, *(SkeletalMeshContext->LODs[LODIndex].Primitives[MatIndex].MaterialName))); + +#if ENGINE_MAJOR_VERSION > 4 || ENGINE_MINOR_VERSION >= 27 + TArray& SkeletalMaterials = SkeletalMeshContext->SkeletalMesh->GetMaterials(); +#else + TArray& SkeletalMaterials = SkeletalMeshContext->SkeletalMesh->Materials; +#endif + int32 NewMatIndex = SkeletalMaterials.Add(SkeletalMeshContext->LODs[LODIndex].Primitives[MatIndex].Material); + SkeletalMaterials[NewMatIndex].UVChannelData.bInitialized = true; + SkeletalMaterials[NewMatIndex].MaterialSlotName = FName(FString::Printf(TEXT("LOD_%d_Section_%d_%s"), LODIndex, MatIndex, *(SkeletalMeshContext->LODs[LODIndex].Primitives[MatIndex].MaterialName))); } #if WITH_EDITOR IMeshBuilderModule& MeshBuilderModule = IMeshBuilderModule::GetForRunningPlatform(); diff --git a/Source/glTFRuntime/Public/glTFRuntimeParser.h b/Source/glTFRuntime/Public/glTFRuntimeParser.h index edc0d7d8..7ba11598 100644 --- a/Source/glTFRuntime/Public/glTFRuntimeParser.h +++ b/Source/glTFRuntime/Public/glTFRuntimeParser.h @@ -479,6 +479,8 @@ struct FglTFRuntimeCapsule { Radius = 0; Length = 0; + Center = FVector::ZeroVector; + Rotation = FRotator::ZeroRotator; } }; @@ -898,6 +900,12 @@ struct FglTFRuntimeAudioEmitter UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "glTFRuntime") USoundWave* Sound; + + FglTFRuntimeAudioEmitter() + { + Sound = nullptr; + Volume = 1.0f; + } }; DECLARE_DYNAMIC_DELEGATE_OneParam(FglTFRuntimeSkeletalMeshAsync, USkeletalMesh*, SkeletalMesh);