Repository navigation
PyNifly V25.8
MOPP Collision Export Improvements
- MOPP and CompressedMeshShape properties now round-trip fully:
buildType,bitsPerIndex,bitsPerWIndex,maskIndex,maskWIndex,error,materialType,userData, andunkFloatare 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__.pyfiles, including sub-packages. - Addon preferences now use
__package__instead of a hardcoded string, as required by the Blender extensions program. gamefinder.pystripped 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_SEtest: 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.