Exemple #1
0
        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
        }