public MovieSceneFloatChannel(FAssetArchive Ar) { PreInfinityExtrap = Ar.Read <ERichCurveExtrapolation>(); PostInfinityExtrap = Ar.Read <ERichCurveExtrapolation>(); // int CurrentSerializedElementSize = Marshal.SizeOf(typeof(FFrameNumber)); // int SerializedElementSize = Ar.Read<int>(); // if (SerializedElementSize != CurrentSerializedElementSize) // { // Times = Ar.ReadArray<FFrameNumber>(); // } // CurrentSerializedElementSize = Marshal.SizeOf(typeof(FMovieSceneFloatValue)); // SerializedElementSize = Ar.Read<int>(); // if (SerializedElementSize != CurrentSerializedElementSize) // { // Values = Ar.ReadArray<FMovieSceneFloatValue>(); // } DefaultValue = Ar.Read <float>(); bHasDefaultValue = Ar.ReadBoolean(); TickResolution = Ar.Read <FFrameRate>(); }
public FMovieSceneFloatChannel(FAssetArchive Ar) { if (FSequencerObjectVersion.Get(Ar) < FSequencerObjectVersion.Type.SerializeFloatChannelCompletely) // && FFortniteMainBranchObjectVersion.Get(Ar) < FFortniteMainBranchObjectVersion.Type.SerializeFloatChannelShowCurve { PreInfinityExtrap = ERichCurveExtrapolation.RCCE_None; PostInfinityExtrap = ERichCurveExtrapolation.RCCE_None; Times = Array.Empty <FFrameNumber>(); Values = Array.Empty <FMovieSceneFloatValue>(); DefaultValue = 0; bHasDefaultValue = false; TickResolution = default; bShowCurve = false; return; } PreInfinityExtrap = Ar.Read <ERichCurveExtrapolation>(); PostInfinityExtrap = Ar.Read <ERichCurveExtrapolation>(); var CurrentSerializedElementSize = Unsafe.SizeOf <FFrameNumber>(); var SerializedElementSize = Ar.Read <int>(); if (SerializedElementSize == CurrentSerializedElementSize) { Times = Ar.ReadArray <FFrameNumber>(); } else { var ArrayNum = Ar.Read <int>(); if (ArrayNum > 0) { var padding = SerializedElementSize - CurrentSerializedElementSize; Times = new FFrameNumber[ArrayNum]; for (var i = 0; i < ArrayNum; i++) { Ar.Position += padding; Times[i] = Ar.Read <FFrameNumber>(); //Ar.Position += padding; TODO check this } } else { Times = Array.Empty <FFrameNumber>(); } } CurrentSerializedElementSize = Unsafe.SizeOf <FMovieSceneFloatValue>(); SerializedElementSize = Ar.Read <int>(); if (SerializedElementSize == CurrentSerializedElementSize) { Values = Ar.ReadArray <FMovieSceneFloatValue>(); } else { var ArrayNum = Ar.Read <int>(); if (ArrayNum > 0) { var padding = SerializedElementSize - CurrentSerializedElementSize; Values = new FMovieSceneFloatValue[ArrayNum]; for (var i = 0; i < ArrayNum; i++) { Ar.Position += padding; Values[i] = Ar.Read <FMovieSceneFloatValue>(); //Ar.Position += padding; TODO check this } } else { Values = Array.Empty <FMovieSceneFloatValue>(); } } DefaultValue = Ar.Read <float>(); bHasDefaultValue = Ar.ReadBoolean(); TickResolution = Ar.Read <FFrameRate>(); bShowCurve = FFortniteMainBranchObjectVersion.Get(Ar) >= FFortniteMainBranchObjectVersion.Type.SerializeFloatChannelShowCurve && Ar.ReadBoolean(); // bShowCurve should still only be assigned while in editor }