Skip to content

FireMaze v3.2.0

Choose a tag to compare

@FireRat666 FireRat666 released this 06 Jun 22:42
· 14 commits to main since this release
766ff9c

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 packagesmaze_generator.pymaze_algorithms/ package cube_maze.py, thin_maze.py, polar_maze.py, common_helpers.py; mesh_builder.pymesh_builder/ package rect_builder.py, polar_builder.py, stair_builder.py, post_processor.py, bmesh_utils.py, __init__.py.
  • Extracted pathfinder into its own pathfinder.py module.
  • Unified seed management via set_seed/get_rng in utils.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_id face 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}) with fire_maze_data tag 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 initializationcube_maze.py and thin_maze.py used _ instead of y in 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 <= 0 guards — added throughout polar builder to prevent division-by-zero when ring_sectors[r] is zero.
  • Bend subdivision cuts capped at 8 to prevent excessive geometry.
  • _add_circular_wall_caps — added ts parameter; minimum radius clamp now uses ts * 0.01 instead of hardcoded 0.001.
  • Out-of-bounds wall index access fixed in thin polar wall section.
  • is_editing guard removed from cube_mode_pillar wall skipping, fixing a regression.
  • Lightmap state restoration — restructured with try...finally to guarantee original selection, active object, active UV, and editor mode are restored on failure.
  • Entrance None guard_compute_grid_distances returns early when maze_data.entrance is None.

Geometry & Mesh Building

  • Thin wall corner cleanupClean Wall Corners option 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_doubles across all builders; wrapped in try-except in 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_Helper lookup scoped to collection instead of global bpy.data.
  • Docstrings added across multiple modules.
  • Version bump in blender_manifest.toml.

Full Changelog: v3.1.0...v3.2.0