You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Included features in this changelist: * Capture a snapshot of common movement properties (velocity, speed, etc) that are used to drive animation * Character movement component for stop/pivot location * Library of anim node functions for Distance Matching * Template anim node that can advance by distance traveled rather than by time * Template anim node that's driven by distance to a target rather than by time * Animation modifier that generates distance curves based on root motion * Turn in place functionality for keeping the capsule from spinning the pose when it rotates by applying an offset, includes functionality for turn on spot animations to compenstate for the offset #preflight 61446e46599fd80001c250e2 #review-17532442 @Koray.Hagen, @Thomas.Sarkanen, @Fernando.Coello #fyi Laurent.Delayen [CL 17551436 by Aaron Cox in ue5-main branch]
59 lines
2.8 KiB
C++
59 lines
2.8 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
|
|
#include "Animation/AnimExecutionContext.h"
|
|
#include "Kismet/BlueprintFunctionLibrary.h"
|
|
#include "Animation/AnimNodeReference.h"
|
|
#include "SequenceEvaluatorLibrary.generated.h"
|
|
|
|
struct FAnimNode_SequenceEvaluator;
|
|
|
|
USTRUCT(BlueprintType)
|
|
struct FSequenceEvaluatorReference : public FAnimNodeReference
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
typedef FAnimNode_SequenceEvaluator FInternalNodeType;
|
|
};
|
|
|
|
// Exposes operations to be performed on a sequence evaluator anim node
|
|
// Note: Experimental and subject to change!
|
|
UCLASS(Experimental)
|
|
class ANIMGRAPHRUNTIME_API USequenceEvaluatorLibrary : public UBlueprintFunctionLibrary
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
/** Get a sequence evaluator context from an anim node context */
|
|
UFUNCTION(BlueprintCallable, Category = "Sequence Evaluator", meta=(BlueprintThreadSafe, ExpandEnumAsExecs = "Result"))
|
|
static FSequenceEvaluatorReference ConvertToSequenceEvaluator(const FAnimNodeReference& Node, EAnimNodeReferenceConversionResult& Result);
|
|
|
|
/** Get a sequence evaluator context from an anim node context (pure) */
|
|
UFUNCTION(BlueprintPure, Category = "Sequence Evaluator", meta=(BlueprintThreadSafe, DisplayName = "Convert to Sequence Evaluator"))
|
|
static void ConvertToSequenceEvaluatorPure(const FAnimNodeReference& Node, FSequenceEvaluatorReference& SequenceEvaluator, bool& Result)
|
|
{
|
|
EAnimNodeReferenceConversionResult ConversionResult;
|
|
SequenceEvaluator = ConvertToSequenceEvaluator(Node, ConversionResult);
|
|
Result = (ConversionResult == EAnimNodeReferenceConversionResult::Succeeded);
|
|
}
|
|
|
|
/** Set the current accumulated time of the sequence evaluator */
|
|
UFUNCTION(BlueprintCallable, Category = "Sequence Evaluator", meta=(BlueprintThreadSafe))
|
|
static FSequenceEvaluatorReference SetExplicitTime(const FSequenceEvaluatorReference& SequenceEvaluator, float Time);
|
|
|
|
/** Advance the current accumulated time of the sequence evaluator */
|
|
UFUNCTION(BlueprintCallable, Category = "Sequence Evaluator", meta = (BlueprintThreadSafe))
|
|
static FSequenceEvaluatorReference AdvanceTime(const FAnimUpdateContext& UpdateContext, const FSequenceEvaluatorReference& SequenceEvaluator, float PlayRate = 1.0f);
|
|
|
|
/** Set the current sequence of the sequence evaluator */
|
|
UFUNCTION(BlueprintCallable, Category = "Sequence Evaluator", meta=(BlueprintThreadSafe))
|
|
static FSequenceEvaluatorReference SetSequence(const FSequenceEvaluatorReference& SequenceEvaluator, UAnimSequenceBase* Sequence);
|
|
|
|
/** Set the current sequence of the sequence evaluator with an inertial blend time */
|
|
UFUNCTION(BlueprintCallable, Category = "Sequence Evaluator", meta=(BlueprintThreadSafe))
|
|
static FSequenceEvaluatorReference SetSequenceWithInertialBlending(const FAnimUpdateContext& UpdateContext, const FSequenceEvaluatorReference& SequenceEvaluator, UAnimSequenceBase* Sequence, float BlendTime = 0.2f);
|
|
|
|
}; |