73 lines
2.3 KiB
Ucode
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
|
|
}
|