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);