//=============================================================================
// KFAnimSeq_BlendByDirection
//=============================================================================
// Anim Node Sequence which blends Fwd/Bwd/Lt/Rt movement anims
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
// - Andrew "Strago" Ladenberger
//=============================================================================
// Based on GearAnim_BlendAnimsByDirection 
// Copyright 1998-2012 Epic Games, Inc.
//=============================================================================

class KFAnimSeq_Directional extends AnimNodeSequenceBlendBase
	native(Anim);

/** Should Rotation Rate be taken into account. */
var()			bool	bAddRotationRate;

/** Internal */
var				float	DirAngle;
var             float   TargetAngle;
var	transient	vector	MoveDir;
var transient	INT		LastYaw;
var transient	FLOAT	YawRotationRate;

/** Cached pointer to PawnOwner */
var transient KFPawn	PawnOwner;

enum EDirectionInterpType
{
	EDIT_None,
	EDIT_Circular,
	EDIT_Linear
};

var() EDirectionInterpType  DirectionInterpType;
var() FLOAT                 CircularInterpSpeed, LinearInterpSpeed;

/** When moving the slider, keep nodes with same property in sync. */
var()	bool	bSynchronizeNodesInEditor;

/** Restart animations on become relevant */
var()	bool	bRestartOnBecomeRelevant;

cpptext
{
	// AnimNode interface
	virtual void InitAnim(USkeletalMeshComponent* MeshComp, UAnimNodeBlendBase* Parent);
	virtual	void TickAnim(FLOAT DeltaSeconds);
	virtual void OnBecomeRelevant();
	
	virtual INT GetNumSliders() const { return 1; }
	virtual FLOAT GetSliderPosition(INT SliderIndex, INT ValueIndex);
	virtual void HandleSliderMove(INT SliderIndex, INT ValueIndex, FLOAT NewSliderValue);
	virtual FString GetSliderDrawValue(INT SliderIndex);
}

defaultproperties
{
	bSynchronizeNodesInEditor=TRUE
	DirectionInterpType=EDIT_Linear
	CircularInterpSpeed=180.f
	LinearInterpSpeed=10.f
	bAddRotationRate=FALSE

	Anims(0)=(AnimName="Forward",Weight=1.0)
	Anims(1)=(AnimName="Backward")
	Anims(2)=(AnimName="Left")
	Anims(3)=(AnimName="Right")
}
