Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include "GameFramework/Actor.h"
- #include "AuroraBaseWeapon.generated.h"
- #define Trace_Weapon ECC_GameTraceChannel2
- UENUM(BlueprintType)
- namespace EWeaponProjectile
- {
- enum ProjectileType
- {
- EBullet UMETA(DisplayName = "Bullet"),
- ESpread UMETA(DisplayName = "Spread"),
- };
- }
- UCLASS(Blueprintable)
- class ENTERAURORA_API AAuroraBaseWeapon : public AActor
- {
- GENERATED_BODY()
- /* Weapon Mesh */
- UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Weapon", meta = (AllowPrivateAccess = "true"))
- class USkeletalMeshComponent* weaponMesh;
- public:
- /* Constructor */
- AAuroraBaseWeapon(const FObjectInitializer& ObjectInitializer);
- // Called when the game starts or when spawned
- virtual void BeginPlay() override;
- // Called every frame
- virtual void Tick(float DeltaSeconds) override;
- /* Weapon Properties */
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- FName weaponName;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- float fireRate;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- TEnumAsByte<EWeaponProjectile::ProjectileType> projectileType;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- FName muzzleSocket;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- float currentCryoLevel;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- float cryoMultiplier;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- float maxCryoLevel;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- bool bExhausted;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- float weaponRange;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- float weaponSpread;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- float weaponDamage;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon")
- TSubclassOf<UDamageType> damageType;
- /* Audio Handling */
- UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Audio Component")
- class UAudioComponent* audioSource;
- /* Timers */
- FTimerHandle fireHandler;
- FTimerHandle exhaustedHandler;
- /* Weapon Functions */
- UFUNCTION()
- void OnWeaponFireStart();
- UFUNCTION()
- void OnWeaponFireStop();
- UFUNCTION()
- void Instant_Fire();
- void CheckCryoLevel();
- void ExhaustedWaitTimer();
- protected:
- FHitResult WeaponTrace(const FVector &TraceFrom, const FVector &TraceTo) const;
- void ProcessInstantHit(const FHitResult &Impact, const FVector &Origin, const FVector &ShootDir, int32 RandomSeed, float ReticleSpread);
- };
Add Comment
Please, Sign In to add comment