public GMPointerList <AssetInstance> NineSlices; // apparently removed in 2.3.2 public void Serialize(GMDataWriter writer) { writer.WritePointer(LegacyTiles); writer.WritePointer(Sprites); if (writer.VersionInfo.IsNumberAtLeast(2, 3)) { writer.WritePointer(Sequences); if (!writer.VersionInfo.IsNumberAtLeast(2, 3, 2)) { writer.WritePointer(NineSlices); } } writer.WriteObjectPointer(LegacyTiles); LegacyTiles.Serialize(writer); writer.WriteObjectPointer(Sprites); Sprites.Serialize(writer); if (writer.VersionInfo.IsNumberAtLeast(2, 3)) { writer.WriteObjectPointer(Sequences); Sequences.Serialize(writer); if (!writer.VersionInfo.IsNumberAtLeast(2, 3, 2)) { if (NineSlices == null) { writer.Write(0); // Even if it's 2.3.2 but we don't detect it, this shouldn't break format... probably } else { writer.WriteObjectPointer(NineSlices); NineSlices.Serialize(writer); } } } }
public override void Serialize(GMDataWriter writer) { base.Serialize(writer); if (List != null) { if (writer.VersionInfo.FormatID <= 14) { List.Serialize(writer); } else { List.Serialize(writer, (GMDataWriter writer, int index, int count) => { if (index == 0) { // Serialize bytecode before entries foreach (GMCode c in List) { if (!writer.PointerOffsets.ContainsKey(c.BytecodeEntry)) { writer.WriteObjectPointer(c.BytecodeEntry); c.BytecodeEntry.Serialize(writer); } } } }); } } }
public void Serialize(GMDataWriter writer) { writer.WritePointerString(Name); writer.WritePointer(TexturePageIDs); writer.WritePointer(SpriteIDs); writer.WritePointer(SpineSpriteIDs); writer.WritePointer(FontIDs); writer.WritePointer(TilesetIDs); writer.WriteObjectPointer(TexturePageIDs); TexturePageIDs.Serialize(writer); writer.WriteObjectPointer(SpriteIDs); SpriteIDs.Serialize(writer); writer.WriteObjectPointer(SpineSpriteIDs); SpineSpriteIDs.Serialize(writer); writer.WriteObjectPointer(FontIDs); FontIDs.Serialize(writer); writer.WriteObjectPointer(TilesetIDs); TilesetIDs.Serialize(writer); }
public override void Serialize(GMDataWriter writer) { base.Serialize(writer); writer.Write(List.Count); foreach (GMShader s in List) { writer.WritePointer(s); } foreach (GMShader s in List) { writer.WriteObjectPointer(s); s.Serialize(writer); } }
public void Serialize(GMDataWriter writer) { writer.Pad(128); writer.WriteObjectPointer(this); writer.Write(Data); }
public void Serialize(GMDataWriter writer) { writer.WritePointerString(Name); writer.Write(Width); writer.Write(Height); writer.Write(MarginLeft); writer.Write(MarginRight); writer.Write(MarginBottom); writer.Write(MarginTop); writer.WriteWideBoolean(Transparent); writer.WriteWideBoolean(Smooth); writer.WriteWideBoolean(Preload); writer.Write(BBoxMode); writer.Write((int)SepMasks); writer.Write(OriginX); writer.Write(OriginY); if (SpecialOrGMS2) { // Special/GMS2 sprite type writer.Write(-1); if (writer.VersionInfo.IsNumberAtLeast(2, 3, 2)) { writer.Write(3); } else if (writer.VersionInfo.IsNumberAtLeast(2, 3)) { writer.Write(2); } else { writer.Write(1); } writer.Write((int)S_SpriteType); if (writer.VersionInfo.IsNumberAtLeast(2)) { writer.Write(GMS2_PlaybackSpeed); writer.Write((int)GMS2_PlaybackSpeedType); if (writer.VersionInfo.IsNumberAtLeast(2, 3)) { writer.WritePointer(GMS2_3_Sequence); if (writer.VersionInfo.IsNumberAtLeast(2, 3, 2)) { writer.WritePointer(GMS2_3_2_NineSlice); } } } switch (S_SpriteType) { case SpriteType.Normal: TextureItems.Serialize(writer); WriteMaskData(writer); break; case SpriteType.SWF: writer.Write(8); TextureItems.Serialize(writer); writer.Pad(4); writer.Write(S_Buffer); break; case SpriteType.Spine: writer.Pad(4); writer.Write(S_Buffer); break; } if (GMS2_3_Sequence != null) { writer.Pad(4); writer.WriteObjectPointer(GMS2_3_Sequence); GMS2_3_Sequence.Serialize(writer); } if (GMS2_3_2_NineSlice != null) { writer.Pad(4); writer.WriteObjectPointer(GMS2_3_2_NineSlice); GMS2_3_2_NineSlice.Serialize(writer); } } else { // Normal sprite type TextureItems.Serialize(writer); WriteMaskData(writer); } }
public void Serialize(GMDataWriter writer) { writer.WritePointerString(Name); writer.Write((uint)Type | 0x80000000u); writer.WritePointerString(GLSL_ES_Vertex); writer.WritePointerString(GLSL_ES_Fragment); writer.WritePointerString(GLSL_Vertex); writer.WritePointerString(GLSL_Fragment); writer.WritePointerString(HLSL9_Vertex); writer.WritePointerString(HLSL9_Fragment); writer.WritePointer(HLSL11_VertexBuffer); writer.WritePointer(HLSL11_PixelBuffer); writer.Write(VertexAttributes.Count); foreach (GMString s in VertexAttributes) { writer.WritePointerString(s); } writer.Write(Version); writer.WritePointer(PSSL_VertexBuffer); writer.Write((PSSL_VertexBuffer != null) ? PSSL_VertexBuffer.Buffer.Length : 0); writer.WritePointer(PSSL_PixelBuffer); writer.Write((PSSL_PixelBuffer != null) ? PSSL_PixelBuffer.Buffer.Length : 0); writer.WritePointer(CG_PSV_VertexBuffer); writer.Write((CG_PSV_VertexBuffer != null) ? CG_PSV_VertexBuffer.Buffer.Length : 0); writer.WritePointer(CG_PSV_PixelBuffer); writer.Write((CG_PSV_PixelBuffer != null) ? CG_PSV_PixelBuffer.Buffer.Length : 0); if (Version >= 2) { writer.WritePointer(CG_PS3_VertexBuffer); writer.Write((CG_PS3_VertexBuffer != null) ? CG_PS3_VertexBuffer.Buffer.Length : 0); writer.WritePointer(CG_PS3_PixelBuffer); writer.Write((CG_PS3_PixelBuffer != null) ? CG_PS3_PixelBuffer.Buffer.Length : 0); } if (HLSL11_VertexBuffer != null) { writer.Pad(8); writer.WriteObjectPointer(HLSL11_VertexBuffer); HLSL11_VertexBuffer.Serialize(writer); } if (HLSL11_PixelBuffer != null) { writer.Pad(8); writer.WriteObjectPointer(HLSL11_PixelBuffer); HLSL11_PixelBuffer.Serialize(writer); } if (PSSL_VertexBuffer != null) { writer.Pad(8); writer.WriteObjectPointer(PSSL_VertexBuffer); PSSL_VertexBuffer.Serialize(writer); } if (PSSL_PixelBuffer != null) { writer.Pad(8); writer.WriteObjectPointer(PSSL_PixelBuffer); PSSL_PixelBuffer.Serialize(writer); } if (CG_PSV_VertexBuffer != null) { writer.Pad(8); writer.WriteObjectPointer(CG_PSV_VertexBuffer); CG_PSV_VertexBuffer.Serialize(writer); } if (CG_PSV_PixelBuffer != null) { writer.Pad(8); writer.WriteObjectPointer(CG_PSV_PixelBuffer); CG_PSV_PixelBuffer.Serialize(writer); } if (Version >= 2) { if (CG_PS3_VertexBuffer != null) { writer.Pad(16); writer.WriteObjectPointer(CG_PS3_VertexBuffer); CG_PS3_VertexBuffer.Serialize(writer); } if (CG_PS3_PixelBuffer != null) { writer.Pad(8); writer.WriteObjectPointer(CG_PS3_PixelBuffer); CG_PS3_PixelBuffer.Serialize(writer); } } }
public void Serialize(GMDataWriter writer) { writer.WritePointerString(Name); writer.WritePointerString(Caption); writer.Write(Width); writer.Write(Height); writer.Write(Speed); writer.WriteWideBoolean(Persistent); writer.Write(BackgroundColor); writer.WriteWideBoolean(DrawBackgroundColor); writer.Write(CreationCodeID); int flags = (int)Flags; if (writer.VersionInfo.IsNumberAtLeast(2, 3)) { flags |= 0x30000; } else if (writer.VersionInfo.IsNumberAtLeast(2)) { flags |= 0x20000; } writer.Write(flags); writer.WritePointer(Backgrounds); writer.WritePointer(Views); writer.WritePointer(GameObjects); writer.WritePointer(Tiles); writer.WriteWideBoolean(Physics); writer.Write(Top); writer.Write(Left); writer.Write(Right); writer.Write(Bottom); writer.Write(GravityX); writer.Write(GravityY); writer.Write(PixelsToMeters); int sequencePatch = -1; if (writer.VersionInfo.IsNumberAtLeast(2)) { writer.WritePointer(Layers); if (writer.VersionInfo.IsNumberAtLeast(2, 3)) { sequencePatch = writer.Offset; writer.Write(0); } } writer.WriteObjectPointer(Backgrounds); Backgrounds.Serialize(writer); writer.WriteObjectPointer(Views); Views.Serialize(writer); writer.WriteObjectPointer(GameObjects); GameObjects.Serialize(writer); writer.WriteObjectPointer(Tiles); Tiles.Serialize(writer); if (writer.VersionInfo.IsNumberAtLeast(2)) { writer.WriteObjectPointer(Layers); Layers.Serialize(writer); if (writer.VersionInfo.IsNumberAtLeast(2, 3)) { // Patch and write sequence IDs int returnTo = writer.Offset; writer.Offset = sequencePatch; writer.Write(returnTo); writer.Offset = returnTo; writer.Write(SequenceIDs.Count); foreach (int i in SequenceIDs) { writer.Write(i); } } } }