Refactor raw data ReadSttream and WriteStream to have easier to use API with more features
This commit is contained in:
@@ -148,7 +148,7 @@ Asset::LoadResult SceneAnimation::load()
|
||||
break;
|
||||
case Track::Types::PostProcessMaterial:
|
||||
{
|
||||
const auto trackData = stream.Read<PostProcessMaterialTrack::Data>();
|
||||
const auto trackData = stream.Move<PostProcessMaterialTrack::Data>();
|
||||
track.Data = trackData;
|
||||
track.Asset = Content::LoadAsync<MaterialBase>(trackData->AssetID);
|
||||
const auto trackRuntime = _runtimeData.Move<PostProcessMaterialTrack::Runtime>();
|
||||
@@ -157,12 +157,12 @@ Asset::LoadResult SceneAnimation::load()
|
||||
{
|
||||
// [Deprecated on 03.09.2021 expires on 03.09.2023]
|
||||
trackRuntime->Count = 1;
|
||||
trackRuntime->Media = stream.Read<Media>();
|
||||
trackRuntime->Media = stream.Move<Media>();
|
||||
}
|
||||
else
|
||||
{
|
||||
stream.ReadInt32(&trackRuntime->Count);
|
||||
trackRuntime->Media = stream.Read<Media>(trackRuntime->Count);
|
||||
trackRuntime->Media = stream.Move<Media>(trackRuntime->Count);
|
||||
}
|
||||
if (trackData->AssetID.IsValid() && !track.Asset)
|
||||
{
|
||||
@@ -173,7 +173,7 @@ Asset::LoadResult SceneAnimation::load()
|
||||
}
|
||||
case Track::Types::NestedSceneAnimation:
|
||||
{
|
||||
const auto trackData = stream.Read<NestedSceneAnimationTrack::Data>();
|
||||
const auto trackData = stream.Move<NestedSceneAnimationTrack::Data>();
|
||||
track.Data = trackData;
|
||||
track.Asset = Content::LoadAsync<SceneAnimation>(trackData->AssetID);
|
||||
const auto trackRuntime = _runtimeData.Move<NestedSceneAnimationTrack::Runtime>();
|
||||
@@ -189,7 +189,7 @@ Asset::LoadResult SceneAnimation::load()
|
||||
}
|
||||
case Track::Types::ScreenFade:
|
||||
{
|
||||
const auto trackData = stream.Read<ScreenFadeTrack::Data>();
|
||||
const auto trackData = stream.Move<ScreenFadeTrack::Data>();
|
||||
track.Data = trackData;
|
||||
if (trackData->GradientStopsCount < 0)
|
||||
{
|
||||
@@ -198,12 +198,12 @@ Asset::LoadResult SceneAnimation::load()
|
||||
}
|
||||
const auto trackRuntime = _runtimeData.Move<ScreenFadeTrack::Runtime>();
|
||||
track.RuntimeData = trackRuntime;
|
||||
trackRuntime->GradientStops = stream.Read<ScreenFadeTrack::GradientStop>(trackData->GradientStopsCount);
|
||||
trackRuntime->GradientStops = stream.Move<ScreenFadeTrack::GradientStop>(trackData->GradientStopsCount);
|
||||
break;
|
||||
}
|
||||
case Track::Types::Audio:
|
||||
{
|
||||
const auto trackData = stream.Read<AudioTrack::Data>();
|
||||
const auto trackData = stream.Move<AudioTrack::Data>();
|
||||
track.Data = trackData;
|
||||
track.Asset = Content::LoadAsync<AudioClip>(trackData->AssetID);
|
||||
const auto trackRuntime = _runtimeData.Move<AudioTrack::Runtime>();
|
||||
@@ -222,18 +222,18 @@ Asset::LoadResult SceneAnimation::load()
|
||||
else
|
||||
{
|
||||
stream.ReadInt32(&trackRuntime->Count);
|
||||
trackRuntime->Media = stream.Read<AudioTrack::Media>(trackRuntime->Count);
|
||||
trackRuntime->Media = stream.Move<AudioTrack::Media>(trackRuntime->Count);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Track::Types::AudioVolume:
|
||||
{
|
||||
const auto trackData = stream.Read<AudioVolumeTrack::Data>();
|
||||
const auto trackData = stream.Move<AudioVolumeTrack::Data>();
|
||||
track.Data = trackData;
|
||||
const auto trackRuntime = _runtimeData.Move<AudioVolumeTrack::Runtime>();
|
||||
track.RuntimeData = trackRuntime;
|
||||
trackRuntime->KeyframesCount = trackData->KeyframesCount;
|
||||
trackRuntime->Keyframes = stream.Read<BezierCurveKeyframe<float>>(trackData->KeyframesCount);
|
||||
trackRuntime->Keyframes = stream.Move<BezierCurveKeyframe<float>>(trackData->KeyframesCount);
|
||||
if (track.ParentIndex != -1)
|
||||
{
|
||||
if (Tracks[track.ParentIndex].Type == Track::Types::Audio)
|
||||
@@ -250,7 +250,7 @@ Asset::LoadResult SceneAnimation::load()
|
||||
}
|
||||
case Track::Types::Actor:
|
||||
{
|
||||
const auto trackData = stream.Read<ActorTrack::Data>();
|
||||
const auto trackData = stream.Move<ActorTrack::Data>();
|
||||
track.Data = trackData;
|
||||
const auto trackRuntime = _runtimeData.Move<ActorTrack::Runtime>();
|
||||
track.RuntimeData = trackRuntime;
|
||||
@@ -259,7 +259,7 @@ Asset::LoadResult SceneAnimation::load()
|
||||
}
|
||||
case Track::Types::Script:
|
||||
{
|
||||
const auto trackData = stream.Read<ScriptTrack::Data>();
|
||||
const auto trackData = stream.Move<ScriptTrack::Data>();
|
||||
track.Data = trackData;
|
||||
const auto trackRuntime = _runtimeData.Move<ScriptTrack::Runtime>();
|
||||
track.RuntimeData = trackRuntime;
|
||||
@@ -274,33 +274,33 @@ Asset::LoadResult SceneAnimation::load()
|
||||
case Track::Types::KeyframesProperty:
|
||||
case Track::Types::ObjectReferenceProperty:
|
||||
{
|
||||
const auto trackData = stream.Read<KeyframesPropertyTrack::Data>();
|
||||
const auto trackData = stream.Move<KeyframesPropertyTrack::Data>();
|
||||
track.Data = trackData;
|
||||
const auto trackRuntime = _runtimeData.Move<KeyframesPropertyTrack::Runtime>();
|
||||
track.RuntimeData = trackRuntime;
|
||||
track.TrackStateIndex = TrackStatesCount++;
|
||||
trackRuntime->PropertyName = stream.Read<char>(trackData->PropertyNameLength + 1);
|
||||
trackRuntime->PropertyTypeName = stream.Read<char>(trackData->PropertyTypeNameLength + 1);
|
||||
trackRuntime->PropertyName = stream.Move<char>(trackData->PropertyNameLength + 1);
|
||||
trackRuntime->PropertyTypeName = stream.Move<char>(trackData->PropertyTypeNameLength + 1);
|
||||
const int32 keyframesDataSize = trackData->KeyframesCount * (sizeof(float) + trackData->ValueSize);
|
||||
trackRuntime->ValueSize = trackData->ValueSize;
|
||||
trackRuntime->KeyframesCount = trackData->KeyframesCount;
|
||||
trackRuntime->Keyframes = stream.Read(keyframesDataSize);
|
||||
trackRuntime->Keyframes = stream.Move(keyframesDataSize);
|
||||
needsParent = true;
|
||||
break;
|
||||
}
|
||||
case Track::Types::CurveProperty:
|
||||
{
|
||||
const auto trackData = stream.Read<CurvePropertyTrack::Data>();
|
||||
const auto trackData = stream.Move<CurvePropertyTrack::Data>();
|
||||
track.Data = trackData;
|
||||
const auto trackRuntime = _runtimeData.Move<CurvePropertyTrack::Runtime>();
|
||||
track.RuntimeData = trackRuntime;
|
||||
track.TrackStateIndex = TrackStatesCount++;
|
||||
trackRuntime->PropertyName = stream.Read<char>(trackData->PropertyNameLength + 1);
|
||||
trackRuntime->PropertyTypeName = stream.Read<char>(trackData->PropertyTypeNameLength + 1);
|
||||
trackRuntime->PropertyName = stream.Move<char>(trackData->PropertyNameLength + 1);
|
||||
trackRuntime->PropertyTypeName = stream.Move<char>(trackData->PropertyTypeNameLength + 1);
|
||||
const int32 keyframesDataSize = trackData->KeyframesCount * (sizeof(float) + trackData->ValueSize * 3);
|
||||
trackRuntime->ValueSize = trackData->ValueSize;
|
||||
trackRuntime->KeyframesCount = trackData->KeyframesCount;
|
||||
trackRuntime->Keyframes = stream.Read(keyframesDataSize);
|
||||
trackRuntime->Keyframes = stream.Move(keyframesDataSize);
|
||||
trackRuntime->DataType = CurvePropertyTrack::DataTypes::Unknown;
|
||||
trackRuntime->ValueType = CurvePropertyTrack::DataTypes::Unknown;
|
||||
if (StringUtils::Compare(trackRuntime->PropertyTypeName, "System.Single") == 0)
|
||||
@@ -367,13 +367,13 @@ Asset::LoadResult SceneAnimation::load()
|
||||
}
|
||||
case Track::Types::StringProperty:
|
||||
{
|
||||
const auto trackData = stream.Read<StringPropertyTrack::Data>();
|
||||
const auto trackData = stream.Move<StringPropertyTrack::Data>();
|
||||
track.Data = trackData;
|
||||
const auto trackRuntime = (StringPropertyTrack::Runtime*)_runtimeData.Move(sizeof(StringPropertyTrack::Runtime) + sizeof(void*) * 2 * trackData->KeyframesCount);
|
||||
track.RuntimeData = trackRuntime;
|
||||
track.TrackStateIndex = TrackStatesCount++;
|
||||
trackRuntime->PropertyName = stream.Read<char>(trackData->PropertyNameLength + 1);
|
||||
trackRuntime->PropertyTypeName = stream.Read<char>(trackData->PropertyTypeNameLength + 1);
|
||||
trackRuntime->PropertyName = stream.Move<char>(trackData->PropertyNameLength + 1);
|
||||
trackRuntime->PropertyTypeName = stream.Move<char>(trackData->PropertyTypeNameLength + 1);
|
||||
trackRuntime->ValueSize = trackData->ValueSize;
|
||||
trackRuntime->KeyframesCount = trackData->KeyframesCount;
|
||||
const auto keyframesTimes = (float*)((byte*)trackRuntime + sizeof(StringPropertyTrack::Runtime));
|
||||
@@ -383,7 +383,7 @@ Asset::LoadResult SceneAnimation::load()
|
||||
{
|
||||
stream.ReadFloat(&keyframesTimes[j]);
|
||||
stream.ReadInt32(&keyframesLengths[j]);
|
||||
keyframesValues[j] = stream.Read<Char>(keyframesLengths[j]);
|
||||
keyframesValues[j] = stream.Move<Char>(keyframesLengths[j]);
|
||||
}
|
||||
needsParent = true;
|
||||
break;
|
||||
@@ -391,13 +391,13 @@ Asset::LoadResult SceneAnimation::load()
|
||||
case Track::Types::StructProperty:
|
||||
case Track::Types::ObjectProperty:
|
||||
{
|
||||
const auto trackData = stream.Read<StructPropertyTrack::Data>();
|
||||
const auto trackData = stream.Move<StructPropertyTrack::Data>();
|
||||
track.Data = trackData;
|
||||
const auto trackRuntime = _runtimeData.Move<StructPropertyTrack::Runtime>();
|
||||
track.RuntimeData = trackRuntime;
|
||||
track.TrackStateIndex = TrackStatesCount++;
|
||||
trackRuntime->PropertyName = stream.Read<char>(trackData->PropertyNameLength + 1);
|
||||
trackRuntime->PropertyTypeName = stream.Read<char>(trackData->PropertyTypeNameLength + 1);
|
||||
trackRuntime->PropertyName = stream.Move<char>(trackData->PropertyNameLength + 1);
|
||||
trackRuntime->PropertyTypeName = stream.Move<char>(trackData->PropertyTypeNameLength + 1);
|
||||
trackRuntime->ValueSize = trackData->ValueSize;
|
||||
needsParent = true;
|
||||
break;
|
||||
@@ -411,22 +411,22 @@ Asset::LoadResult SceneAnimation::load()
|
||||
stream.ReadInt32(&trackRuntime->EventParamsCount);
|
||||
stream.ReadInt32(&trackRuntime->EventsCount);
|
||||
stream.ReadInt32(&tmp);
|
||||
trackRuntime->EventName = stream.Read<char>(tmp + 1);
|
||||
trackRuntime->EventName = stream.Move<char>(tmp + 1);
|
||||
trackRuntime->EventParamsSize = 0;
|
||||
for (int j = 0; j < trackRuntime->EventParamsCount; j++)
|
||||
{
|
||||
stream.ReadInt32(&trackRuntime->EventParamSizes[j]);
|
||||
trackRuntime->EventParamsSize += trackRuntime->EventParamSizes[j];
|
||||
stream.ReadInt32(&tmp);
|
||||
trackRuntime->EventParamTypes[j] = stream.Read<char>(tmp + 1);
|
||||
trackRuntime->EventParamTypes[j] = stream.Move<char>(tmp + 1);
|
||||
}
|
||||
trackRuntime->DataBegin = stream.Read<byte>(trackRuntime->EventsCount * (sizeof(float) + trackRuntime->EventParamsSize));
|
||||
trackRuntime->DataBegin = stream.Move<byte>(trackRuntime->EventsCount * (sizeof(float) + trackRuntime->EventParamsSize));
|
||||
needsParent = true;
|
||||
break;
|
||||
}
|
||||
case Track::Types::CameraCut:
|
||||
{
|
||||
const auto trackData = stream.Read<CameraCutTrack::Data>();
|
||||
const auto trackData = stream.Move<CameraCutTrack::Data>();
|
||||
track.Data = trackData;
|
||||
const auto trackRuntime = _runtimeData.Move<CameraCutTrack::Runtime>();
|
||||
track.RuntimeData = trackRuntime;
|
||||
@@ -435,12 +435,12 @@ Asset::LoadResult SceneAnimation::load()
|
||||
{
|
||||
// [Deprecated on 03.09.2021 expires on 03.09.2023]
|
||||
trackRuntime->Count = 1;
|
||||
trackRuntime->Media = stream.Read<Media>();
|
||||
trackRuntime->Media = stream.Move<Media>();
|
||||
}
|
||||
else
|
||||
{
|
||||
stream.ReadInt32(&trackRuntime->Count);
|
||||
trackRuntime->Media = stream.Read<Media>(trackRuntime->Count);
|
||||
trackRuntime->Media = stream.Move<Media>(trackRuntime->Count);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user