// © 2024 Long Ly. All rights reserved. Any unauthorized use, reproduction, or distribution of this trademark is strictly prohibited and may result in legal action.

#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimInstance.h"
#include "OLSBaseLinkedOverlayLayerAnimInstance.generated.h"

/**
 * 
 */
UCLASS()
class OLSANIMATION_API UOLSBaseLinkedOverlayLayerAnimInstance : public UAnimInstance
{
	GENERATED_BODY()

protected:
	//~ Begin UAnimInstance overrides
	virtual void NativeInitializeAnimation() override;
	//~ End UAnimInstance overrides

protected:
	
	UFUNCTION(BlueprintCallable, meta = (BlueprintThreadSafe), Category = "ThreadSafe|Selectors")
	class UAnimSequence* SelectIdlePose(const bool isCrouching) const;
	
protected:
	
	UFUNCTION(BlueprintCallable, meta = (BlueprintThreadSafe))
	class UOLSBaseLayerAnimInstance* GetBaseMainAnimInstance() const;

protected:
	
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Mask")
	TObjectPtr<class UAnimSequence> IdlePose_Standing = nullptr;
	
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Mask")
	TObjectPtr<class UAnimSequence> IdlePose_Crouching = nullptr;
	
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Mask")
	TObjectPtr<class UAnimSequence> OverlayAnimationProps = nullptr;

protected:

	UPROPERTY(Transient)
	TObjectPtr<class UOLSBaseLayerAnimInstance> BaseMainAnimInstance = nullptr;
};
