// Copyright 2025 https://yuewu.dev/en All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Runtime/Launch/Resources/Version.h" #include "GMS_ZipliningMode.h" #include "MovementModeTransition.h" #include "GMS_ZiplineModeTransition.generated.h" /** * Transition that handles starting ziplining based on input. Character must be airborne to catch the * zipline, regardless of input. */ UCLASS(Blueprintable, BlueprintType) class UGMS_ZiplineStartTransition : public UBaseMovementModeTransition { GENERATED_UCLASS_BODY() #if ENGINE_MINOR_VERSION >= 6 virtual FTransitionEvalResult Evaluate_Implementation(const FSimulationTickParams& Params) const override; #else virtual FTransitionEvalResult OnEvaluate(const FSimulationTickParams& Params) const override; #endif UPROPERTY(EditAnywhere, Category = "Ziplining") FName ZipliningModeName = ExtendedModeNames::Ziplining; UPROPERTY(EditAnywhere, Category = "Ziplining") FGameplayTag ZipliningInputTag; }; /** * Transition that handles exiting ziplining based on input */ UCLASS(Blueprintable, BlueprintType) class UGMS_ZiplineEndTransition : public UBaseMovementModeTransition { GENERATED_UCLASS_BODY() #if ENGINE_MINOR_VERSION >= 6 virtual FTransitionEvalResult Evaluate_Implementation(const FSimulationTickParams& Params) const override; virtual void Trigger_Implementation(const FSimulationTickParams& Params) override; #else virtual FTransitionEvalResult OnEvaluate(const FSimulationTickParams& Params) const override; virtual void OnTrigger(const FSimulationTickParams& Params) override; #endif // Mode to enter when exiting the zipline UPROPERTY(EditAnywhere, Category = "Ziplining") FName AutoExitToMode = DefaultModeNames::Falling; };