From 39d544ce86b00cc02d9506397c5cdd4e9cbeec55 Mon Sep 17 00:00:00 2001 From: badlogic Date: Tue, 7 Feb 2023 15:26:10 +0100 Subject: [PATCH] [ue4] Closes #2234, add SpineWidget::GetBonePosition in the skeleton coordinate system. --- .../Blueprints/UmgRaptor.uasset | Bin 32903 -> 46846 bytes .../SpinePlugin/Private/SpineWidget.cpp | 19 ++++++++++++++++++ .../Source/SpinePlugin/Public/SpineWidget.h | 3 +++ 3 files changed, 22 insertions(+) diff --git a/spine-ue4/Content/GettingStarted/Blueprints/UmgRaptor.uasset b/spine-ue4/Content/GettingStarted/Blueprints/UmgRaptor.uasset index eff46de644ae3a06b03dd904c86c8394e0bf7b17..5e8049afff31e154904c6fde9c316b140ce5d2ab 100644 GIT binary patch literal 46846 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 F{{gk{(xw0a literal 32903 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 uv%h!2!_Pgn-G!B-}*nJ%^HCK diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineWidget.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineWidget.cpp index 5e9cdc742..484b6aa2a 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineWidget.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineWidget.cpp @@ -331,6 +331,25 @@ bool USpineWidget::HasBone(const FString BoneName) { return false; } +FTransform USpineWidget::GetBoneTransform(const FString& BoneName) { + CheckState(); + if (skeleton) { + Bone *bone = skeleton->findBone(TCHAR_TO_UTF8(*BoneName)); + if (!bone) return FTransform(); + + FMatrix localTransform; + localTransform.SetIdentity(); + localTransform.SetAxis(2, FVector(bone->getA(), 0, bone->getC())); + localTransform.SetAxis(0, FVector(bone->getB(), 0, bone->getD())); + localTransform.SetOrigin(FVector(bone->getWorldX(), 0, bone->getWorldY())); + + FTransform result; + result.SetFromMatrix(localTransform); + return result; + } + return FTransform(); +} + void USpineWidget::GetSlots(TArray &Slots) { CheckState(); if (skeleton) { diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h index 627eeca68..347905fb6 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineWidget.h @@ -132,6 +132,9 @@ public: UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") bool HasBone(const FString BoneName); + UFUNCTION(BlueprintCallable, Category = "Components|Spine|Skeleton") + FTransform GetBoneTransform(const FString &BoneName); + UFUNCTION(BlueprintPure, Category = "Components|Spine|Skeleton") void GetSlots(TArray &Slots);