X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/a0efa108741b6cb53ddc3b1228a91b2e0c75a56a..82568fc97fa528e92f2de5e97717b542b921ccf3:/src/engine/texture.gob diff --git a/src/engine/texture.gob b/src/engine/texture.gob index 3db176e..981c898 100644 --- a/src/engine/texture.gob +++ b/src/engine/texture.gob @@ -1,7 +1,7 @@ %alltop{ /* * upkg: tool for manipulating Unreal Tournament packages. - * Copyright © 2009-2011 Nick Bowler + * Copyright © 2009-2012, 2020 Nick Bowler * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -52,7 +52,7 @@ struct engine_texture_data *decode_mipmap(UObject *uo) long datalen; buflen = upkg_export_read(f, buf, sizeof buf); - if (uo->pkg->version >= 63) { + if (f->pkg->version >= 63) { /* * There's an offset to the end of the image data here; not * clear why it's useful since it's implied by the very next @@ -84,8 +84,10 @@ struct engine_texture_data *decode_mipmap(UObject *uo) /* At this point, the current file offset should match the one recorded * above. */ - if (uo->pkg->version >= 63 && end_offset != (f->base + f->offset)) + if (f->pkg->version >= 63 && end_offset != (f->base + f->offset)) { + u_err(uo, "mipmap end offset does not match data size"); goto err_free; + } /* Read in the remaining fields */ buflen = upkg_export_read(f, buf, 10); @@ -115,7 +117,10 @@ class Engine:Texture from U:Object (dynamic) private unsigned VClamp; private unsigned VBits; - private Engine:Palette *Palette; + private float DrawScale; + + private Engine:Palette *Palette = NULL destroywith g_object_unref; + private Engine:Texture *DetailTexture = NULL destroywith g_object_unref; private struct engine_texture_data **mipmap_data; private unsigned char mipmap_count; @@ -136,6 +141,8 @@ class Engine:Texture from U:Object (dynamic) for (int i = 0; i < self->_priv->mipmap_count; i++) { data[i] = decode_mipmap(uo); if (!data[i]) { + u_err(uo, "error decoding mipmap level %d", i); + /* Unwind the allocations. */ for (; i >= 0; i--) free(data[i]); @@ -265,10 +272,23 @@ class Engine:Texture from U:Object (dynamic) , link ); + property FLOAT DrawScale + ( nick = "Draw Scale" + , blurb = "Relative size to parent surface" + , link + ); + property OBJECT Palette ( nick = "Palette" , blurb = "Reference to the texture's palette." , object_type = Engine:Palette , link ); + + property OBJECT DetailTexture + ( nick = "Detail Texture" + , blurb = "Reference to the corresponding detail texture." + , object_type = Engine:Texture + , link + ); }