FireMaze v3.2.0
What's Changed
- Refactor maze generator and mesh builder into modular packages; add incremental editing, multi-floor support, and polar maze fixes by @FireRat666 in #6
Major Refactor
- Split monolithic modules into packages —
maze_generator.py→maze_algorithms/packagecube_maze.py,thin_maze.py,polar_maze.py,common_helpers.py;mesh_builder.py→mesh_builder/packagerect_builder.py,polar_builder.py,stair_builder.py,post_processor.py,bmesh_utils.py,__init__.py. - Extracted pathfinder into its own
pathfinder.pymodule. - Unified seed management via
set_seed/get_rnginutils.py— polar maze generation now respects the configured seed. - Added type annotations to main entry-point functions; removed unused imports and redundant
is_valid_ref()loops.
Interactive Editing
- Incremental mesh rebuild — only dirty cells are rebuilt on edit, using a
cell_idface layer to map geometry back to maze cells. - Entrance/exit toggling — clicking perimeter tiles in edit mode moves entrance/exit location; toggling a wall on/off at the border updates the entrance/exit data accordingly.
- Polar wall toggling — interactive edit support for polar grid walls.
Multi-Floor Support
- Decoration spawning refactored for multi-floor mazes — torches, chests, doors placed per-floor with correct entrance/exit detection.
- Entrance/exit openings are now properly closed on non-applicable floors (e.g., entrance on floor 0 shouldn't have an opening on floor 1).
- Props collection scoped per parent collection (
FireMaze_Props_{name}) withfire_maze_datatag for reliable cleanup.
Bug Fixes
- Polar neighbor direction indexing — CW/CCW was swapped in pathfinder, vertex painting, and decoration spawning across 5 files.
- Visited matrix initialization —
cube_maze.pyandthin_maze.pyused_instead ofyin list comprehensions for multiple algorithms (Prim's, Hunt-and-Kill, Wilson's, Growing Tree). - Room placement — rooms now skip cells that overlap blocked regions in cube/thin maze generation.
Nr <= 0guards — added throughout polar builder to prevent division-by-zero whenring_sectors[r]is zero.- Bend subdivision cuts capped at 8 to prevent excessive geometry.
_add_circular_wall_caps— addedtsparameter; minimum radius clamp now usests * 0.01instead of hardcoded0.001.- Out-of-bounds wall index access fixed in thin polar wall section.
is_editingguard removed fromcube_mode_pillarwall skipping, fixing a regression.- Lightmap state restoration — restructured with
try...finallyto guarantee original selection, active object, active UV, and editor mode are restored on failure. - Entrance
Noneguard —_compute_grid_distancesreturns early whenmaze_data.entrance is None.
Geometry & Mesh Building
- Thin wall corner cleanup —
Clean Wall Cornersoption extends fillers only at true V-corners, fixes overlapping walls and end caps. - Procedural thin-roof fallback — when no custom roof mesh is provided, generates filler geometry at wall-roof intersections.
- Remove doubles — switched to
_safe_remove_doublesacross all builders; wrapped intry-exceptin polar and rect builders. - Conditional end-cap generation for radial and circular walls in polar builder.
- Collider simplification — simplify collider components individually before merging for better coplanar face reduction.
- Stair builder fixes — bottom face added to step wedges; top exit landing platform; top step ends along negative Y-axis.
Housekeeping
- Debug prints removed from incremental rebuild and rect builder.
- Exception handling narrowed — floor level validation catches specific exception types instead of bare
Exception. _FireMaze_Edit_Helperlookup scoped to collection instead of globalbpy.data.- Docstrings added across multiple modules.
- Version bump in
blender_manifest.toml.
Full Changelog: v3.1.0...v3.2.0