ISpriteFrame[] ParseFrames(Stream s) { var start = s.Position; var templateWidth = s.ReadUInt32(); var templateHeight = s.ReadUInt32(); var tileWidth = s.ReadInt32(); var tileHeight = s.ReadInt32(); var size = new Size(tileWidth, tileHeight); var offsets = new uint[templateWidth * templateHeight]; for (var i = 0; i < offsets.Length; i++) { offsets[i] = s.ReadUInt32(); } // Depth information are stored as a second set of frames (like split shadows) var stride = offsets.Length; var tiles = new ISpriteFrame[stride * 2]; for (var j = 0; j < templateHeight; j++) { for (var i = 0; i < templateWidth; i++) { var k = j * templateWidth + i; s.Position = offsets[k]; var frame = new TmpTSFrame(s, size, i, j); tiles[k] = frame; tiles[k + stride] = new TmpTSDepthFrame(frame); } } s.Position = start; return(tiles); }
ISpriteFrame[] ParseFrames(Stream s) { var start = s.Position; var templateWidth = s.ReadUInt32(); var templateHeight = s.ReadUInt32(); var tileWidth = s.ReadInt32(); var tileHeight = s.ReadInt32(); var size = new Size(tileWidth, tileHeight); var offsets = new uint[templateWidth * templateHeight]; for (var i = 0; i < offsets.Length; i++) offsets[i] = s.ReadUInt32(); // Depth information are stored as a second set of frames (like split shadows) var stride = offsets.Length; var tiles = new ISpriteFrame[stride * 2]; for (var j = 0; j < templateHeight; j++) { for (var i = 0; i < templateWidth; i++) { var k = j * templateWidth + i; s.Position = offsets[k]; var frame = new TmpTSFrame(s, size, i, j); tiles[k] = frame; tiles[k + stride] = new TmpTSDepthFrame(frame); } } s.Position = start; return tiles; }