Skip to content

Releases: qwqzhanqwq/Godot-CSG-Blockout

v3.1.0

Choose a tag to compare

@qwqzhanqwq qwqzhanqwq released this 17 Oct 06:52

CSG Blockout 3.1.0: wedges, arches, curved walls and spiral stairs

Four new shapes for blocking out, a Play From Here test character that walks up stairs, and rooms that resize as rooms.

New shapes

  • Wedge (CSGWedge3D): a box with one sloped face, for ramps, roof halves and angled walls.
  • Arch (CSGArch3D): a wall piece with an arched opening. The opening has its own arrows for height and width, and becomes a flatter elliptical arch when it's lower than half its width.
  • Curved Wall (CSGCurvedWall3D): a wall bent around a vertical axis. Drag the arrow on its end to sweep it around, all the way to a closed ring.
  • Spiral Stairs (CSGSpiralStairs3D): one turn or several (for towers), floating steps or filled down to the floor, clockwise or counterclockwise. The Inspector warns when the steps are uncomfortable to climb or the turn above is too low to walk under.

They work like the other shapes: place them from the tool palette or the pie menu (Shapes ›), they snap to the grid and join the CSG tree they're placed on, their faces have arrows, and their dimension labels take typed sizes (only the height for the curved wall and the spiral stairs). Freezing with one native shape per primitive splits them into convex pieces that follow their shape: the arch's opening stays open, and every spiral step gets its own piece.

Without the plugin, the wedge, arch and curved wall stay plain CSGPolygon3D nodes with the same shape, and the spiral stairs a CSGMesh3D whose mesh is saved with the scene.

Play From Here walks up stairs

The test character used to stop at the first step of any staircase. It now walks up and down steps as high as the new player metric max_step_height (Project Settings → addons/csg_blockout/player_metrics, 0.3 m by default). Stairs and spiral stairs warn in the Inspector when their steps are higher, and the player reference draws the step next to the slope. It only steps on the ground, so jumps are unchanged.

Fixes

  • Rooms resize as rooms. Dragging a face of a room drawn with the Room tool used to move only its outer shell, so raising the top sealed the room and pushing a wall out made that wall thicker. Select the room (it's selected right after drawing) or click one of its walls, then drag a face arrow or type a size: walls and floor keep their thickness, an open top stays open, and doors and windows in a moved wall go with it.
  • The test character no longer hops down stairs, airborne most of the way.
  • Selecting stairs no longer opens Godot's polygon point editor on them (points moved there were overwritten by the stairs' own properties).

Upgrading from 3.0

Replace addons/csg_blockout with the new version; nothing in your scenes needs to change.

  • max_step_height is added to Project Settings when the plugin loads. If your character steps higher or lower than 0.3 m, set it there so Play From Here and the stair warnings match your game.
  • Existing stairs whose steps are higher than that now show an Inspector warning; that's the only new message you might see.

Full list of changes: CHANGELOG.md.

v3.0.0

Choose a tag to compare

@qwqzhanqwq qwqzhanqwq released this 03 Oct 14:31

CSG Blockout started as a faster way to place CSG shapes. 3.0 turns it into a level prototyping tool: draw rooms in the viewport, check them against your character, play them, and freeze them into meshes you can always turn back into CSG. Everything you build is still a stock Godot CSG node.

Highlights

  • Draw in one drag. Box, Room and Cut drag a base on any surface and build on release. Click a wall to cut a door or a window.
  • Edit without hunting for handles. Arrows on the faces push and pull them; click a dimension label to type a size. One grid for every tool, with keyboard nudging, 15° rotation steps and duplicate along an axis (Ctrl+Shift+D).
  • Measure against your character. Dimension labels, a player reference with jump height and sprint-jump arc, a jump check between two objects, and a level check for slopes that are too steep and ceilings that are too low.
  • Play From Here. Run the scene with a first-person test character where you're looking. It jumps as high and as far as your player metrics say: the same numbers the checks use.
  • Freeze and unfreeze. A CSG tree becomes a plain mesh with collision in one undo step, and Unfreeze brings the exact CSG back. Bake options (collision type, lightmap UV2, occluder, LODs), export to MeshLibrary for GridMap, and a glTF round trip through Blender.
  • Blockout outliner with solo, lock, grouping and semantic names.

