1
0
KF2-Dev-Scripts/Engine/Classes/AnimNodeSynch.uc
2020-12-13 18:01:13 +03:00

73 lines
2.3 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*
* Animation Node used to synch childs.
* Would be typically used to synch several walk/run/crouch cycles together.
*
* This node works by using the most relevant node in the final blend as the master node,
* to update all the others (slaves).
* This requires all cycles to be relatively synched (i.e. left foot is down on all cycles at 0.25% of the animation, regarless of its length).
*/
class AnimNodeSynch extends AnimNodeBlendBase
native(Anim);
/** definition of a group of AnimNodeSequence to synchronize together */
struct native SynchGroup
{
/** Cached array of anim node sequence nodes to synchronize */
var Array<AnimNodeSequence> SeqNodes;
/** Last master node used, do not search for a new one, if this one has a full weight... */
var transient AnimNodeSequence MasterNode;
/** Name of group. */
var() Name GroupName;
/** If FALSE, do not trigger slave nodes notifies. */
var() bool bFireSlaveNotifies;
/** Rate Scale */
var() float RateScale;
structdefaultproperties
{
RateScale=1.f
}
};
/** List of groups to synchronize */
var() Array<SynchGroup> Groups;
cpptext
{
virtual void InitAnim(USkeletalMeshComponent* MeshComp, UAnimNodeBlendBase* Parent);
virtual void TickAnim(FLOAT DeltaSeconds);
void UpdateMasterNodeForGroup(FSynchGroup& SynchGroup);
void RepopulateGroups();
}
/** Add a node to an existing group */
native final function AddNodeToGroup(AnimNodeSequence SeqNode, Name GroupName);
/** Remove a node from an existing group */
native final function RemoveNodeFromGroup(AnimNodeSequence SeqNode, Name GroupName);
/** Accesses the Master Node driving a given group */
native final function AnimNodeSequence GetMasterNodeOfGroup(Name GroupName);
/** Force a group at a relative position. */
native final function ForceRelativePosition(Name GroupName, FLOAT RelativePosition);
/** Get the relative position of a group. */
native final function float GetRelativePosition(Name GroupName);
/** Adjust the Rate Scale of a group */
native final function SetGroupRateScale(Name GroupName, FLOAT NewRateScale);
defaultproperties
{
Children(0)=(Name="Input",Weight=1.0)
bFixNumChildren=TRUE
}