internal static StageObjects ReadModern(EndianBinaryReader reader) { StageObjects objects = default; objects.Ground = StageObjectInfo.ReadModern(reader); objects.Sky = StageObjectInfo.ReadModern(reader); objects.Shadow = StageObjectInfo.ReadModern(reader); objects.Reflect = StageObjectInfo.ReadModern(reader); objects.Refract = StageObjectInfo.ReadModern(reader); return(objects); }
internal void Read(EndianBinaryReader reader, BinaryFormat format) { if (format == BinaryFormat.F2nd || format == BinaryFormat.X) { Id = ( uint )reader.ReadUInt64(); Name = reader.ReadStringOffset(StringBinaryFormat.NullTerminated); Auth3dName = reader.ReadStringOffset(StringBinaryFormat.NullTerminated); Objects = StageObjects.ReadModern(reader); LensShaftInvScale = reader.ReadSingle(); Field00 = reader.ReadUInt32(); RenderTextureId = reader.ReadUInt32(); RenderTextureIdFlag = reader.ReadUInt32(); MovieTextureId = reader.ReadUInt32(); MovieTextureIdFlag = reader.ReadUInt32(); Field04 = reader.ReadUInt32(); Field04Flag = reader.ReadUInt32(); Field05 = reader.ReadUInt32(); Field05Flag = reader.ReadUInt32(); Field06 = reader.ReadUInt32(); Field06Flag = reader.ReadUInt32(); Field07 = reader.ReadUInt32(); Field07Flag = reader.ReadUInt32(); Field08 = reader.ReadUInt32(); Field09 = reader.ReadUInt32(); Field10 = reader.ReadUInt32(); if (format == BinaryFormat.X) { reader.Seek(4, SeekOrigin.Current); } Field11 = reader.ReadOffset(); Field12 = reader.ReadOffset(); RingRectangleX = reader.ReadSingle(); RingRectangleY = reader.ReadSingle(); RingRectangleWidth = reader.ReadSingle(); RingRectangleHeight = reader.ReadSingle(); RingRingHeight = reader.ReadSingle(); RingOutHeight = reader.ReadSingle(); if (format == BinaryFormat.X) { Field13 = reader.ReadUInt32(); } ReadStageEffects(reader); if (format == BinaryFormat.X) { reader.Seek(4, SeekOrigin.Current); } uint auth3dIdsCount = reader.ReadUInt32(); long auth3dIdsOffset = reader.ReadOffset(); reader.ReadAtOffset(auth3dIdsOffset, () => { for (int i = 0; i < auth3dIdsCount; i++) { Auth3dIds.Add(reader.ReadUInt32()); } }); if (format != BinaryFormat.X) { reader.Seek(4, SeekOrigin.Current); } } else { Name = reader.ReadStringOffset(StringBinaryFormat.NullTerminated); Auth3dName = reader.ReadStringOffset(StringBinaryFormat.NullTerminated); ObjectSetID = reader.ReadUInt32(); Objects = StageObjects.ReadClassic(reader); LensFlareTexture = reader.ReadUInt32(); LensShaftTexture = reader.ReadUInt32(); LensGhostTexture = reader.ReadUInt32(); LensShaftInvScale = reader.ReadSingle(); Field00 = reader.ReadUInt32(); RenderTextureId = reader.ReadUInt32(); if (format > BinaryFormat.DT) { MovieTextureId = reader.ReadUInt32(); } CollisionFilePath = reader.ReadStringOffset(StringBinaryFormat.NullTerminated); ReflectType = reader.ReadUInt32(); RefractEnable = reader.ReadUInt32() != 0; reader.ReadAtOffset(reader.ReadInt32(), () => Reflect = StageReflect.Read(reader)); reader.ReadAtOffset(reader.ReadInt32(), () => Refract = StageRefract.Read(reader)); if (format == BinaryFormat.FT) { Flags = (StageFlags)reader.ReadUInt32(); } RingRectangleX = reader.ReadSingle(); RingRectangleY = reader.ReadSingle(); RingRectangleWidth = reader.ReadSingle(); RingRectangleHeight = reader.ReadSingle(); RingRingHeight = reader.ReadSingle(); RingOutHeight = reader.ReadSingle(); } }