RealtimeStyleTransferRuntime/Source/LyraGame/Weapons/LyraWeaponInstance.h

50 lines
1.5 KiB
C
Raw Normal View History

2022-05-23 18:41:30 +00:00
// 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;
};