Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
details) for the docs site's new Performance page, which lists every
measured machine. The landing page shows the newest one. `--gpu`
measures on the GPU on Linux.
- `NeonStrip`: a neon tube that glows at any hour, for cove lighting or
a line round a room; `light` also washes nearby walls in its colour.
([#34](https://github.com/nullorder/runek/issues/34))
- `Lighthouse`: a banded tower with a gallery and a glazed lantern whose
two beams sweep round after dusk (`nightOnly`).
([#35](https://github.com/nullorder/runek/issues/35))
- `Cave`: the mouth of a sea cave, a seeded vault of faceted stone to
set into a `Cliff` at the waterline. No collider, so a boat can go in.
([#36](https://github.com/nullorder/runek/issues/36))
- `GlassWall`: a floor-to-ceiling glass partition with an optional
doorway, for meeting rooms; a dark tint makes it a smoked partition.
([#33](https://github.com/nullorder/runek/issues/33))
- `KitchenUnits`: a fitted kitchen run with seeded door and drawer
fronts, a sink, a hob over an oven, wall units with a hood, and an
`overhang` to make an island. ([#31](https://github.com/nullorder/runek/issues/31))
- Music room: `Piano` (a grand with its lid propped and a bench),
`DrumKit` (five pieces and cymbals, seeded finish), `Guitar` (acoustic,
electric or bass on a stand) and `Diffuser` (a skyline acoustic
diffuser cut to a quadratic-residue pattern).
([#37](https://github.com/nullorder/runek/issues/37),
[#38](https://github.com/nullorder/runek/issues/38),
[#39](https://github.com/nullorder/runek/issues/39),
[#43](https://github.com/nullorder/runek/issues/43))

### Changed

Expand Down
51 changes: 51 additions & 0 deletions apps/docs/src/content/docs/components/cave.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
title: "Cave"
summary: "The mouth of a sea cave: a seeded, faceted stone vault opening toward +Z, dark inside, with boulders fallen either side. Set it into a Cliff at the waterline. No collider, so a boat can go in."
category: component
component: cave
order: 100
---

## Add it

```bash
npx @runek/cli add cave
```

Pulls `@runek/core@^0.16.0`, `three@^0.184.0`.

## Use it

```tsx
import { Cave } from './runek/Cave'

<Cave position={[0, 0, 0]} radius={3.5} height={3.2} seed={1} />
```

Or as a node in a world file ([worlds as data](/docs/worlds-as-data)):

```json
{ "type": "Cave", "props": { "position": [0, 0, 0], "radius": 3.5, "height": 3.2, "seed": 1 } }
```

## Props

| Prop | Type | Default | Description |
|---|---|---|---|
| `radius` | `number` | `3.5` | Radius of the hollow, in units. |
| `height` | `number` | `3.2` | Height of the vault over the origin, in units. |
| `mouth` | `number` | `1.1` | How wide the mouth is, in radians round the vault. |
| `color` | `color` | palette `stone` | Rock. Defaults to the world palette's `stone` slot, as `Cliff` does. |
| `position` | `[x, y, z]` | `[0, 0, 0]` | Position [x, y, z] in units (1 unit = 1 m, Y-up). |
| `rotation` | `[x, y, z]` | `[0, 0, 0]` | Euler rotation [x, y, z] in radians. |
| `seed` | `number` | `1` | Seed for the deterministic variation: same seed, same result. |

## Registry manifest

<a class="manifest-card" href="https://runek.nullorder.org/r/components/cave.json">
<span class="manifest-card__label">registry manifest</span>
<span class="manifest-card__path">/r/components/cave.json</span>
<span class="manifest-card__hint">Self-contained JSON: inlined source plus resolved dependencies, exactly what <code>runek add cave</code> fetches.</span>
</a>

Browse the whole catalog in the **[gallery →](/gallery)**.
52 changes: 52 additions & 0 deletions apps/docs/src/content/docs/components/diffuser.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
title: "Diffuser"
summary: "A skyline acoustic diffuser: wooden blocks on a backboard, their depths from a quadratic-residue sequence, instanced. Wall-mounted, decorative."
category: component
component: diffuser
order: 100
---

## Add it

```bash
npx @runek/cli add diffuser
```

Pulls `@runek/core@^0.16.0`, `three@^0.184.0`.

## Use it

```tsx
import { Diffuser } from './runek/Diffuser'

<Diffuser position={[0, 0, 0]} cells={11} seed={1} />
```

Or as a node in a world file ([worlds as data](/docs/worlds-as-data)):

```json
{ "type": "Diffuser", "props": { "position": [0, 0, 0], "cells": 11, "seed": 1 } }
```

## Props

| Prop | Type | Default | Description |
|---|---|---|---|
| `width` | `number` | `1.2` | Width, in units. |
| `height` | `number` | `1.2` | Height, in units. |
| `cells` | `number` | `11` | Blocks across; the rows follow from the height. |
| `depth` | `number` | `0.2` | The deepest block, in units. |
| `color` | `color` | palette `wood` | Defaults to the world palette's `wood` slot. |
| `position` | `[x, y, z]` | `[0, 0, 0]` | Position [x, y, z] in units (1 unit = 1 m, Y-up). |
| `rotation` | `[x, y, z]` | `[0, 0, 0]` | Euler rotation [x, y, z] in radians. |
| `seed` | `number` | `1` | Seed for the deterministic variation: same seed, same result. |

## Registry manifest

<a class="manifest-card" href="https://runek.nullorder.org/r/components/diffuser.json">
<span class="manifest-card__label">registry manifest</span>
<span class="manifest-card__path">/r/components/diffuser.json</span>
<span class="manifest-card__hint">Self-contained JSON: inlined source plus resolved dependencies, exactly what <code>runek add diffuser</code> fetches.</span>
</a>

Browse the whole catalog in the **[gallery →](/gallery)**.
48 changes: 48 additions & 0 deletions apps/docs/src/content/docs/components/drum-kit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
title: "DrumKit"
summary: "A five-piece drum kit with hi-hat, crash and ride cymbals on stands and a throne behind it; seeded shell finish. One cuboid collider round the drums."
category: component
component: drum-kit
order: 100
---

## Add it

```bash
npx @runek/cli add drum-kit
```

Pulls `@react-three/rapier@^2.2.0`, `@runek/core@^0.16.0`.

## Use it

```tsx
import { DrumKit } from './runek/DrumKit'

<DrumKit position={[0, 0, 0]} seed={1} />
```

Or as a node in a world file ([worlds as data](/docs/worlds-as-data)):

```json
{ "type": "DrumKit", "props": { "position": [0, 0, 0], "seed": 1 } }
```

## Props

| Prop | Type | Default | Description |
|---|---|---|---|
| `color` | `color` | | The shells. Seeded from a few finishes when unset. |
| `position` | `[x, y, z]` | `[0, 0, 0]` | Position [x, y, z] in units (1 unit = 1 m, Y-up). |
| `rotation` | `[x, y, z]` | `[0, 0, 0]` | Euler rotation [x, y, z] in radians. |
| `seed` | `number` | `1` | Seed for the deterministic variation: same seed, same result. |

## Registry manifest

<a class="manifest-card" href="https://runek.nullorder.org/r/components/drum-kit.json">
<span class="manifest-card__label">registry manifest</span>
<span class="manifest-card__path">/r/components/drum-kit.json</span>
<span class="manifest-card__hint">Self-contained JSON: inlined source plus resolved dependencies, exactly what <code>runek add drum-kit</code> fetches.</span>
</a>

Browse the whole catalog in the **[gallery →](/gallery)**.
62 changes: 62 additions & 0 deletions apps/docs/src/content/docs/components/glass-wall.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
title: "GlassWall"
summary: "A floor-to-ceiling glass partition: panes between slim mullions in a frame, with an optional doorway and a pane over it. A cuboid collider either side of the doorway."
category: component
component: glass-wall
order: 100
---

## Add it

```bash
npx @runek/cli add glass-wall
```

Pulls `@react-three/rapier@^2.2.0`, `@runek/core@^0.16.0`.

## Use it

```tsx
import { GlassWall } from './runek/GlassWall'

<GlassWall position={[0, 0, 0]} width={4} door={{ "offset": 0.8, "width": 1 }} />
```

Or as a node in a world file ([worlds as data](/docs/worlds-as-data)):

```json
{ "type": "GlassWall", "props": { "position": [0, 0, 0], "width": 4, "door": { "offset": 0.8, "width": 1 } } }
```

## Props

| Prop | Type | Default | Description |
|---|---|---|---|
| `width` | `number` | `4` | Length along local X, in units, centred on the origin. |
| `height` | `number` | `3` | Height, in units. |
| `door` | `GlassWallDoor` | | A doorway left open in it, with a pane over it to the top. |
| `pane` | `number` | `1.2` | Widest a pane runs before a mullion, in units. |
| `glassColor` | `color` | `"#b7d8e8"` | Glass tint. |
| `opacity` | `number` | `0.22` | How much the glass hides, 0 clear to 1 opaque. Dark and high makes a smoked partition. |
| `color` | `color` | palette `metal` | Frame and mullions. Defaults to the world palette's `metal` slot. |
| `position` | `[x, y, z]` | `[0, 0, 0]` | Position [x, y, z] in units (1 unit = 1 m, Y-up). |
| `rotation` | `[x, y, z]` | `[0, 0, 0]` | Euler rotation [x, y, z] in radians. |
| `seed` | `number` | | Accepted for the component contract; this component has no seeded variation yet. |

### `GlassWallDoor`

| Prop | Type | Default | Description |
|---|---|---|---|
| `offset` | `number` | | From the middle of the wall along X. |
| `width` | `number` | | |
| `height` | `number` | | |

## Registry manifest

<a class="manifest-card" href="https://runek.nullorder.org/r/components/glass-wall.json">
<span class="manifest-card__label">registry manifest</span>
<span class="manifest-card__path">/r/components/glass-wall.json</span>
<span class="manifest-card__hint">Self-contained JSON: inlined source plus resolved dependencies, exactly what <code>runek add glass-wall</code> fetches.</span>
</a>

Browse the whole catalog in the **[gallery →](/gallery)**.
49 changes: 49 additions & 0 deletions apps/docs/src/content/docs/components/guitar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
title: "Guitar"
summary: "An acoustic, electric or bass guitar leaning on a floor stand; the kind and finish are seeded. Decorative."
category: component
component: guitar
order: 100
---

## Add it

```bash
npx @runek/cli add guitar
```

Pulls `@runek/core@^0.16.0`.

## Use it

```tsx
import { Guitar } from './runek/Guitar'

<Guitar position={[0, 0, 0]} kind="electric" seed={1} />
```

Or as a node in a world file ([worlds as data](/docs/worlds-as-data)):

```json
{ "type": "Guitar", "props": { "position": [0, 0, 0], "kind": "electric", "seed": 1 } }
```

## Props

| Prop | Type | Default | Description |
|---|---|---|---|
| `kind` | `"acoustic" \| "electric" \| "bass"` | | Seeded when unset. |
| `color` | `color` | | The body. Seeded from a few finishes for its kind when unset. |
| `position` | `[x, y, z]` | `[0, 0, 0]` | Position [x, y, z] in units (1 unit = 1 m, Y-up). |
| `rotation` | `[x, y, z]` | `[0, 0, 0]` | Euler rotation [x, y, z] in radians. |
| `seed` | `number` | `1` | Seed for the deterministic variation: same seed, same result. |

## Registry manifest

<a class="manifest-card" href="https://runek.nullorder.org/r/components/guitar.json">
<span class="manifest-card__label">registry manifest</span>
<span class="manifest-card__path">/r/components/guitar.json</span>
<span class="manifest-card__hint">Self-contained JSON: inlined source plus resolved dependencies, exactly what <code>runek add guitar</code> fetches.</span>
</a>

Browse the whole catalog in the **[gallery →](/gallery)**.
58 changes: 58 additions & 0 deletions apps/docs/src/content/docs/components/kitchen-units.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
title: "KitchenUnits"
summary: "A fitted kitchen run: seeded door and drawer fronts under one worktop, an optional sink and a hob over an oven, wall units with a hood, and an overhang for an island. One cuboid collider."
category: component
component: kitchen-units
order: 100
---

## Add it

```bash
npx @runek/cli add kitchen-units
```

Pulls `@react-three/rapier@^2.2.0`, `@runek/core@^0.16.0`, `three@^0.184.0`.

## Use it

```tsx
import { KitchenUnits } from './runek/KitchenUnits'

<KitchenUnits position={[0, 0, 0]} length={3} sink={1} hob={3} wall={true} seed={1} />
```

Or as a node in a world file ([worlds as data](/docs/worlds-as-data)):

```json
{ "type": "KitchenUnits", "props": { "position": [0, 0, 0], "length": 3, "sink": 1, "hob": 3, "wall": true, "seed": 1 } }
```

## Props

| Prop | Type | Default | Description |
|---|---|---|---|
| `length` | `number` | `3` | Length along local X, in units, rounded to whole units. |
| `unitWidth` | `number` | `0.6` | One unit's width, in units. |
| `height` | `number` | `0.9` | Worktop height, in units. |
| `depth` | `number` | `0.6` | Depth along local Z, in units. The fronts face +Z. |
| `sink` | `number` | | Which unit, counted from the -X end, holds the sink. |
| `hob` | `number` | | Which unit holds the hob, with the oven under it and the hood over it. |
| `wall` | `boolean` | `false` | Wall units over the run, with a hood over the hob. |
| `overhang` | `number` | `0` | How far the worktop reaches past the back, in units: knee room for stools along an island. |
| `color` | `color` | | Fronts. Seeded from a few kitchen finishes when unset. |
| `topColor` | `color` | `"#d9d5cc"` | The worktop. |
| `metalColor` | `color` | `"#b9bdc1"` | Handles, sink, tap and hood. |
| `position` | `[x, y, z]` | `[0, 0, 0]` | Position [x, y, z] in units (1 unit = 1 m, Y-up). |
| `rotation` | `[x, y, z]` | `[0, 0, 0]` | Euler rotation [x, y, z] in radians. |
| `seed` | `number` | `1` | Seed for the deterministic variation: same seed, same result. |

## Registry manifest

<a class="manifest-card" href="https://runek.nullorder.org/r/components/kitchen-units.json">
<span class="manifest-card__label">registry manifest</span>
<span class="manifest-card__path">/r/components/kitchen-units.json</span>
<span class="manifest-card__hint">Self-contained JSON: inlined source plus resolved dependencies, exactly what <code>runek add kitchen-units</code> fetches.</span>
</a>

Browse the whole catalog in the **[gallery →](/gallery)**.
Loading
Loading