#pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "UObject/NoExportTypes.h" #include "UObject/NoExportTypes.h" #include "GameFramework/Actor.h" #include "Engine/EngineTypes.h" #include "WeaponFireOwner.h" #include "NeedleSprayer.generated.h" class APlayerCharacter; class UAnimMontage; class UFSDAudioComponent; class UHitscanComponent; class UNiagaraComponent; class UPointLightComponent; class USceneComponent; class USkeletalMeshComponent; UCLASS(Blueprintable) class ANeedleSprayer : public AActor, public IWeaponFireOwner { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) USceneComponent* Root; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) USkeletalMeshComponent* SKMesh; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UHitscanComponent* FireComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UHitscanComponent* OnSpawnedEffectComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UPointLightComponent* MuzzleFlashLight; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UNiagaraComponent* MuzzleFlashParticleSys; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UNiagaraComponent* ImpactParticleComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) USceneComponent* ShotOriginPivot; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, Transient, meta=(AllowPrivateAccess=true)) UHitscanComponent* HitscanComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, Transient, meta=(AllowPrivateAccess=true)) UFSDAudioComponent* SoundEnd; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UAnimMontage* ReloadAnimation; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) int32 MaxRotations; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) int32 LinesPerRotation; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FVector2D ShotAngleFromTop; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float DeployDelay; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float LifeTime; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float TimeBetweenRotations; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float RearmTime; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float AvoidCloseOffset; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ShotOriginOffset; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) int32 MaxRearms; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool PlayAnimationOnBeginPlay; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool PlayAnimationOnReload; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool DrawDebugLines; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float DebugLinesDuration; public: ANeedleSprayer(); protected: UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void OnSpinningChanged(bool isSpinning); public: UFUNCTION(BlueprintCallable) void OnHit(const FHitResult& Result, bool IsPenetrating); // Fix for true pure virtual functions not being implemented UFUNCTION(BlueprintCallable) APlayerCharacter* GetPlayerCharacter() const override PURE_VIRTUAL(GetPlayerCharacter, return NULL;); UFUNCTION(BlueprintCallable) FQuat GetMuzzleQuat() const override PURE_VIRTUAL(GetMuzzleQuat, return FQuat{};); UFUNCTION(BlueprintCallable) FVector GetMuzzleLocation() const override PURE_VIRTUAL(GetMuzzleLocation, return FVector{};); UFUNCTION(BlueprintCallable) bool GetIsLocallyControlled() const override PURE_VIRTUAL(GetIsLocallyControlled, return false;); UFUNCTION(BlueprintCallable) bool GetIsFirstPerson() const override PURE_VIRTUAL(GetIsFirstPerson, return false;); };