#pragma once #include "CoreMinimal.h" #include "HitDelegateDelegate.h" #include "HitscanBaseComponent.h" #include "MultiHitScanHits.h" #include "MultiHitscanComponent.generated.h" class AActor; UCLASS(Blueprintable, ClassGroup=Custom, meta=(BlueprintSpawnableComponent)) class UMultiHitscanComponent : public UHitscanBaseComponent { GENERATED_BODY() public: private: UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FHitDelegate OnHit; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) int32 BulletsPerShot; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float GeneralImpactAudioVolume; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool CountMultiHits; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TArray DamagedActorCache; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) FMultiHitScanHits Hits; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TArray ActorsHit; public: UMultiHitscanComponent(); protected: UFUNCTION(BlueprintCallable, Reliable, Server) void Server_RegisterHit(const FMultiHitScanHits& hitResults); UFUNCTION(BlueprintCallable, NetMulticast, Unreliable) void All_ShowHit(const FMultiHitScanHits& hitResults); };