public static void Read(ResFileSwitchLoader loader, FogAnim fogAnim) { if (loader.ResFile.VersionMajor2 == 9) { fogAnim.Flags = loader.ReadEnum <FogAnimFlags>(true); loader.Seek(2); } else { loader.LoadHeaderBlock(); } fogAnim.Name = loader.LoadString(); long CurveArrayOffset = loader.ReadInt64(); fogAnim.BaseData = loader.LoadCustom(() => new FogAnimData(loader)); fogAnim.UserData = loader.LoadDictValues <UserData>(); fogAnim.DistanceAttnFuncName = loader.LoadString(); ushort numUserData = 0; byte numCurve = 0; if (loader.ResFile.VersionMajor2 == 9) { fogAnim.FrameCount = loader.ReadInt32(); numCurve = loader.ReadByte(); fogAnim.DistanceAttnFuncIndex = loader.ReadSByte(); numUserData = loader.ReadUInt16(); fogAnim.BakedSize = loader.ReadUInt32(); loader.Seek(4); } else { fogAnim.Flags = loader.ReadEnum <FogAnimFlags>(true); loader.Seek(2); fogAnim.FrameCount = loader.ReadInt32(); numCurve = loader.ReadByte(); fogAnim.DistanceAttnFuncIndex = loader.ReadSByte(); numUserData = loader.ReadUInt16(); fogAnim.BakedSize = loader.ReadUInt32(); } fogAnim.Curves = loader.LoadList <AnimCurve>(numCurve); }