diff --git a/Blarg.GameFramework/Blarg.GameFramework.csproj b/Blarg.GameFramework/Blarg.GameFramework.csproj
index ed44a5e..cc88476 100644
--- a/Blarg.GameFramework/Blarg.GameFramework.csproj
+++ b/Blarg.GameFramework/Blarg.GameFramework.csproj
@@ -218,6 +218,7 @@
+
@@ -248,6 +249,7 @@
+
diff --git a/Blarg.GameFramework/TileMap/TileDataSerializer.cs b/Blarg.GameFramework/TileMap/TileDataSerializer.cs
new file mode 100644
index 0000000..aca76b2
--- /dev/null
+++ b/Blarg.GameFramework/TileMap/TileDataSerializer.cs
@@ -0,0 +1,41 @@
+using System;
+using System.IO;
+
+namespace Blarg.GameFramework.TileMap
+{
+ public static class TileDataSerializer
+ {
+ public static void Serialize(Tile src, BinaryWriter writer)
+ {
+ writer.Write(src.TileIndex);
+ writer.Write(src.Flags);
+ writer.Write(src.TileLight);
+ writer.Write(src.SkyLight);
+ writer.Write(src.Rotation);
+ writer.Write(src.ParentTileOffsetX);
+ writer.Write(src.ParentTileOffsetY);
+ writer.Write(src.ParentTileOffsetZ);
+ writer.Write(src.ParentTileWidth);
+ writer.Write(src.ParentTileHeight);
+ writer.Write(src.ParentTileDepth);
+ writer.Write(src.Color);
+ }
+
+ public static void Deserialize(BinaryReader reader, Tile dest)
+ {
+ dest.TileIndex = reader.ReadInt16();
+ dest.Flags = reader.ReadInt16();
+ dest.TileLight = reader.ReadByte();
+ dest.SkyLight = reader.ReadByte();
+ dest.Rotation = reader.ReadByte();
+ dest.ParentTileOffsetX = reader.ReadByte();
+ dest.ParentTileOffsetY = reader.ReadByte();
+ dest.ParentTileOffsetZ = reader.ReadByte();
+ dest.ParentTileWidth = reader.ReadByte();
+ dest.ParentTileHeight = reader.ReadByte();
+ dest.ParentTileDepth = reader.ReadByte();
+ dest.Color = reader.ReadInt32();
+ }
+ }
+}
+