From eeb7113a383e8343e2c617354660bfb2f14c1c4c Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Thu, 5 May 2022 22:46:35 +0200 Subject: [PATCH] 86 - Change Crosshair Color --- .../Character/BP_BlasterCharacter.uasset | Bin 67300 -> 66993 bytes .../Blaster/Character/BlasterAnimInstance.cpp | 3 +- Source/Blaster/Character/BlasterCharacter.cpp | 7 ++-- Source/Blaster/Character/BlasterCharacter.h | 3 +- Source/Blaster/Components/CombatComponent.cpp | 31 ++++++++++-------- Source/Blaster/Components/CombatComponent.h | 4 ++- Source/Blaster/HUD/BlasterHUD.cpp | 14 ++++---- Source/Blaster/HUD/BlasterHUD.h | 3 +- .../InteractWithCrosshairInterface.cpp | 6 ++++ .../InteractWithCrosshairInterface.h | 25 ++++++++++++++ 10 files changed, 69 insertions(+), 27 deletions(-) create mode 100644 Source/Blaster/Interfaces/InteractWithCrosshairInterface.cpp create mode 100644 Source/Blaster/Interfaces/InteractWithCrosshairInterface.h diff --git a/Content/Blueprints/Character/BP_BlasterCharacter.uasset b/Content/Blueprints/Character/BP_BlasterCharacter.uasset index 8a75d078cf9005a320a82177d422e82fa0c32061..c02048475333a4e01a459d683c9f733beb1e1682 100644 GIT binary patch delta 8321 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 delta 8352 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 E4^{t{tpET3 diff --git a/Source/Blaster/Character/BlasterAnimInstance.cpp b/Source/Blaster/Character/BlasterAnimInstance.cpp index 9119c50..5e75a17 100644 --- a/Source/Blaster/Character/BlasterAnimInstance.cpp +++ b/Source/Blaster/Character/BlasterAnimInstance.cpp @@ -69,7 +69,8 @@ void UBlasterAnimInstance::NativeUpdateAnimation(float DeltaSeconds) { bLocallyControlled = true; const FTransform RightHandTransform = EquippedWeapon->GetWeaponMesh()->GetSocketTransform(FName("Hand_R"), RTS_World); - RightHandRotation = UKismetMathLibrary::FindLookAtRotation(RightHandTransform.GetLocation(), RightHandTransform.GetLocation() + (RightHandTransform.GetLocation() - BlasterCharacter->GetHitTarget())); + FRotator LookAtRotation = UKismetMathLibrary::FindLookAtRotation(RightHandTransform.GetLocation(), RightHandTransform.GetLocation() + (RightHandTransform.GetLocation() - BlasterCharacter->GetHitTarget())); + RightHandRotation = FMath::RInterpTo(RightHandRotation, LookAtRotation, DeltaSeconds, 30.f); } } } diff --git a/Source/Blaster/Character/BlasterCharacter.cpp b/Source/Blaster/Character/BlasterCharacter.cpp index 2f07e21..748b7b1 100644 --- a/Source/Blaster/Character/BlasterCharacter.cpp +++ b/Source/Blaster/Character/BlasterCharacter.cpp @@ -34,11 +34,12 @@ ABlasterCharacter::ABlasterCharacter() OverheadWidget->SetupAttachment(RootComponent); Combat = CreateDefaultSubobject(TEXT("CombatComponent")); - Combat->SetIsReplicated(true); + Combat->SetIsReplicatedByDefault(true); GetCharacterMovement()->NavAgentProps.bCanCrouch = true; - GetCapsuleComponent()->SetCollisionResponseToChannel(ECollisionChannel::ECC_Camera, ECollisionResponse::ECR_Ignore); - GetMesh()->SetCollisionResponseToChannel(ECollisionChannel::ECC_Camera, ECollisionResponse::ECR_Ignore); + GetCapsuleComponent()->SetCollisionResponseToChannel(ECC_Camera, ECR_Ignore); + GetMesh()->SetCollisionResponseToChannel(ECC_Camera, ECR_Ignore); + GetMesh()->SetCollisionResponseToChannel(ECC_Visibility, ECR_Block); GetCharacterMovement()->RotationRate = FRotator(0.f, 850.f, 0.f); TurningInPlace = ETurningInPlace::ETIP_NotTurning; NetUpdateFrequency = 66.f; diff --git a/Source/Blaster/Character/BlasterCharacter.h b/Source/Blaster/Character/BlasterCharacter.h index 31254be..5408e32 100644 --- a/Source/Blaster/Character/BlasterCharacter.h +++ b/Source/Blaster/Character/BlasterCharacter.h @@ -3,12 +3,13 @@ #pragma once #include "CoreMinimal.h" +#include "Blaster/Interfaces/InteractWithCrosshairInterface.h" #include "Blaster/Types/TurningInPlace.h" #include "GameFramework/Character.h" #include "BlasterCharacter.generated.h" UCLASS() -class BLASTER_API ABlasterCharacter : public ACharacter +class BLASTER_API ABlasterCharacter : public ACharacter, public IInteractWithCrosshairInterface { GENERATED_BODY() diff --git a/Source/Blaster/Components/CombatComponent.cpp b/Source/Blaster/Components/CombatComponent.cpp index 9d7bffd..a67db98 100644 --- a/Source/Blaster/Components/CombatComponent.cpp +++ b/Source/Blaster/Components/CombatComponent.cpp @@ -4,7 +4,6 @@ #include "CombatComponent.h" #include "Blaster/Character/BlasterCharacter.h" -#include "Blaster/HUD/BlasterHUD.h" #include "Blaster/PlayerController/BlasterPlayerController.h" #include "Blaster/Weapon/Weapon.h" #include "Camera/CameraComponent.h" @@ -48,7 +47,7 @@ void UCombatComponent::BeginPlay() void UCombatComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) { Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - + if (Character && Character->IsLocallyControlled()) { FHitResult HitResult; @@ -70,8 +69,6 @@ void UCombatComponent::SetHUDCrosshairs(float DeltaTime) HUD = HUD == nullptr ? Cast(Controller->GetHUD()) : HUD; if (HUD) { - FHUDPackage HUDPackage; - if (EquippedWeapon) { HUDPackage.CrosshairsCenter = EquippedWeapon->CrosshairsCenter; @@ -97,7 +94,7 @@ void UCombatComponent::SetHUDCrosshairs(float DeltaTime) Velocity.Z = 0.f; CrosshairVelocityFactor = FMath::GetMappedRangeValueClamped(WalkSpeedRange, VelocityMultiplierRange, Velocity.Size()); - + if (Character->GetCharacterMovement()->IsFalling()) { CrosshairInAirFactor = FMath::FInterpTo(CrosshairInAirFactor, 2.25f, DeltaTime, 2.25f); @@ -117,14 +114,14 @@ void UCombatComponent::SetHUDCrosshairs(float DeltaTime) } CrosshairShootingFactor = FMath::FInterpTo(CrosshairShootingFactor, 0.f, DeltaTime, 40.f); - + HUDPackage.CrosshairSpread = - 0.5f + - CrosshairVelocityFactor + - CrosshairInAirFactor - - CrosshairAimFactor + - CrosshairShootingFactor; - + 0.5f + + CrosshairVelocityFactor + + CrosshairInAirFactor - + CrosshairAimFactor + + CrosshairShootingFactor; + HUD->SetHUDPackage(HUDPackage); } } @@ -222,8 +219,16 @@ void UCombatComponent::TraceUnderCrosshairs(FHitResult& TraceHitResult) End, ECollisionChannel::ECC_Visibility ); + if (TraceHitResult.GetActor() && TraceHitResult.GetActor()->Implements()) + { + HUDPackage.CrosshairColor = FLinearColor::Red; + } + else + { + HUDPackage.CrosshairColor = FLinearColor::White; + } - if (!TraceHitResult.bBlockingHit) TraceHitResult.ImpactPoint = End; + if (!TraceHitResult.bBlockingHit) TraceHitResult.ImpactPoint = End; } } diff --git a/Source/Blaster/Components/CombatComponent.h b/Source/Blaster/Components/CombatComponent.h index a289baa..51a0b12 100644 --- a/Source/Blaster/Components/CombatComponent.h +++ b/Source/Blaster/Components/CombatComponent.h @@ -3,6 +3,7 @@ #pragma once #include "CoreMinimal.h" +#include "Blaster/HUD/BlasterHUD.h" #include "Components/ActorComponent.h" #include "CombatComponent.generated.h" @@ -68,7 +69,8 @@ private: float CrosshairInAirFactor; float CrosshairAimFactor; float CrosshairShootingFactor; - + FHUDPackage HUDPackage; + // Aiming and FOV // Field of view when not aiming; set to the camera's base FOV in BeginPlay diff --git a/Source/Blaster/HUD/BlasterHUD.cpp b/Source/Blaster/HUD/BlasterHUD.cpp index 92d1b3d..5e0731a 100644 --- a/Source/Blaster/HUD/BlasterHUD.cpp +++ b/Source/Blaster/HUD/BlasterHUD.cpp @@ -17,32 +17,32 @@ void ABlasterHUD::DrawHUD() if (HUDPackage.CrosshairsCenter) { const FVector2D Spread(0.f, 0.f); - DrawCrosshair(HUDPackage.CrosshairsCenter, ViewportCenter, Spread); + DrawCrosshair(HUDPackage.CrosshairsCenter, ViewportCenter, Spread, HUDPackage.CrosshairColor); } if (HUDPackage.CrosshairsLeft) { const FVector2D Spread(-SpreadScaled, 0.f); - DrawCrosshair(HUDPackage.CrosshairsLeft, ViewportCenter, Spread); + DrawCrosshair(HUDPackage.CrosshairsLeft, ViewportCenter, Spread, HUDPackage.CrosshairColor); } if (HUDPackage.CrosshairsRight) { const FVector2D Spread(SpreadScaled, 0.f); - DrawCrosshair(HUDPackage.CrosshairsRight, ViewportCenter, Spread); + DrawCrosshair(HUDPackage.CrosshairsRight, ViewportCenter, Spread, HUDPackage.CrosshairColor); } if (HUDPackage.CrosshairsTop) { const FVector2D Spread(0.f, -SpreadScaled); - DrawCrosshair(HUDPackage.CrosshairsTop, ViewportCenter, Spread); + DrawCrosshair(HUDPackage.CrosshairsTop, ViewportCenter, Spread, HUDPackage.CrosshairColor); } if (HUDPackage.CrosshairsBottom) { const FVector2D Spread(0.f, SpreadScaled); - DrawCrosshair(HUDPackage.CrosshairsBottom, ViewportCenter, Spread); + DrawCrosshair(HUDPackage.CrosshairsBottom, ViewportCenter, Spread, HUDPackage.CrosshairColor); } } } -void ABlasterHUD::DrawCrosshair(UTexture2D* Texture, FVector2D ViewportCenter, FVector2D Spread) +void ABlasterHUD::DrawCrosshair(UTexture2D* Texture, FVector2D ViewportCenter, FVector2D Spread, FLinearColor CrosshairColor) { const float TextureWidth = Texture->GetSizeX(); const float TextureHeight = Texture->GetSizeY(); @@ -61,6 +61,6 @@ void ABlasterHUD::DrawCrosshair(UTexture2D* Texture, FVector2D ViewportCenter, F 0.f, 1.f, 1.f, - FLinearColor::White + CrosshairColor ); } diff --git a/Source/Blaster/HUD/BlasterHUD.h b/Source/Blaster/HUD/BlasterHUD.h index c36dcd2..ab0f45f 100644 --- a/Source/Blaster/HUD/BlasterHUD.h +++ b/Source/Blaster/HUD/BlasterHUD.h @@ -18,6 +18,7 @@ public: UTexture2D* CrosshairsTop; UTexture2D* CrosshairsBottom; float CrosshairSpread; + FLinearColor CrosshairColor; }; /** @@ -34,7 +35,7 @@ public: private: FHUDPackage HUDPackage; - void DrawCrosshair(UTexture2D* Texture, FVector2D ViewportCenter, FVector2D Spread); + void DrawCrosshair(UTexture2D* Texture, FVector2D ViewportCenter, FVector2D Spread, FLinearColor CrosshairColor); UPROPERTY(EditAnywhere) float CrosshairSpreadMax = 16.f; diff --git a/Source/Blaster/Interfaces/InteractWithCrosshairInterface.cpp b/Source/Blaster/Interfaces/InteractWithCrosshairInterface.cpp new file mode 100644 index 0000000..0b97038 --- /dev/null +++ b/Source/Blaster/Interfaces/InteractWithCrosshairInterface.cpp @@ -0,0 +1,6 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "InteractWithCrosshairInterface.h" + +// Add default functionality here for any IInteractWithCrosshairInterface functions that are not pure virtual. diff --git a/Source/Blaster/Interfaces/InteractWithCrosshairInterface.h b/Source/Blaster/Interfaces/InteractWithCrosshairInterface.h new file mode 100644 index 0000000..17d9211 --- /dev/null +++ b/Source/Blaster/Interfaces/InteractWithCrosshairInterface.h @@ -0,0 +1,25 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "UObject/Interface.h" +#include "InteractWithCrosshairInterface.generated.h" + +// This class does not need to be modified. +UINTERFACE(MinimalAPI) +class UInteractWithCrosshairInterface : public UInterface +{ + GENERATED_BODY() +}; + +/** + * + */ +class BLASTER_API IInteractWithCrosshairInterface +{ + GENERATED_BODY() + + // Add interface functions to this class. This is the class that will be inherited to implement this interface. +public: +};