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 &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 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 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 }