mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 09:16:01 +08:00
[ue] Closes #2803, pool slate material brush names
This commit is contained in:
parent
febbbbcd17
commit
ddfa736ae2
@ -46,15 +46,33 @@ static int brushNameId = 0;
|
||||
// Workaround for https://github.com/EsotericSoftware/spine-runtimes/issues/1458
|
||||
// See issue comments for more information.
|
||||
struct SpineSlateMaterialBrush : public FSlateBrush {
|
||||
static TArray<FName> NamePool;
|
||||
static FCriticalSection NamePoolLock;
|
||||
|
||||
SpineSlateMaterialBrush(class UMaterialInterface &InMaterial, const FVector2D &InImageSize)
|
||||
: FSlateBrush(ESlateBrushDrawType::Image, FName(TEXT("None")), FMargin(0), ESlateBrushTileType::NoTile, ESlateBrushImageType::FullColor, InImageSize, FLinearColor::White, &InMaterial) {
|
||||
// Workaround for https://github.com/EsotericSoftware/spine-runtimes/issues/2006
|
||||
FString brushName = TEXT("spineslatebrush");
|
||||
brushName.AppendInt(brushNameId++);
|
||||
ResourceName = FName(brushName);
|
||||
FScopeLock Lock(&NamePoolLock);
|
||||
|
||||
if (NamePool.Num() > 0) {
|
||||
ResourceName = NamePool.Pop(false);
|
||||
} else {
|
||||
static uint32 NextId = 0;
|
||||
FString brushName = TEXT("SpineSlateMatBrush");
|
||||
brushName.AppendInt(NextId++);
|
||||
ResourceName = FName(*brushName);
|
||||
}
|
||||
}
|
||||
|
||||
~SpineSlateMaterialBrush() {
|
||||
FScopeLock Lock(&NamePoolLock);
|
||||
NamePool.Add(ResourceName);
|
||||
}
|
||||
};
|
||||
|
||||
TArray<FName> SpineSlateMaterialBrush::NamePool;
|
||||
FCriticalSection SpineSlateMaterialBrush::NamePoolLock;
|
||||
|
||||
void SSpineWidget::Construct(const FArguments &args) {
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user