50 lines
1.5 KiB
C
50 lines
1.5 KiB
C
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "CoreMinimal.h"
|
||
|
#include "Equipment/LyraEquipmentInstance.h"
|
||
|
#include "Cosmetics/LyraCosmeticAnimationTypes.h"
|
||
|
#include "LyraWeaponInstance.generated.h"
|
||
|
|
||
|
/**
|
||
|
* ULyraWeaponInstance
|
||
|
*
|
||
|
* A piece of equipment representing a weapon spawned and applied to a pawn
|
||
|
*/
|
||
|
UCLASS()
|
||
|
class ULyraWeaponInstance : public ULyraEquipmentInstance
|
||
|
{
|
||
|
GENERATED_BODY()
|
||
|
|
||
|
public:
|
||
|
ULyraWeaponInstance(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
|
||
|
|
||
|
//~ULyraEquipmentInstance interface
|
||
|
virtual void OnEquipped();
|
||
|
virtual void OnUnequipped();
|
||
|
//~End of ULyraEquipmentInstance interface
|
||
|
|
||
|
UFUNCTION(BlueprintCallable)
|
||
|
void UpdateFiringTime();
|
||
|
|
||
|
// Returns how long it's been since the weapon was interacted with (fired or equipped)
|
||
|
UFUNCTION(BlueprintPure)
|
||
|
float GetTimeSinceLastInteractedWith() const;
|
||
|
|
||
|
protected:
|
||
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Animation)
|
||
|
FLyraAnimLayerSelectionSet EquippedAnimSet;
|
||
|
|
||
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Animation)
|
||
|
FLyraAnimLayerSelectionSet UneuippedAnimSet;
|
||
|
|
||
|
// Choose the best layer from EquippedAnimSet or UneuippedAnimSet based on the specified gameplay tags
|
||
|
UFUNCTION(BlueprintCallable, BlueprintPure=false, Category=Animation)
|
||
|
TSubclassOf<UAnimInstance> PickBestAnimLayer(bool bEquipped, const FGameplayTagContainer& CosmeticTags) const;
|
||
|
|
||
|
private:
|
||
|
double TimeLastEquipped = 0.0;
|
||
|
double TimeLastFired = 0.0;
|
||
|
};
|