# CSG Toolkit - Enhanced Blockout & Procedural Generation
A powerful Godot plugin that dramatically speeds up your blockout workflow and adds advanced procedural generation capabilities for level design and prototyping.
>> Asset Library
## Core Features
* **Quick Access Buttons:** Convenient sidebar buttons for swiftly adding CSG primitives (Box, Sphere, Cylinder, Torus, Mesh, Polygon)
* **Smart Insertion Modes:** Default sibling/child behavior with ALT key inversion for flexible hierarchy control
* **Operation Switching:** Quickly cycle through CSG operations (Union, Intersection, Subtraction) with keyboard shortcuts (SHIFT + 1/2/3)
* **Material Picker:** Visual material preview and quick application to CSG nodes
* **Keyboard Shortcuts:** Context-aware shortcuts - SHIFT + B/S/C/T/M/P for instant shape creation
* **Auto-Hide Sidebar:** Optional automatic visibility based on CSG node selection
* **ProjectSettings Integration:** All configuration stored in Godot's native settings system
## Advanced Procedural Nodes
### CSGRepeater3D - Pattern Generation System
Create complex repeating patterns with multiple layout options:
**Pattern Types:**
* **Grid Pattern:** Traditional XYZ grid layout with automatic template size detection and custom spacing
* **Circular Pattern:** Objects arranged in circles with optional vertical layers
* **Spiral Pattern:** Objects follow a configurable spiral path with height and rotation controls
* **Noise Pattern:** Procedural distribution using FastNoiseLite - creates organic, natural-looking patterns with customizable noise types (Simplex, Perlin, Cellular, etc.)
**Advanced Controls:**
* **Automatic Template Sizing:** Intelligently uses template AABB to calculate proper spacing (toggle with `use_template_size`)
* **Template Visibility Control:** Hide template node while keeping repeated instances visible with `hide_template` option
* **Variation Controls:** Per-axis random rotation, scale, and position jitter with configurable variance
* **Seed-Based Generation:** Fully reproducible random patterns using seeds
* **Pattern-Specific Settings:** Each pattern type has unique parameters (radius, height, bounds, noise threshold, etc.)
### CSGSpreader3D - Intelligent Object Distribution
Distribute objects naturally within 3D shapes with smart placement:
**Supported Shapes:**
* **Box, Sphere, Cylinder, Capsule:** Standard primitive shapes
* **HeightMap:** Surface-following distribution
* **Convex/Concave Polygons:** Complex geometry support
* **World Boundary:** Large area distribution
**Smart Features:**
* **Collision Avoidance:** Prevent object overlap with configurable minimum distances and placement attempts
* **Noise Threshold:** Control density and distribution patterns for organic variation
* **Advanced Random Distribution:** Mathematically correct uniform distribution in spheres, cylinders, and complex shapes
* **Rotation & Scale Variations:** Optional randomization for natural-looking distributions
* **Template Visibility:** Automatic template hiding with visible instances
* **Runtime Support:** Works both in-editor and during gameplay
### Basic Setup
1. **Enable the Plugin:** Project Settings > Plugins > CSG Toolkit ✓
2. **Configure Settings:** Access via sidebar config button or Project > Project Settings > Addons > CSG Toolkit
3. **Use Quick Creation:** Select a CSG node, hold SHIFT, press B/S/C/T/M/P to create shapes
### Using CSGRepeater3D
1. **Add Repeater:** Create Node > CSGRepeater3D
2. **Set Template:** Assign a child node path or PackedScene as template
3. **Choose Pattern:** Create a new pattern resource (GridPattern, CircularPattern, SpiralPattern, or NoisePattern)
4. **Adjust Settings:** Configure pattern-specific parameters (counts, spacing, radius, etc.)
5. **Fine-tune:** Enable variations for rotation, scale, or position jitter
### Using CSGSpreader3D
1. **Add Spreader:** Create Node > CSGSpreader3D
2. **Set Template:** Assign template node from scene tree
3. **Define Area:** Set spread_area_3d to a Shape3D resource
4. **Configure Distribution:** Adjust max_count, noise_threshold, and collision settings
5. **Add Variation:** Enable rotation/scale randomization for natural lookModifier3D
3. **Set Template:** Assign a template node or scene to repeat/spread
4. **Configure Pattern:** Choose pattern type and adjust parameters
### Installation Note
After installing the plugin, reload your project and enable it in Project Settings > Plugins.
Made with coffee and ♥