Fix box extents bug
This commit is contained in:
parent
af5c753c08
commit
b28395bb72
@ -30,7 +30,7 @@ void AWeapon::BeginPlay()
|
|||||||
|
|
||||||
FViewport::ViewportResizedEvent.AddUObject(this, &AWeapon::ResizeBoxComponent);
|
FViewport::ViewportResizedEvent.AddUObject(this, &AWeapon::ResizeBoxComponent);
|
||||||
|
|
||||||
ResizeBoxComponent(GEngine->GameViewport->Viewport, -1);
|
ResizeBoxComponent(GEngine->GameViewport->Viewport, -2);
|
||||||
|
|
||||||
GetWorldTimerManager().SetTimer(WeaponTimerHandle, this, &AWeapon::FireWeaponAction, WeaponCooldown, true);
|
GetWorldTimerManager().SetTimer(WeaponTimerHandle, this, &AWeapon::FireWeaponAction, WeaponCooldown, true);
|
||||||
}
|
}
|
||||||
@ -82,6 +82,9 @@ void AWeapon::OnWeaponEndOverlap(UPrimitiveComponent* OverlappedComp, AActor* Ot
|
|||||||
|
|
||||||
void AWeapon::ResizeBoxComponent(FViewport* Viewport, uint32 unused)
|
void AWeapon::ResizeBoxComponent(FViewport* Viewport, uint32 unused)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (!GEngine->GameViewport) return;
|
||||||
|
|
||||||
FVector TopLeft, TopLeftDir;
|
FVector TopLeft, TopLeftDir;
|
||||||
FVector TopRight, TopRightDir;
|
FVector TopRight, TopRightDir;
|
||||||
FVector BottomLeft, BottomLeftDir;
|
FVector BottomLeft, BottomLeftDir;
|
||||||
@ -99,7 +102,16 @@ void AWeapon::ResizeBoxComponent(FViewport* Viewport, uint32 unused)
|
|||||||
PlayerController->DeprojectScreenPositionToWorld(0, ViewportSize.Y, BottomLeft, BottomLeftDir);
|
PlayerController->DeprojectScreenPositionToWorld(0, ViewportSize.Y, BottomLeft, BottomLeftDir);
|
||||||
PlayerController->DeprojectScreenPositionToWorld(ViewportSize.X, ViewportSize.Y, BottomRight, BottomRightDir);
|
PlayerController->DeprojectScreenPositionToWorld(ViewportSize.X, ViewportSize.Y, BottomRight, BottomRightDir);
|
||||||
|
|
||||||
float width = FVector::Dist(TopLeft, TopRight) * 120;
|
float width = FVector::Dist(TopLeft, TopRight) / 2;
|
||||||
float height = FVector::Dist(TopLeft, BottomLeft) * 120;
|
float height = FVector::Dist(TopLeft, BottomLeft) / 2;
|
||||||
|
|
||||||
|
// I am using the unused flag to work around a bug where the DeprojectScreenPositionToWorld doesn't match the
|
||||||
|
// values that I am expecting, in that they are way too small, for any other resize event we can skip this nonsense.
|
||||||
|
if (unused == -2)
|
||||||
|
{
|
||||||
|
width *= 266.666;
|
||||||
|
height *= 266.666;
|
||||||
|
}
|
||||||
|
|
||||||
BoxComponent->SetBoxExtent(FVector(height, width, 200.0f));
|
BoxComponent->SetBoxExtent(FVector(height, width, 200.0f));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user