Add support for multiple media events on audio, postfx and camera tracks in Scene Animations

#519
This commit is contained in:
Wojtek Figat
2021-09-21 17:21:39 +02:00
parent f547e44d3d
commit 0ec16de569
16 changed files with 479 additions and 331 deletions

View File

@@ -129,24 +129,23 @@ public:
}
};
struct Media
{
int32 StartFrame;
int32 DurationFrames;
};
struct PostProcessMaterialTrack
{
struct Data
{
/// <summary>
/// The PostFx material asset ID.
/// </summary>
Guid AssetID;
};
/// <summary>
/// The start frame of the media play begin.
/// </summary>
int32 StartFrame;
/// <summary>
/// The total duration of the media playback in the timeline sequence frames amount.
/// </summary>
int32 DurationFrames;
struct Runtime
{
int32 Count;
Media* Media;
};
};
@@ -154,19 +153,8 @@ public:
{
struct Data
{
/// <summary>
/// The scene animation asset ID.
/// </summary>
Guid AssetID;
/// <summary>
/// The start frame of the media play begin.
/// </summary>
int32 StartFrame;
/// <summary>
/// The total duration of the media playback in the timeline sequence frames amount.
/// </summary>
int32 DurationFrames;
};
@@ -185,57 +173,36 @@ public:
struct Data
{
/// <summary>
/// The start frame of the media play begin.
/// </summary>
int32 StartFrame;
/// <summary>
/// The total duration of the media playback in the timeline sequence frames amount.
/// </summary>
int32 DurationFrames;
/// <summary>
/// The gradient stops count.
/// </summary>
int32 GradientStopsCount;
};
struct Runtime
{
/// <summary>
/// The pointer to the gradient stops array (items count is GradientStopsCount).
/// </summary>
GradientStop* GradientStops;
};
};
struct AudioTrack
{
struct Media
{
int32 StartFrame;
int32 DurationFrames;
float Offset;
};
struct Data
{
/// <summary>
/// The audio clip asset ID.
/// </summary>
Guid AssetID;
/// <summary>
/// The start frame of the media play begin.
/// </summary>
int32 StartFrame;
/// <summary>
/// The total duration of the media playback in the timeline sequence frames amount.
/// </summary>
int32 DurationFrames;
};
struct Runtime
{
/// <summary>
/// The index of the volume track. If not used then value is -1. Assigned on load.
/// </summary>
int32 VolumeTrackIndex;
int32 Count;
Media* Media;
};
};
@@ -245,22 +212,12 @@ public:
struct Data
{
/// <summary>
/// The keyframes count.
/// </summary>
int32 KeyframesCount;
};
struct Runtime
{
/// <summary>
/// The keyframes count.
/// </summary>
int32 KeyframesCount;
/// <summary>
/// The keyframes array (items count is KeyframesCount).
/// </summary>
BezierCurveKeyframe<float>* Keyframes;
};
};
@@ -269,9 +226,6 @@ public:
{
struct Data
{
/// <summary>
/// The object ID.
/// </summary>
Guid ID;
};
@@ -306,37 +260,15 @@ public:
{
struct Data
{
/// <summary>
/// The property value data size (in bytes).
/// </summary>
int32 ValueSize;
/// <summary>
/// The name length.
/// </summary>
int32 PropertyNameLength;
/// <summary>
/// The typename length.
/// </summary>
int32 PropertyTypeNameLength;
};
struct Runtime
{
/// <summary>
/// The property value data size (in bytes).
/// </summary>
int32 ValueSize;
/// <summary>
/// The name of the property (just a member name).
/// </summary>
char* PropertyName;
/// <summary>
/// The typename of the property value (fullname including namespace but not assembly).
/// </summary>
char* PropertyTypeName;
};
};
@@ -345,17 +277,11 @@ public:
{
struct Data : PropertyTrack::Data
{
/// <summary>
/// The keyframes count.
/// </summary>
int32 KeyframesCount;
};
struct Runtime : PropertyTrack::Runtime
{
/// <summary>
/// The keyframes count.
/// </summary>
int32 KeyframesCount;
/// <summary>
@@ -382,22 +308,12 @@ public:
struct Data : PropertyTrack::Data
{
/// <summary>
/// The keyframes count.
/// </summary>
int32 KeyframesCount;
};
struct Runtime : PropertyTrack::Runtime
{
/// <summary>
/// The cached curve data type.
/// </summary>
DataTypes DataType;
/// <summary>
/// The keyframes count.
/// </summary>
int32 KeyframesCount;
/// <summary>
@@ -411,17 +327,11 @@ public:
{
struct Data : PropertyTrack::Data
{
/// <summary>
/// The keyframes count.
/// </summary>
int32 KeyframesCount;
};
struct Runtime : PropertyTrack::Runtime
{
/// <summary>
/// The keyframes count.
/// </summary>
int32 KeyframesCount;
// ..followed by the keyframes times and the values arrays (separate)
@@ -486,19 +396,12 @@ public:
{
struct Data : ObjectTrack::Data
{
/// <summary>
/// The start frame of the media play begin.
/// </summary>
int32 StartFrame;
/// <summary>
/// The total duration of the media playback in the timeline sequence frames amount.
/// </summary>
int32 DurationFrames;
};
struct Runtime : ObjectTrack::Runtime
{
int32 Count;
Media* Media;
};
};
@@ -534,11 +437,7 @@ public:
/// <summary>
/// Gets the animation duration (in seconds).
/// </summary>
/// <returns>The animation duration (in seconds).</returns>
API_PROPERTY() FORCE_INLINE float GetDuration() const
{
return DurationFrames / FramesPerSecond;
}
API_PROPERTY() float GetDuration() const;
public: