I have this code that crashes me because it enters garbage collection.
I have tried many options, but I can’t find the right one.
USingleMarker* UCompass::AddMarker(FTargetInfo TargetInfo)
{
UOverlaySlot* OverlaySlot;
USingleMarker* SingleMarkerWidget = CreateWidget<USingleMarker>(this, SingleMarkerClass);
if(SingleMarkerWidget)
{
SingleMarkerWidget->TargetInfo = TargetInfo;
switch (TargetInfo.MarkerCustomization.MarkerType)
{
case EMarkerType::ScreenMarker:
ScreenMarkers.Add(SingleMarkerWidget);
ScreenMarkers[ScreenMarkers.Num()-1]->AddToViewport(); // Add last
break;
case EMarkerType::CompassMarker:
SingleMarkerWidget->Indicator->SetVisibility(ESlateVisibility::Collapsed);
CompassMarkers.Add(SingleMarkerWidget);
OverlaySlot = CompassMarkerOverlay->AddChildToOverlay(SingleMarkerWidget);
OverlaySlot->SetHorizontalAlignment(EHorizontalAlignment::HAlign_Center);
OverlaySlot->SetVerticalAlignment(EVerticalAlignment::VAlign_Center);
break;
case EMarkerType::None:
HiddenMarkers.Add(SingleMarkerWidget);
break;
}
}
return SingleMarkerWidget;
}
.h
UPROPERTY()
TSubclassOf<USingleMarker> SingleMarkerClass;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<USingleMarker*> ScreenMarkers;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<USingleMarker*> CompassMarkers;