49 lines
1.3 KiB
C
49 lines
1.3 KiB
C
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "CoreMinimal.h"
|
||
|
#include "CommonUserWidget.h"
|
||
|
|
||
|
#include "LyraReticleWidgetBase.generated.h"
|
||
|
|
||
|
class ULyraWeaponInstance;
|
||
|
class ULyraInventoryItemInstance;
|
||
|
|
||
|
UCLASS(Abstract)
|
||
|
class ULyraReticleWidgetBase : public UCommonUserWidget
|
||
|
{
|
||
|
GENERATED_BODY()
|
||
|
|
||
|
public:
|
||
|
ULyraReticleWidgetBase(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
|
||
|
|
||
|
UFUNCTION(BlueprintImplementableEvent)
|
||
|
void OnWeaponInitialized();
|
||
|
|
||
|
UFUNCTION(BlueprintCallable)
|
||
|
void InitializeFromWeapon(ULyraWeaponInstance* InWeapon);
|
||
|
|
||
|
/** Returns the current weapon's diametrical spread angle, in degrees */
|
||
|
UFUNCTION(BlueprintCallable, BlueprintPure)
|
||
|
float ComputeSpreadAngle() const;
|
||
|
|
||
|
/** Returns the current weapon's maximum spread radius in screenspace units (pixels) */
|
||
|
UFUNCTION(BlueprintCallable, BlueprintPure)
|
||
|
float ComputeMaxScreenspaceSpreadRadius() const;
|
||
|
|
||
|
/**
|
||
|
* Returns true if the current weapon is at 'first shot accuracy'
|
||
|
* (the weapon allows it and it is at min spread)
|
||
|
*/
|
||
|
UFUNCTION(BlueprintCallable, BlueprintPure)
|
||
|
bool HasFirstShotAccuracy() const;
|
||
|
|
||
|
protected:
|
||
|
UPROPERTY(BlueprintReadOnly)
|
||
|
TObjectPtr<ULyraWeaponInstance> WeaponInstance;
|
||
|
|
||
|
UPROPERTY(BlueprintReadOnly)
|
||
|
TObjectPtr<ULyraInventoryItemInstance> InventoryInstance;
|
||
|
};
|