1
0
KF2-Dev-Scripts/Engine/Classes/AnimNodePlayCustomAnim.uc

153 lines
4.1 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
/**
* Gives code control to override an AnimTree branch, with a custom animation.
* . Normal branch is the normal tree branch (for example Human upper body).
* . Custom branch must be connected to an AnimNodeSequence.
* This node can then take over the upper body to play a cutom animation given various parameters.
*
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
class AnimNodePlayCustomAnim extends AnimNodeBlend
DependsOn(AnimNodeSequence)
native(Anim);
cpptext
{
virtual void TickAnim(FLOAT DeltaSeconds);
virtual INT GetNumSliders() const { return 0; }
};
/** True, when we're playing a custom animation */
var bool bIsPlayingCustomAnim;
/** save blend out time when playing a one shot animation. */
var float CustomPendingBlendOutTime;
/**
* Play a custom animation.
* Supports many features, including blending in and out.
*
* @param AnimName Name of animation to play.
* @param Rate Rate animation should be played at.
* @param BlendInTime Blend duration to play anim.
* @param BlendOutTime Time before animation ends (in seconds) to blend out.
* -1.f means no blend out.
* 0.f = instant switch, no blend.
* otherwise it's starting to blend out at AnimDuration - BlendOutTime seconds.
* @param bLooping Should the anim loop? (and play forever until told to stop)
* @param bOverride play same animation over again only if bOverride is set to true.
*
* @return PlayBack length of animation.
*/
final native function float PlayCustomAnim
(
name AnimName,
float Rate,
optional float BlendInTime,
optional float BlendOutTime,
optional bool bLooping,
optional bool bOverride
);
/**
* Play a custom animation.
* Auto adjusts the animation's rate to match a given duration in seconds.
* Supports many features, including blending in and out.
*
* @param AnimName Name of animation to play.
* @param Duration duration in seconds the animation should be played.
* @param BlendInTime Blend duration to play anim.
* @param BlendOutTime Time before animation ends (in seconds) to blend out.
* -1.f means no blend out.
* 0.f = instant switch, no blend.
* otherwise it's starting to blend out at AnimDuration - BlendOutTime seconds.
* @param bLooping Should the anim loop? (and play forever until told to stop)
* @param bOverride play same animation over again only if bOverride is set to true.
*/
final native function PlayCustomAnimByDuration
(
name AnimName,
float Duration,
optional float BlendInTime,
optional float BlendOutTime,
optional bool bLooping,
optional bool bOverride
);
/**
* Stop playing a custom animation.
* Used for blending out of a looping custom animation.
*/
final native function StopCustomAnim(float BlendOutTime);
/**
* Set Custom animation.
*/
final function SetCustomAnim(Name AnimName)
{
local AnimNodeSequence SeqNode;
SeqNode = AnimNodeSequence(Children[1].Anim);
if( SeqNode != None )
{
SeqNode.SetAnim(AnimName);
}
}
/** Set bCauseActorAnimEnd flag */
final function SetActorAnimEndNotification(bool bNewStatus)
{
local AnimNodeSequence SeqNode;
SeqNode = AnimNodeSequence(Children[1].Anim);
if( SeqNode != None )
{
SeqNode.bCauseActorAnimEnd = bNewStatus;
}
}
/** Returns AnimNodeSequence playing the custom animation */
final function AnimNodeSequence GetCustomAnimNodeSeq()
{
return AnimNodeSequence(Children[1].Anim);
}
/**
* Set custom animation root bone options.
*/
final function SetRootBoneAxisOption
(
optional ERootBoneAxis AxisX = RBA_Default,
optional ERootBoneAxis AxisY = RBA_Default,
optional ERootBoneAxis AxisZ = RBA_Default
)
{
local AnimNodeSequence AnimSeq;
AnimSeq = GetCustomAnimNodeSeq();
if( AnimSeq != None )
{
AnimSeq.SetRootBoneAxisOption(AxisX, AxisY, AxisZ);
}
else
{
`Warn(GetFuncName() @ "Custom AnimNodeSequence not found for" @ Self);
}
}
defaultproperties
{
NodeName="CustomAnim"
bFixNumChildren=TRUE
Children(0)=(Name="Normal")
Children(1)=(Name="Custom")
}