should be discarded, too, as the object to insert
isn't a sprite
*/
- if(spriteid>=0 && getidfromtag(&master.tags[pos]) == spriteid && !config.isframe)
+ if(spriteid>=0 && getidfromtag(&master.tags[pos]) == spriteid &&
+ !config.isframe && config.merge)
dontwrite = 1;
break;
}
if(config.hassizex || config.hassizey || config.framerate)
{
struct flash_header head;
- swf_init(data-3, length+3);
- head = swf_read_header();
+ struct reader_t reader;
+ swf_init(&reader, data-3, length+3);
+ head = swf_read_header(&reader);
if(config.hassizex)
{
head.boundingBox.x2 = head.boundingBox.x1 + config.sizex;
switch(master.tags[pos].id) {
case TAGID_PLACEOBJECT2:
num++;
- case TAGID_PLACEOBJECT:
- reader_init (master.tags[pos].data, master.tags[pos].length);
+ case TAGID_PLACEOBJECT: {
+ struct reader_t r;
+ reader_init (&r, master.tags[pos].data, master.tags[pos].length);
if(num>=2)
- readu8();
- depth = readu16();
+ reader_readu8(&r);
+ depth = reader_readu16(&r);
depths[depth] = 1;
+ }
break;
- case TAGID_REMOVEOBJECT:
- reader_init (master.tags[pos].data, master.tags[pos].length);
- readu16();
- depths[readu16()] = 0;
+ case TAGID_REMOVEOBJECT: {
+ struct reader_t r;
+ reader_init (&r, master.tags[pos].data, master.tags[pos].length);
+ reader_readu16(&r);
+ depths[reader_readu16(&r)] = 0;
+ }
break;
- case TAGID_REMOVEOBJECT2:
- reader_init (master.tags[pos].data, master.tags[pos].length);
- depths[readu16()] = 0;
+ case TAGID_REMOVEOBJECT2: {
+ struct reader_t r;
+ reader_init (&r, master.tags[pos].data, master.tags[pos].length);
+ depths[reader_readu16(&r)] = 0;
+ }
break;
}
if(master.tags[pos].id != 0)