> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rollingquest.kramgames.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sides (Block Faces)

> Understanding block sides in the RollingQuest editor: selection via raycast, applying templates, and how elements attach to faces.

Every block in the level has up to six **sides** (faces), corresponding to the six directions: **Up**, **Down**, **Left**, **Right**, **Front**, and **Back**. Sides are the attachment points for items, enemies, balls, and decorations.

## Side Selection

To select a side:

1. Navigate the camera so a block face is visible
2. **Left-click** on the face — a raycast detects which side you clicked
3. The selected side highlights with a distinct color on the block selector

The raycast uses the `SidesFullCullMask` layer and requires the clicked object to have the `Sides` tag. Only sides belonging to the **current section** can be selected.

## Applying Templates to Sides

With a block template selected in the Blocks Pool:

1. **Right-click** on a block side
2. The currently selected template is applied to that side

This replaces the side's template while preserving existing elements (items, enemies, etc.) if compatible. If the new template is `BlockOnly` or the old template was `BlockOnly`, the editor removes the old block and inserts a new one.

### Template Compatibility

* **Side → Side**: The side is recreated with the new template. Script references and local variables are preserved.
* **BlockOnly → Side**: The entire block is removed and re-inserted as a side template.
* **Side → BlockOnly**: Same as above — the block is replaced.
* **Same template**: No change — the operation is a no-op.

## Side Properties

Each side maintains:

* **Template reference** — The `SideTemplate` defining its appearance and behavior
* **Item** — An optional `Item` attached to this face
* **Decoration** — An optional `Decoration` attached to this face
* **EditorEnemy** — An optional `Enemy` attached to this face
* **EditorBall** — An optional `Ball` attached to this face
* **LuaScriptConnector** — Script reference and tag for this specific side
* **LuaLocalVariablesDefinitions** — Key-value pairs accessible from the side's script
* **ElementPropertiesManager** — Dynamic properties defined by the template

## BlockOnly vs Side Templates

| Feature              | Side Template  | BlockOnly Template |
| -------------------- | -------------- | ------------------ |
| Independent faces    | Yes (6 faces)  | No (entire block)  |
| Can hold items       | Yes (per face) | No                 |
| Can hold enemies     | Yes (per face) | No                 |
| Can hold balls       | Yes (per face) | No                 |
| Can hold decorations | Yes (per face) | No                 |
| Properties access    | Via side       | Via block          |

When a `BlockOnly` template is used, pressing **V** opens the block's properties directly instead of the side's properties.

## Visual Feedback

The block selector shows colored faces to indicate selection state:

* **Selected face** — Highlighted with the selection material
* **All faces selected** — Block is grabbed (ready to move)
* **No selection** — Default wireframe appearance
