Skip to content

Release 1.2

Choose a tag to compare

@Mioshiru Mioshiru released this 06 Jul 21:32

Release Notes: Performance & UX Overhaul

This release introduces significant performance optimizations to the map rendering pipeline and rolls out a brand new interactive Radial Tool Wheel, seamless infinite drag-scrolling, and improved dialog layouts.

⚡ 1. Canvas Rendering & Performance Optimizations

  • Eliminated Logging Overhead: Removed multiple LogErrorToFile calls triggered by mouse movements, clicks, and VBO builds, completely removing disk I/O bottlenecks during map interaction.
  • Throttled Animation Timer: Replaced the constant 250 FPS render timer with a smart dirty flag system. The map now only redraws when active changes occur or when zoomed in close enough to render animations.
  • Optimized Grid Rendering: Batched the grid drawing routine (DrawGrid) into a single, high-performance glBegin/glEnd pass (reducing draw calls from ~100 to 1 per frame).
  • VBO Hint Upgrade: Updated VBO hints from GL_STATIC_DRAW to GL_DYNAMIC_DRAW to properly align with frequent buffer updates during zoom and scroll actions.
  • Fast Circle Brush Distance Comparisons: Replaced slow sqrt calls in round-brush iteration loops with squared-distance threshold checks (dist_sq < radii_sq).
  • Cached Coordinates Status Bar: Optimized UpdatePositionStatus by removing redundant coordinate conversions and caching status text updates to reduce UI recalculation overhead on mouse move.

🎡 2. Interactive Radial Tool Wheel (Shift+Q)

  • Radial Layout Overhaul: Replaced the old rectangular ImGui tool menu with a premium, circular radial selector centered at the mouse cursor.
  • Vector Icons: Hand-drawn custom vector path shapes for all 9 quick tools via ImGui's drawing API (Selection pointer, Pencil, Paint bucket, Protection Zone shield, Normal/Locked/Magic Doors, Hatch window, and Eraser).
  • Hover Highlights: Fluid segment selection highlights with a dynamic center circle showing the name of the hovered tool.
  • wxWidgets Event Integration: Click inputs pass through cleanly, changing the active brush and closing the wheel immediately without leaving drawing artifacts on the map canvas.

🖱️ 3. Infinite Viewport Drag-Scrolling

  • Cursor-Edge Warping: Added edge detection during middle-mouse-button (MMB) dragging.
  • Continuous Dragging: When the mouse pointer reaches within 40px of the canvas window bounds, it dynamically warps back to the center of the viewport, enabling seamless, infinite panning across the map without focus loss.

⚙️ 4. Settings & Dialog Improvements

  • Settings "Hotkeys" Tab: Added a dedicated, read-only hotkeys reference tab in the Settings window utilizing a clean, formatted wxListCtrl.
  • Simplified About Window: Removed the duplicate controls text and Help button from the About Dialog, shifting all shortcut documentation to the centralized Settings panel.