GetActorsInSelectionRectangle always returns empty array…
& here is my code:
void ARTSHUDCanvas::OnStartSelection_Implementation()
{
MouseFrom = UWidgetLayoutLibrary::GetMousePositionOnViewport(this) * UWidgetLayoutLibrary::GetViewportScale(this);
bIsReceivingMouse = true;
}
void ARTSHUDCanvas::OnEndSelection_Implementation()
{
if (bIsDrawingMarquee)
{
TArray<ARTSUnitBase*> OutActors;
if (GetActorsInSelectionRectangle<ARTSUnitBase>(MouseFrom, MouseTo, OutActors))//, false, false))
{
if (OutActors.Num() > 0)
{
ARTSPlayerState* StateRef = GetOwningPlayerController()->GetPlayerState<ARTSPlayerState>();
for (ARTSUnitBase* EachUnit : OutActors)
{
StateRef->AddUnitToSelection(EachUnit);
}
}
}
bIsDrawingMarquee = false;
}
bIsReceivingMouse = false;
}
void ARTSHUDCanvas::DrawHUD()
{
if (bIsReceivingMouse)
{
UpdateSelection(UWidgetLayoutLibrary::GetMousePositionOnViewport(this) * UWidgetLayoutLibrary::GetViewportScale(this));
}
}
void ARTSHUDCanvas::UpdateSelection(FVector2D InMouse)
{
if (bIsDrawingMarquee)
{
MouseTo = InMouse;
DrawRect(RectColor, MouseFrom.X, MouseFrom.Y, MouseTo.X - MouseFrom.X, MouseTo.Y - MouseFrom.Y);
//TODO: preselection highlights
}
else
bIsDrawingMarquee = FVector2D::Distance(MouseFrom, InMouse) > 10.f;
}
I tried replacing my custom ARTSUnitBase with AActor, to ensure it works, but still receiving an empty array.
EDIT: Also receiving a warning message when drawing marquee, Canvas draw functions only in DrawHud, but i move all code inside DrawHud() and still warns me.