internal override void Write(BinaryWriterEx bw, int id) { long start = bw.Position; bw.ReserveVarint("NameOffset"); bw.WriteByte((byte)Type); bw.WriteByte(0); bw.WriteInt16((short)id); if (bw.VarintLong) { bw.WriteInt32(0); } bw.ReserveVarint("TypeDataOffset"); bw.WriteVarint(0); bw.FillVarint("NameOffset", bw.Position - start); bw.WriteUTF16(MSB.ReambiguateName(Name), true); bw.Pad(bw.VarintSize); if (HasTypeData) { bw.FillVarint("TypeDataOffset", bw.Position - start); WriteTypeData(bw); } else { bw.FillVarint("TypeDataOffset", 0); } }
internal override void Write(BinaryWriterEx bw, int index) { long start = bw.Position; bw.ReserveInt64("NameOffset"); bw.WriteUInt16((ushort)Type); bw.WriteInt16(Index); bw.WriteInt32(0); bw.ReserveInt64("TypeDataOffset"); bw.WriteInt64(0); bw.FillInt64("NameOffset", bw.Position - start); bw.WriteUTF16(MSB.ReambiguateName(Name), true); bw.Pad(8); if (Type == ModelType.Object) { bw.FillInt64("TypeDataOffset", bw.Position - start); bw.WriteInt64(0); } else { bw.FillInt64("TypeDataOffset", 0); } }
internal override void Write(BinaryWriterEx bw, int id) { long start = bw.Position; bw.ReserveInt64("NameOffset"); bw.WriteUInt32((uint)Type); bw.WriteInt32(id); bw.ReserveInt64("SibOffset"); bw.WriteInt32(InstanceCount); bw.WriteInt32(Unk1C); bw.ReserveInt64("TypeDataOffset"); bw.FillInt64("NameOffset", bw.Position - start); bw.WriteUTF16(MSB.ReambiguateName(Name), true); bw.FillInt64("SibOffset", bw.Position - start); bw.WriteUTF16(SibPath, true); bw.Pad(8); if (HasTypeData) { bw.FillInt64("TypeDataOffset", bw.Position - start); WriteTypeData(bw); } else { bw.FillInt64("TypeDataOffset", 0); } }
internal override void Write(BinaryWriterEx bw, int id) { long start = bw.Position; bw.ReserveInt32("NameOffset"); bw.WriteUInt32((uint)Type); bw.WriteInt32(id); bw.WriteInt32(ModelIndex); bw.ReserveInt32("SibOffset"); bw.WriteVector3(Position); bw.WriteVector3(Rotation); bw.WriteVector3(Scale); bw.WriteUInt32s(DrawGroups); bw.WriteUInt32s(DispGroups); bw.ReserveInt32("EntityDataOffset"); bw.ReserveInt32("TypeDataOffset"); bw.WriteInt32(0); long stringsStart = bw.Position; bw.FillInt32("NameOffset", (int)(bw.Position - start)); bw.WriteShiftJIS(MSB.ReambiguateName(Name), true); bw.FillInt32("SibOffset", (int)(bw.Position - start)); bw.WriteShiftJIS(Placeholder, true); bw.Pad(4); if (bw.Position - stringsStart < 0x14) { bw.WritePattern((int)(0x14 - (bw.Position - stringsStart)), 0x00); } bw.FillInt32("EntityDataOffset", (int)(bw.Position - start)); bw.WriteInt32(EntityID); bw.WriteByte(LightID); bw.WriteByte(FogID); bw.WriteByte(ScatterID); bw.WriteByte(LensFlareID); bw.WriteByte(ShadowID); bw.WriteByte(DofID); bw.WriteByte(ToneMapID); bw.WriteByte(ToneCorrectID); bw.WriteByte(LanternID); bw.WriteByte(LodParamID); bw.WriteByte(0); bw.WriteByte(IsShadowSrc); bw.WriteByte(IsShadowDest); bw.WriteByte(IsShadowOnly); bw.WriteByte(DrawByReflectCam); bw.WriteByte(DrawOnlyReflectCam); bw.WriteByte(UseDepthBiasFloat); bw.WriteByte(DisablePointLightEffect); bw.WriteByte(0); bw.WriteByte(0); bw.FillInt32("TypeDataOffset", (int)(bw.Position - start)); }
internal void Write(BinaryWriterEx bw, int id) { long start = bw.Position; bw.ReserveInt64("NameOffset"); bw.WriteUInt32((uint)Type); bw.WriteInt32(id); bw.WriteUInt32((uint)Shape.Type); bw.WriteVector3(Position); bw.WriteVector3(Rotation); bw.WriteInt32(Unk2); bw.ReserveInt64("BaseDataOffset1"); bw.ReserveInt64("BaseDataOffset2"); bw.WriteInt32(-1); bw.WriteUInt32(MapStudioLayer); bw.ReserveInt64("ShapeDataOffset"); bw.ReserveInt64("BaseDataOffset3"); bw.ReserveInt64("TypeDataOffset"); bw.FillInt64("NameOffset", bw.Position - start); bw.WriteUTF16(MSB.ReambiguateName(Name), true); bw.Pad(4); bw.FillInt64("BaseDataOffset1", bw.Position - start); bw.WriteInt16((short)UnkA.Count); bw.WriteInt16s(UnkA); bw.Pad(4); bw.FillInt64("BaseDataOffset2", bw.Position - start); bw.WriteInt16((short)UnkB.Count); bw.WriteInt16s(UnkB); bw.Pad(8); Shape.Write(bw, start); bw.FillInt64("BaseDataOffset3", bw.Position - start); bw.WriteInt32(ActivationPartIndex); bw.WriteInt32(EventEntityID); if (HasTypeData) { WriteSpecific(bw, start); } else { bw.FillInt64("TypeDataOffset", 0); } bw.Pad(8); }
internal override void Write(BinaryWriterEx bw, int id) { long start = bw.Position; bw.ReserveVarint("NameOffset"); bw.WriteByte((byte)Type); bw.WriteByte(0); bw.WriteInt16((short)id); bw.WriteInt16(ModelIndex); bw.WriteInt16(0); bw.WriteVector3(Position); bw.WriteVector3(Rotation); bw.WriteVector3(Scale); bw.WriteUInt32s(DrawGroups); bw.WriteInt32(Unk44); bw.WriteInt32(Unk48); bw.WriteInt32(Unk4C); bw.WriteInt32(Unk50); bw.WriteUInt32s(DispGroups); bw.WriteInt32(Unk64); bw.WriteInt32(0); bw.WriteByte(Unk6C); bw.WriteByte(0); bw.WriteByte(Unk6E); bw.WriteByte(0); bw.ReserveVarint("TypeDataOffset"); if (bw.VarintLong) { bw.WriteInt64(0); } long nameStart = bw.Position; int namePad = bw.VarintLong ? 0x20 : 0x2C; bw.FillVarint("NameOffset", nameStart - start); bw.WriteUTF16(MSB.ReambiguateName(Name), true); if (bw.Position - nameStart < namePad) { bw.Position += namePad - (bw.Position - nameStart); } bw.Pad(bw.VarintSize); bw.FillVarint("TypeDataOffset", bw.Position - start); WriteTypeData(bw); }
internal override void Write(BinaryWriterEx bw, int id) { long start = bw.Position; bw.ReserveInt32("NameOffset"); bw.WriteUInt32((uint)Type); bw.WriteInt32(ID); bw.ReserveInt32("SibOffset"); bw.WriteInt32(InstanceCount); bw.WriteInt32(0); bw.WriteInt32(0); bw.WriteInt32(0); bw.FillInt32("NameOffset", (int)(bw.Position - start)); bw.WriteShiftJIS(MSB.ReambiguateName(Name), true); bw.FillInt32("SibOffset", (int)(bw.Position - start)); bw.WriteShiftJIS(Placeholder, true); bw.Pad(4); }
internal override void Write(BinaryWriterEx bw, int id) { long start = bw.Position; bw.ReserveInt32("NameOffset"); bw.WriteUInt32((uint)Type); bw.WriteInt32(id); bw.WriteInt32(ModelIndex); bw.ReserveInt32("SibOffset"); bw.WriteVector3(Position); bw.WriteVector3(Rotation); bw.WriteVector3(Scale); bw.WriteUInt32s(DrawGroups); bw.WriteUInt32s(DispGroups); bw.ReserveInt32("EntityDataOffset"); bw.ReserveInt32("TypeDataOffset"); bw.WriteInt32(0); bw.WriteInt32(0); long stringsStart = bw.Position; bw.FillInt32("NameOffset", (int)(bw.Position - start)); bw.WriteShiftJIS(MSB.ReambiguateName(Name), true); bw.FillInt32("SibOffset", (int)(bw.Position - start)); bw.WriteShiftJIS(SibPath, true); bw.Pad(4); if (bw.Position - stringsStart < 0x10) { bw.WritePattern((int)(0x10 - (bw.Position - stringsStart)), 0x00); } bw.FillInt32("EntityDataOffset", (int)(bw.Position - start)); WriteEntityData(bw); bw.FillInt32("TypeDataOffset", (int)(bw.Position - start)); WriteTypeData(bw); }
internal override void Write(BinaryWriterEx bw, int id) { long start = bw.Position; bw.ReserveInt32("NameOffset"); bw.WriteInt32(0); bw.WriteInt32(id); bw.WriteUInt32((uint)Shape.Type); bw.WriteVector3(Position); bw.WriteVector3(Rotation); bw.ReserveInt32("UnkOffsetA"); bw.ReserveInt32("UnkOffsetB"); bw.ReserveInt32("ShapeDataOffset"); bw.ReserveInt32("EntityDataOffset"); bw.WriteInt32(0); bw.FillInt32("NameOffset", (int)(bw.Position - start)); bw.WriteShiftJIS(MSB.ReambiguateName(Name), true); bw.Pad(4); bw.FillInt32("UnkOffsetA", (int)(bw.Position - start)); bw.WriteInt32(0); bw.FillInt32("UnkOffsetB", (int)(bw.Position - start)); bw.WriteInt32(0); if (Shape.HasShapeData) { bw.FillInt32("ShapeDataOffset", (int)(bw.Position - start)); Shape.WriteShapeData(bw); } else { bw.FillInt32("ShapeDataOffset", 0); } bw.FillInt32("EntityDataOffset", (int)(bw.Position - start)); bw.WriteInt32(EntityID); }
internal override void Write(BinaryWriterEx bw, int index) { long start = bw.Position; bw.ReserveInt64("NameOffset"); bw.WriteUInt16((ushort)Type); bw.WriteInt16((short)index); bw.WriteInt32(ModelIndex); bw.WriteVector3(Position); bw.WriteVector3(Rotation); bw.WriteVector3(Scale); bw.WriteUInt32s(DrawGroups); bw.WriteInt32(Unk44); bw.WriteInt32(Unk48); bw.WriteInt32(Unk4C); bw.WriteInt32(Unk50); bw.WriteUInt32s(DispGroups); bw.WriteInt32(Unk64); bw.WriteInt32(Unk68); bw.WriteInt32(Unk6C); bw.ReserveInt64("TypeDataOffset"); bw.WriteInt64(0); long nameStart = bw.Position; bw.FillInt64("NameOffset", nameStart - start); bw.WriteUTF16(MSB.ReambiguateName(Name), true); if (bw.Position - nameStart < 0x20) { bw.Position += 0x20 - (bw.Position - nameStart); } bw.Pad(8); bw.FillInt64("TypeDataOffset", bw.Position - start); WriteTypeData(bw); }
internal override void Write(BinaryWriterEx bw, int index) { bw.WriteUTF16(MSB.ReambiguateName(Name), true); }
internal override void Write(BinaryWriterEx bw, int id) { long start = bw.Position; bw.ReserveInt64("NameOffset"); bw.WriteUInt32((uint)Type); bw.WriteInt32(id); bw.WriteUInt32((uint)Shape.Type); bw.WriteVector3(Position); bw.WriteVector3(Rotation); bw.WriteInt32(Unk2C); bw.ReserveInt64("BaseDataOffset1"); bw.ReserveInt64("BaseDataOffset2"); bw.WriteInt32(-1); bw.WriteUInt32(MapStudioLayer); bw.ReserveInt64("ShapeDataOffset"); bw.ReserveInt64("BaseDataOffset3"); bw.ReserveInt64("TypeDataOffset"); bw.FillInt64("NameOffset", bw.Position - start); bw.WriteUTF16(MSB.ReambiguateName(Name), true); bw.Pad(4); bw.FillInt64("BaseDataOffset1", bw.Position - start); bw.WriteInt16((short)UnkA.Count); bw.WriteInt16s(UnkA); bw.Pad(4); bw.FillInt64("BaseDataOffset2", bw.Position - start); bw.WriteInt16((short)UnkB.Count); bw.WriteInt16s(UnkB); bw.Pad(8); if (Shape.HasShapeData) { bw.FillInt64("ShapeDataOffset", bw.Position - start); Shape.WriteShapeData(bw); } else { bw.FillInt64("ShapeDataOffset", 0); } bw.FillInt64("BaseDataOffset3", bw.Position - start); bw.WriteInt32(ActivationPartIndex); bw.WriteInt32(EntityID); if (HasTypeData) { if (Type == RegionType.Region23 || Type == RegionType.PartsGroup || Type == RegionType.AutoDrawGroup) { bw.Pad(8); } bw.FillInt64("TypeDataOffset", bw.Position - start); WriteTypeData(bw); } else { bw.FillInt64("TypeDataOffset", 0); } bw.Pad(8); }