From e75c93aeb4f383106b11a04e0785b0f9627f7faa Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Thu, 5 May 2022 18:16:59 +0200 Subject: [PATCH] 81 - Drawing the Crosshairs --- Source/Blaster/HUD/BlasterHUD.cpp | 51 ++++++++++++++++++++++++++++++- Source/Blaster/HUD/BlasterHUD.h | 2 ++ Source/Blaster/Weapon/Casing.cpp | 1 + 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/Source/Blaster/HUD/BlasterHUD.cpp b/Source/Blaster/HUD/BlasterHUD.cpp index 2f7eece..77614b3 100644 --- a/Source/Blaster/HUD/BlasterHUD.cpp +++ b/Source/Blaster/HUD/BlasterHUD.cpp @@ -7,5 +7,54 @@ void ABlasterHUD::DrawHUD() { Super::DrawHUD(); - + FVector2D ViewportSize; + if (GEngine) + { + GEngine->GameViewport->GetViewportSize(ViewportSize); + const FVector2D ViewportCenter(ViewportSize.X / 2.f, ViewportSize.Y / 2.f); + + if (HUDPackage.CrosshairsCenter) + { + DrawCrosshair(HUDPackage.CrosshairsCenter, ViewportCenter); + } + if (HUDPackage.CrosshairsLeft) + { + DrawCrosshair(HUDPackage.CrosshairsLeft, ViewportCenter); + } + if (HUDPackage.CrosshairsRight) + { + DrawCrosshair(HUDPackage.CrosshairsRight, ViewportCenter); + } + if (HUDPackage.CrosshairsTop) + { + DrawCrosshair(HUDPackage.CrosshairsTop, ViewportCenter); + } + if (HUDPackage.CrosshairsBottom) + { + DrawCrosshair(HUDPackage.CrosshairsBottom, ViewportCenter); + } + } +} + +void ABlasterHUD::DrawCrosshair(UTexture2D* Texture, FVector2D ViewportCenter) +{ + const float TextureWidth = Texture->GetSizeX(); + const float TextureHeight = Texture->GetSizeY(); + const FVector2D TextureDrawPoint( + ViewportCenter.X - (TextureWidth / 2.f), + ViewportCenter.Y - (TextureHeight / 2.f) + ); + + DrawTexture( + Texture, + TextureDrawPoint.X, + TextureDrawPoint.Y, + TextureWidth, + TextureHeight, + 0.f, + 0.f, + 1.f, + 1.f, + FLinearColor::White + ); } diff --git a/Source/Blaster/HUD/BlasterHUD.h b/Source/Blaster/HUD/BlasterHUD.h index c12a473..4edf764 100644 --- a/Source/Blaster/HUD/BlasterHUD.h +++ b/Source/Blaster/HUD/BlasterHUD.h @@ -33,6 +33,8 @@ public: private: FHUDPackage HUDPackage; + void DrawCrosshair(UTexture2D* Texture, FVector2D ViewportCenter); + public: FORCEINLINE void SetHUDPackage(const FHUDPackage& Package) { HUDPackage = Package; }; }; diff --git a/Source/Blaster/Weapon/Casing.cpp b/Source/Blaster/Weapon/Casing.cpp index 19ed785..2c3b904 100644 --- a/Source/Blaster/Weapon/Casing.cpp +++ b/Source/Blaster/Weapon/Casing.cpp @@ -14,6 +14,7 @@ ACasing::ACasing() ShellEjectionImpulseMax = 12.f; CasingMesh = CreateDefaultSubobject(TEXT("CasingMesh")); CasingMesh->SetCollisionResponseToChannel(ECC_Camera, ECR_Ignore); + CasingMesh->SetCollisionResponseToChannel(ECC_Pawn, ECR_Ignore); CasingMesh->SetSimulatePhysics(true); CasingMesh->SetEnableGravity(true); CasingMesh->SetNotifyRigidBodyCollision(true);