@@ -49,21 +49,26 @@ function S.loadbundle(filename)
4949 return b
5050end
5151
52- -- todo: packing should be out of loader
5352function S .pack ()
5453 local texid , n = sprite_bank :pack ()
55-
56- local r = sprite_bank :altas (texid )
57- for id ,v in pairs (r ) do
58- local x = v >> 32
59- local y = v & 0xffffffff
60- local obj = sprite [id ]
61- local c = filecache [obj .filename ]
62- local data = image .canvas (c .data , c .w , c .h , obj .cx , obj .cy , obj .cw , obj .ch )
63- local w , h , ptr = image .canvas_size (data )
64- r [id ] = { id = id , data = ptr , x = x , y = y , w = w , h = h , stride = c .w * 4 , dx = obj .x , dy = obj .y }
54+ -- upload rects into n textures, [texid, texid + n)
55+ local results = {}
56+ local texid_from = texid
57+ for i = 1 , n do
58+ local r = sprite_bank :altas (texid )
59+ for id ,v in pairs (r ) do
60+ local x = v >> 32
61+ local y = v & 0xffffffff
62+ local obj = sprite [id ]
63+ local c = filecache [obj .filename ]
64+ local data = image .canvas (c .data , c .w , c .h , obj .cx , obj .cy , obj .cw , obj .ch )
65+ local w , h , ptr = image .canvas_size (data )
66+ r [id ] = { id = id , data = ptr , x = x , y = y , w = w , h = h , stride = c .w * 4 , dx = obj .x , dy = obj .y }
67+ end
68+ texid = texid + 1
69+ results [i ] = r
6570 end
66- return r
71+ return results , texid_from
6772end
6873
6974function S .write (id , filename )
0 commit comments