Skip to content

PyNifly V25.8

Choose a tag to compare

@BadDogSkyrim BadDogSkyrim released this 20 Mar 22:01
· 233 commits to main since this release

MOPP Collision Export Improvements

  • MOPP and CompressedMeshShape properties now round-trip fully: buildType, bitsPerIndex, bitsPerWIndex, maskIndex, maskWIndex, error, materialType, userData, and unkFloat are preserved through import/export.

Blender Extensions Compatibility

I offered PyNifly to the Blender Extensions people. These changes are based on their review.

  • Module reloading updated to use the official Blender extensions pattern (_needs_reload = "bpy" in locals()) in all __init__.py files, including sub-packages.
  • Addon preferences now use __package__ instead of a hardcoded string, as required by the Blender extensions program.
  • gamefinder.py stripped of Xbox/Game Pass and Epic Games filesystem traversal. Remaining Steam/Bethesda Launcher registry lookups are gated behind debug mode (PYNIFLY_DEV_ROOT). If you're depending on PyNifly automatically searching game directories, put them in the preference texture paths.
  • Removed if __name__ == "__main__" standalone test blocks from all shipped modules.
  • Removed sfmesh.py (Starfield exploration script) from the package.

Testing

  • New TEST_FACEGEN_SE test: imports a Skyrim SE facegen NIF, verifies all head parts are positioned correctly, exports all shapes, and checks the round-trip preserves geometry.
  • Added MOPP benchmark script and compressed mesh comparison tool for future MOPP quality tuning.