4 #include "DatasmithAnimationElements.h"
5 #include "DatasmithSceneElementsImpl.h"
7 #include "Containers/Array.h"
8 #include "Templates/SharedPointer.h"
15 virtual const TCHAR*
GetFile()
const override {
return *File; }
16 virtual void SetFile(
const TCHAR* InFile)
override { File = InFile; };
18 virtual FMD5Hash
GetFileHash()
const override {
return FileHash; }
19 virtual void SetFileHash(FMD5Hash Hash)
override { FileHash = Hash; }
21 virtual float GetFrameRate()
const override {
return FrameRate; }
22 virtual void SetFrameRate(
float FramePerSecs)
override { FrameRate = FramePerSecs; }
24 virtual void AddAnimation(
const TSharedRef< IDatasmithBaseAnimationElement >& InAnimation)
override { Animations.Add(InAnimation); }
27 virtual TSharedPtr< IDatasmithBaseAnimationElement >
GetAnimation(int32 InIndex)
override
29 return Animations.IsValidIndex(InIndex) ? Animations[InIndex] : TSharedPtr< IDatasmithBaseAnimationElement >();
32 virtual void RemoveAnimation(
const TSharedRef< IDatasmithBaseAnimationElement >& InAnimation)
override { Animations.Remove(InAnimation); }
37 TArray< TSharedRef< IDatasmithBaseAnimationElement > > Animations;
41 template<
typename InterfaceType >
45 explicit FDatasmithBaseAnimationElementImpl(
const TCHAR* InName, EDatasmithElementType ChildType, EDatasmithElementAnimationSubType InSubtype = EDatasmithElementAnimationSubType::BaseAnimation);
47 virtual void SetCompletionMode(EDatasmithCompletionMode InCompletionMode)
override
49 CompletionMode = InCompletionMode;
52 virtual EDatasmithCompletionMode GetCompletionMode()
const override
54 return CompletionMode;
58 EDatasmithCompletionMode CompletionMode;
61 template<
typename T >
64 , CompletionMode(EDatasmithCompletionMode::ProjectDefault)
74 virtual int32
GetFramesCount(EDatasmithTransformType TransformType)
const override {
return Frames[(uint8)TransformType].Num(); }
76 virtual void SetCurveInterpMode(EDatasmithTransformType TransformType, EDatasmithCurveInterpMode CurveInterpMode)
override
78 TransformCurveInterpMode[(uint32) TransformType] = CurveInterpMode;
81 virtual EDatasmithCurveInterpMode
GetCurveInterpMode(EDatasmithTransformType TransformType)
const override
83 return TransformCurveInterpMode[(uint32) TransformType];
88 return Frames[(uint8)TransformType].IsValidIndex(Index) ? Frames[(uint8)TransformType][Index] : FDatasmithTransformFrameInfo::InvalidFrameInfo;
91 virtual void RemoveFrame(EDatasmithTransformType TransformType, int32 Index)
override
93 if (Frames[(uint8)TransformType].IsValidIndex(Index))
95 Frames[(uint8)TransformType].RemoveAt(Index);
101 return EnabledChannels;
106 EnabledChannels = Channels;
110 TArray< FDatasmithTransformFrameInfo > Frames[(uint8) EDatasmithTransformType::Count];
111 EDatasmithCurveInterpMode TransformCurveInterpMode[(uint8) EDatasmithTransformType::Count];
112 EDatasmithTransformChannels EnabledChannels;
125 CurveInterpMode = InCurveInterpMode;
130 return CurveInterpMode;
135 return Frames.IsValidIndex(Index) ? Frames[Index] : FDatasmithVisibilityFrameInfo::InvalidFrameInfo;
140 if (Frames.IsValidIndex(Index))
142 Frames.RemoveAt(Index);
147 TArray<FDatasmithVisibilityFrameInfo> Frames;
148 EDatasmithCurveInterpMode CurveInterpMode;
163 StartTime = InStartTime;
173 Duration = InDuration;
183 TimeScale = InTimeScale;
191 virtual void SetSubsequence(TWeakPtr<IDatasmithLevelSequenceElement> InSubsequence)
override
193 Subsequence = InSubsequence;
197 FFrameNumber StartTime;
200 TWeakPtr<IDatasmithLevelSequenceElement> Subsequence;
virtual void SetStartTime(FFrameNumber InStartTime) override
Set the frame where the subsequence starts.
Definition: DatasmithAnimationElementsImpl.h:161
Definition: DatasmithAnimationElementsImpl.h:10
Definition: DatasmithAnimationElementsImpl.h:42
FDatasmithVisibilityFrameInfo holds the visibility value for a frame.
Definition: DatasmithTypes.h:132
virtual int32 GetFramesCount() const override
Return the number of frames of the animation.
Definition: DatasmithAnimationElementsImpl.h:121
virtual void AddFrame(const FDatasmithVisibilityFrameInfo &FrameInfo) override
Add a frame to the animation.
Definition: DatasmithAnimationElementsImpl.h:120
Definition: DatasmithSceneElementsImpl.h:15
virtual FFrameNumber GetStartTime() const override
Get the frame where the subsequence starts.
Definition: DatasmithAnimationElementsImpl.h:156
virtual void AddAnimation(const TSharedRef< IDatasmithBaseAnimationElement > &InAnimation) override
Adds an animation to the level sequence.
Definition: DatasmithAnimationElementsImpl.h:24
virtual const TCHAR * GetFile() const override
Get the output filename, it can be absolute or relative to the scene file.
Definition: DatasmithAnimationElementsImpl.h:15
virtual TSharedPtr< IDatasmithBaseAnimationElement > GetAnimation(int32 InIndex) override
Returns the animation using this index.
Definition: DatasmithAnimationElementsImpl.h:27
virtual FMD5Hash GetFileHash() const override
Return a MD5 hash of the content of the Level Sequence Element.
Definition: DatasmithAnimationElementsImpl.h:18
virtual int32 GetDuration() const override
Get the subsequence duration in number of frames.
Definition: DatasmithAnimationElementsImpl.h:166
virtual EDatasmithCurveInterpMode GetCurveInterpMode() const override
Get the interpolation mode of the animation.
Definition: DatasmithAnimationElementsImpl.h:128
virtual void SetCurveInterpMode(EDatasmithCurveInterpMode InCurveInterpMode) override
Set the interpolation mode of the animation.
Definition: DatasmithAnimationElementsImpl.h:123
virtual const FDatasmithVisibilityFrameInfo & GetFrame(int32 Index) const override
Return the frame of the animation at the given index or an invalid frame if the index was out of boun...
Definition: DatasmithAnimationElementsImpl.h:133
virtual void SetTimeScale(float InTimeScale) override
Set the time scale used for the subsequence.
Definition: DatasmithAnimationElementsImpl.h:181
virtual float GetTimeScale() const override
Get the time scale used for the subsequence.
Definition: DatasmithAnimationElementsImpl.h:176
virtual void RemoveFrame(int32 Index) override
Remove the frame at the given index from the animation.
Definition: DatasmithAnimationElementsImpl.h:138
virtual void RemoveAnimation(const TSharedRef< IDatasmithBaseAnimationElement > &InAnimation) override
Removes an animation from the level sequence.
Definition: DatasmithAnimationElementsImpl.h:32
virtual void SetFileHash(FMD5Hash Hash) override
Set the MD5 hash of the Level Sequence file.
Definition: DatasmithAnimationElementsImpl.h:19
Definition: DatasmithAnimationElementsImpl.h:115
virtual void SetSubsequence(TWeakPtr< IDatasmithLevelSequenceElement > InSubsequence) override
Set the subsequence that this element references.
Definition: DatasmithAnimationElementsImpl.h:191
Definition: DatasmithAnimationElementsImpl.h:151
virtual TWeakPtr< IDatasmithLevelSequenceElement > GetSubsequence() const override
Get a pointer to the subsequence that this element references.
Definition: DatasmithAnimationElementsImpl.h:186
virtual void SetFile(const TCHAR *InFile) override
Set the output filename, it can be absolute or relative to the scene file.
Definition: DatasmithAnimationElementsImpl.h:16
virtual int32 GetAnimationsCount() const override
Returns the number of animations in the level sequence.
Definition: DatasmithAnimationElementsImpl.h:25
virtual void SetDuration(int32 InDuration) override
Set the subsequence duration in number of frames.
Definition: DatasmithAnimationElementsImpl.h:171