Explorar o código

[ue] Closes #2557, dereference UTrackEntry in TrackEntries

Mario Zechner hai 5 meses
pai
achega
0fd206d3ca

+ 6 - 0
spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonAnimationComponent.cpp

@@ -35,6 +35,7 @@
 using namespace spine;
 
 void UTrackEntry::SetTrackEntry(TrackEntry *trackEntry) {
+	if (entry) entry->setRendererObject(nullptr);
 	this->entry = trackEntry;
 	if (entry) entry->setRendererObject((void *) this);
 }
@@ -80,6 +81,11 @@ USpineSkeletonAnimationComponent::USpineSkeletonAnimationComponent() {
 
 void USpineSkeletonAnimationComponent::BeginPlay() {
 	Super::BeginPlay();
+	for (UTrackEntry* entry : trackEntries) {
+		if (entry && entry->GetTrackEntry()) {
+			entry->GetTrackEntry()->setRendererObject(nullptr);
+		}
+	}
 	trackEntries.Empty();
 }
 

+ 5 - 0
spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineWidget.cpp

@@ -108,6 +108,11 @@ void USpineWidget::SynchronizeProperties() {
 		} else {
 			slateWidget->SetData(nullptr);
 		}
+		for (UTrackEntry* entry : trackEntries) {
+			if (entry && entry->GetTrackEntry()) {
+				entry->GetTrackEntry()->setRendererObject(nullptr);
+			}
+		}
 		trackEntries.Empty();
 	}
 }