146 lines
5.0 KiB
Ucode
146 lines
5.0 KiB
Ucode
|
class InterpTrackAnimControl extends InterpTrackFloatBase
|
||
|
native(Interpolation);
|
||
|
|
||
|
/**
|
||
|
* InterpTrackAnimControl
|
||
|
*
|
||
|
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
|
||
|
*/
|
||
|
|
||
|
|
||
|
cpptext
|
||
|
{
|
||
|
// UObject interface
|
||
|
virtual void PostLoad();
|
||
|
|
||
|
// InterpTrack interface
|
||
|
virtual INT GetNumKeyframes() const;
|
||
|
virtual void GetTimeRange(FLOAT& StartTime, FLOAT& EndTime) const;
|
||
|
virtual FLOAT GetTrackEndTime() const;
|
||
|
virtual FLOAT GetKeyframeTime(INT KeyIndex) const;
|
||
|
virtual INT AddKeyframe(FLOAT Time, UInterpTrackInst* TrInst, EInterpCurveMode InitInterpMode);
|
||
|
virtual INT SetKeyframeTime(INT KeyIndex, FLOAT NewKeyTime, UBOOL bUpdateOrder=true);
|
||
|
virtual void RemoveKeyframe(INT KeyIndex);
|
||
|
virtual INT DuplicateKeyframe(INT KeyIndex, FLOAT NewKeyTime);
|
||
|
virtual UBOOL GetClosestSnapPosition(FLOAT InPosition, TArray<INT> &IgnoreKeys, FLOAT& OutPosition);
|
||
|
virtual FColor GetKeyframeColor(INT KeyIndex) const;
|
||
|
|
||
|
virtual void PreviewUpdateTrack(FLOAT NewPosition, class UInterpTrackInst* TrInst);
|
||
|
virtual void UpdateTrack(FLOAT NewPosition, UInterpTrackInst* TrInst, UBOOL bJump);
|
||
|
|
||
|
/**
|
||
|
* Calculates the reversed time for a sequence key, if the key has bReverse set.
|
||
|
*
|
||
|
* @param SeqKey Key that is reveresed and we are trying to find a position for.
|
||
|
* @param Seq Anim sequence the key represents. If NULL, the function will lookup the sequence.
|
||
|
* @param InPosition Timeline position that we are currently at.
|
||
|
*
|
||
|
* @return Returns the position in the specified seq key.
|
||
|
*/
|
||
|
FLOAT ConditionallyReversePosition(FAnimControlTrackKey &SeqKey, UAnimSequence* Seq, FLOAT InPosition);
|
||
|
|
||
|
/** Get the name of the class used to help out when adding tracks, keys, etc. in UnrealEd.
|
||
|
* @return String name of the helper class.*/
|
||
|
virtual const FString GetEdHelperClassName() const;
|
||
|
|
||
|
virtual class UMaterial* GetTrackIcon() const;
|
||
|
virtual void DrawTrack( FCanvas* Canvas, UInterpGroup* Group, const FInterpTrackDrawParams& Params );
|
||
|
|
||
|
// InterpTrackAnimControl interface
|
||
|
class UAnimSequence* FindAnimSequenceFromName(FName InName);
|
||
|
const class UAnimSequence* FindAnimSequenceFromName(FName InName) const;
|
||
|
/** Get Animation for the given Time
|
||
|
* @return TRUE if it needs the animation to advance timer (from Previous to Current Time for Root Motion
|
||
|
*/
|
||
|
UBOOL GetAnimForTime(FLOAT InTime, FName& OutAnimSeqName, FLOAT& OutPosition, UBOOL& bOutLooping);
|
||
|
FLOAT GetWeightForTime(FLOAT InTime);
|
||
|
INT SplitKeyAtPosition(FLOAT InPosition);
|
||
|
|
||
|
/**
|
||
|
* Crops the key at the position specified, by deleting the area of the key before or after the position.
|
||
|
*
|
||
|
* @param InPosition Position to use as a crop point.
|
||
|
* @param bCutAreaBeforePosition Whether we should delete the area of the key before the position specified or after.
|
||
|
*
|
||
|
* @return Returns the index of the key that was cropped.
|
||
|
*/
|
||
|
INT CropKeyAtPosition(FLOAT InPosition, UBOOL bCutAreaBeforePosition);
|
||
|
|
||
|
// FInterpEdInputInterface
|
||
|
|
||
|
/**
|
||
|
* Lets the interface object know that we are beginning a drag operation.
|
||
|
*/
|
||
|
virtual void BeginDrag(FInterpEdInputData &InputData);
|
||
|
|
||
|
/**
|
||
|
* Lets the interface object know that we are ending a drag operation.
|
||
|
*/
|
||
|
virtual void EndDrag(FInterpEdInputData &InputData);
|
||
|
|
||
|
/**
|
||
|
* @return Returns the mouse cursor to display when this input interface is moused over.
|
||
|
*/
|
||
|
EMouseCursor GetMouseCursor(FInterpEdInputData &InputData);
|
||
|
|
||
|
/**
|
||
|
* Called when an object is dragged.
|
||
|
*/
|
||
|
void ObjectDragged(FInterpEdInputData& InputData);
|
||
|
|
||
|
/** Calculate the index of this Track within its Slot (for when multiple tracks are using same slot). */
|
||
|
INT CalcChannelIndex();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* DEPRECATED! USE UInterpGroup::GroupAnimSets instead now.
|
||
|
*/
|
||
|
var array<AnimSet> AnimSets;
|
||
|
|
||
|
/**
|
||
|
* Name of slot to use when playing animation. Passed to Actor.
|
||
|
* When multiple tracks use the same slot name, they are each given a different ChannelIndex when SetAnimPosition is called.
|
||
|
*/
|
||
|
var() name SlotName;
|
||
|
|
||
|
/** Structure used for holding information for one animation played on the Anim Control track. */
|
||
|
struct native AnimControlTrackKey
|
||
|
{
|
||
|
/** Position in the Matinee sequence to start playing this animation. */
|
||
|
var float StartTime;
|
||
|
|
||
|
/** Name of AnimSequence to play. */
|
||
|
var name AnimSeqName;
|
||
|
|
||
|
/** Time to start playing AnimSequence at. */
|
||
|
var float AnimStartOffset;
|
||
|
|
||
|
/** Time to end playing the AnimSequence at. */
|
||
|
var float AnimEndOffset;
|
||
|
|
||
|
/** Playback speed of this animation. */
|
||
|
var float AnimPlayRate;
|
||
|
|
||
|
/** Should this animation loop. */
|
||
|
var bool bLooping;
|
||
|
|
||
|
/** Whether to play the animation in reverse or not. */
|
||
|
var bool bReverse;
|
||
|
};
|
||
|
|
||
|
/** Track of different animations to play and when to start playing them. */
|
||
|
var array<AnimControlTrackKey> AnimSeqs;
|
||
|
|
||
|
/** Enable root motion. This only works if you delete Movement Track to avoid conflicts **/
|
||
|
var() bool bEnableRootMotion;
|
||
|
|
||
|
/** Skip all anim notifiers **/
|
||
|
var() bool bSkipAnimNotifiers;
|
||
|
|
||
|
defaultproperties
|
||
|
{
|
||
|
TrackInstClass=class'Engine.InterpTrackInstAnimControl'
|
||
|
TrackTitle="Anim"
|
||
|
bIsAnimControlTrack=true
|
||
|
}
|