diff --git a/spine-ue4/Config/DefaultEngine.ini b/spine-ue4/Config/DefaultEngine.ini index a919619a9..bc632b8a4 100644 --- a/spine-ue4/Config/DefaultEngine.ini +++ b/spine-ue4/Config/DefaultEngine.ini @@ -58,3 +58,5 @@ SyncSceneSmoothingFactor=0.000000 InitialAverageFrameRate=0.016667 PhysXTreeRebuildRate=10 DefaultBroadphaseSettings=(bUseMBPOnClient=False,bUseMBPOnServer=False,MBPBounds=(Min=(X=0.000000,Y=0.000000,Z=0.000000),Max=(X=0.000000,Y=0.000000,Z=0.000000),IsValid=0),MBPNumSubdivs=2) + + diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SSpineWidget.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SSpineWidget.cpp index 09aa05260..a1f6e3b33 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SSpineWidget.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SSpineWidget.cpp @@ -45,6 +45,15 @@ using namespace spine; +// Workaround for https://github.com/EsotericSoftware/spine-runtimes/issues/1458 +// See issue comments for more information. +struct SpineSlateMaterialBrush : public FSlateBrush { + SpineSlateMaterialBrush(class UMaterialInterface &InMaterial, const FVector2D &InImageSize) + : FSlateBrush(ESlateBrushDrawType::Image, FName(TEXT("None")), FMargin(0), ESlateBrushTileType::NoTile, ESlateBrushImageType::FullColor, InImageSize, FLinearColor::White, &InMaterial) { + ResourceName = FName(*InMaterial.GetFullName()); + } +}; + void SSpineWidget::Construct(const FArguments& args) { } @@ -196,7 +205,7 @@ void SSpineWidget::Flush(int32 LayerId, FSlateWindowElementList& OutDrawElements brush = &widget->Brush; if (Material) { - renderData.Brush = MakeShareable(new FSlateMaterialBrush(*Material, FVector2D(64, 64))); + renderData.Brush = MakeShareable(new SpineSlateMaterialBrush(*Material, FVector2D(64, 64))); renderData.RenderingResourceHandle = FSlateApplication::Get().GetRenderer()->GetResourceHandle(*renderData.Brush); }