Measured performance: with one CSG tree per room, an edit takes about 2 ms whatever the size of the level; freezing 400 primitives takes under 0.1 s; a frozen 400-primitive level starts about 4× faster than live CSG. Details, and a benchmark you can run yourself, are in [BENCHMARKS.md](https://github.com/qwqzhanqwq/Godot-CSG-Blockout/blob/main/BENCHMARKS.md).

Upgrading from 2.x

Your scenes keep working: they're made of Godot CSG nodes. What changes is how you work with them.

  • Godot 4.6 or later is required (2.1 needed 4.7).
  • There's no hidden "current operation" anymore. New shapes are always unions. To turn a shape into a cut, select it and use the union / subtraction / intersection buttons in the tool palette, or More › in the pie menu. To draw a cut directly, use the Cut tool.
  • The sidebar is now an always-visible tool palette with named tools. The auto_hide and default_operation project settings are gone; the plugin removes them from project.godot when it loads.
  • The pie menu (Shift + A) was reorganized: Box, Room, Cut, Door, Window, Play, Shapes ›, More ›.
  • The toolbar keeps only actions for the whole level (grid, snap, Check, Play, Freeze, ⋯). Repeater/Spreader Refresh and Bake, ruler visibility and dimension labels moved to the ⋯ menu; the ruler is in the tool palette.
  • Tools are one-shot: each tool makes one thing and hands control back. Double-click a tool's button to keep it on; Esc or a right-click leaves it.
  • Feedback moved to a status line at the top of the viewport instead of editor toasts.
  • Shapes that start a new CSG tree now have collision on, so you can walk them and freezing gives them a collision body. Existing trees keep their setting; Play From Here adds collision for the test run where it's missing.
  • Freeze replaces the old "bake to mesh, then delete the CSG" workflow. It's one undo step and you can reverse it any time.

Full list of changes: [CHANGELOG.md](https://github.com/qwqzhanqwq/Godot-CSG-Blockout/blob/main/CHANGELOG.md).

Install

Thanks to [@SuzukaDev](https://github.com/SuzukaDev) for the fix that stops the pie menu from opening while you fly the camera ([#4](#4)), and to [LuckyTepot](https://github.com/LuckyTepot), whose CSG Toolkit this plugin grew out of.

v2.0.2

Choose a tag to compare

@qwqzhanqwq qwqzhanqwq released this 07 Sep 16:33

Fixed

Core (v2.0.2): Spreader now samples the true capsule volume (cylinder segment + hemispherical caps); overlap hash cell_size = maxf(min_distance, 0.001) guarantees full 27-cell coverage with a safe fallback for near-zero distances; Repeater merges rotated children via 8-corner world transform, restoring accurate preview bounds
Undoable bake: Repeater / Spreader bake integrates EditorUndoRedoManager (Ctrl+Z / Ctrl+Y)
i18n: fixed locale detection crash, plugin metadata corruption, and PO auto-translate hijacking
Interaction: configurable action key (Shift/Ctrl/Alt/Meta); fixed pattern base-class assignment guard and noise template offset
Docs: logo adapted for light/dark color schemes
Added

i18n: Japanese, Korean, Spanish, Portuguese, Russian — 7 languages total
UI: Bake button in the top bar; boolean/material icons switched from PNG to vector SVG
Persisted settings: new ProjectSettings keys default_operation (shared by pie menu & sidebar) and custom_material_path, surviving editor restarts
Docs & chores

README redesigned as a product landing page (centered hero + badges + bilingual nav), WebP tutorial assets, dangling references removed
ARCHITECTURE docs updated with corrected hash derivation (Cell Size = d_min) and property defaults (bilingual)
Version 2.0.1 → 2.0.2; added .agent GDScript 4.7 coding standards contract

v2.0.1

Choose a tag to compare

@qwqzhanqwq qwqzhanqwq released this 27 Aug 12:10
fix(ui): adapt pie menu and sidebar to high-DPI editor scale

- Scale pie menu radii, stroke widths, font sizes, and clamp margins via EditorInterface.get_editor_scale()

- Dynamically scale sidebar buttons, container separation, and icon_max_width based on editor scale

- Bind resized signal to update button pivot offsets accurately during dynamic scaling

- Enable scale_with_editor_scale in SVG import configs for boolean and material icons