#pragma once #include "CoreMinimal.h" #include "HitscanBaseComponent.h" #include "MultiHitScanHits.h" #include "OnHitDelegateDelegate.h" #include "CapsuleHitscanComponent.generated.h" class AActor; class ADamageEnhancer; UCLASS(Blueprintable, ClassGroup=Custom, meta=(BlueprintSpawnableComponent)) class UCapsuleHitscanComponent : public UHitscanBaseComponent { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) ADamageEnhancer* DamageEnhancer; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FOnHitDelegate OnHitEffect; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FOnHitDelegate OnClosestHit_Client; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float range; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float Width; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool ShowPhysMatImpact; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool ShowPhysMatDecal; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool PlayPhysMatSound; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TSet ActorsInCapsule; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TArray DamagedActorCache; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TArray ActorsHit; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) FMultiHitScanHits Hits; public: UCapsuleHitscanComponent(); protected: UFUNCTION(BlueprintCallable, Reliable, Server) void Server_RegisterHit(const FMultiHitScanHits& hitResults); UFUNCTION(BlueprintCallable, NetMulticast, Unreliable) void All_ShowHit(const FMultiHitScanHits& hitResults); };