v5.2.0#

✨ Added#

  • OlDecoder: support for DXN_X (ATI1 / BC4) textures.

  • TextureKind: OL texture kind identifiers.

  • OlKindUnsupported: error for unsupported OL texture kinds.

  • decoders(), encoders(): access to registered decoder and encoder classes.

  • converter(): source format aliases.

  • scfile.formats: decoder and encoder class exports.

  • detect.format(): input format detection by file name.

  • TextureContent.path_hash: logical resource path hash.

  • SafetyLimit: shared limits for decoded sizes and counts.

  • LimitError: error for decoded values that exceed a safety limit.

  • Development: public audit, info and profile tools.

📝 Changed#

  • OlDecoder: default and cubemap textures are now detected from the OL kind field.

  • OlDecoder: texture data is typed as DefaultTexture | CubemapTexture.

  • Docs: expanded format descriptions and library usage guide.

  • Templates: updated binary format structures.

🐛 Fixed#

  • McsaDecoder: facial bones and morph animation structure in model version 15.0.

  • DaeEncoder: float_array counts in generated documents.

  • OlDecoder: invalid compressed mipmaps now report InvalidStructureError.

⚠️ Deprecated#

  • OlCubemapDecoder: use OlDecoder instead.

  • ol_cubemap_to_dds(): use ol_to_dds() instead.

🗑️ Removed#

  • McsaCountsLimit: replaced by LimitError.

⚡ Optimized#

  • Ms3dEncoder: numeric data serialization (1.2 s → 20 ms).

  • DaeEncoder, ObjEncoder: numeric data serialization.