Document doors, routes and street furniture; refresh screenshots
City guide, architecture and README describe doors and back doors, door-to-door routes along alleys, and the street furniture on folder pavements. Documentation screenshots retaken on the current build, including a street-level view of doorways, a streetlight and routes.
@@ -77,17 +77,27 @@ Plain ES modules, no framework, no build step.
|
||||
nested pavements a few centimetres apart can't z-fight).
|
||||
2. **Buildings and wall:** instanced boxes. The city shader adds procedural windows (lit share from
|
||||
definition count), neon edges, a concrete wall and exponential fog.
|
||||
3. **Effects:** additive and never occluding. Search beacons, fire and smoke particles (stateless,
|
||||
3. **Doors and street furniture:** small instanced boxes (lit doorways, lamp posts and heads, bins,
|
||||
benches, trees, hydrants, post boxes) drawn with a separate shader variant, and only within a few
|
||||
hundred metres of the camera. Streetlights stand on folder boundaries, and everything sits on
|
||||
folder pavements, never the road.
|
||||
4. **Effects:** additive and never occluding. Lamp light pools, search beacons, fire and smoke particles (stateless,
|
||||
animated in the vertex shader), residents (procedural stick-figure sprites), street routes
|
||||
(mitred ribbons with chevrons or pulsing dashes, kept in right-hand lanes) and import arcs.
|
||||
4. **Signs:** textured quads from the label atlas, depth-tested but not depth-writing. A shader test
|
||||
5. **Signs:** textured quads from the label atlas, depth-tested but not depth-writing. A shader test
|
||||
discards any quad face that would read mirrored, which is how two-faced blade signs work.
|
||||
|
||||
### Routing
|
||||
|
||||
- **Grid:** a 3 m occupancy grid blocks buildings (grown by 0.5 m) and the city wall, and makes
|
||||
pavements slightly dearer than roads.
|
||||
- **Search:** one Dijkstra run from the selected building's doors reaches every import and
|
||||
- **Grid:** a 3 m occupancy grid blocks buildings (grown by 2 m, so a ribbon in its lane can't clip a
|
||||
wall) and the city wall, and makes pavements slightly dearer than roads.
|
||||
- **Doors:** each building gets one door, centred where possible and clear of its corners. Street
|
||||
doors face the nearest open street. Buildings with no frontage get a back door whose path follows
|
||||
a distance-to-street field computed once on a 0.5 m grid (chamfer sweeps until stable) through the
|
||||
2.4 m alleys.
|
||||
- **Search:** one Dijkstra run from the selected building's doorstep reaches every import and
|
||||
dependent (paths cost the same both ways). It uses float64 distances and a settled set.
|
||||
- **Shaping:** routes are straightened by line-of-sight, extended into both buildings, and boxed-in
|
||||
targets fall back to the nearest reachable street.
|
||||
- **Shaping:** street paths are straightened by line-of-sight (sampled every quarter cell), then joined
|
||||
to each building's door path: inside the building, out through the doorway, along the alley, onto
|
||||
the street. Alley points are drawn narrower and centred. Buildings with no door fall back to the
|
||||
nearest reachable street.
|
||||
|
||||
@@ -21,6 +21,9 @@ scale, so a large repository is a large city.
|
||||
| **Yellow tape** rising across the walls | Dependabot alert (on the manifest file) |
|
||||
| **Red tape** falling across the walls | Code scanning alert |
|
||||
| **Light beam** into the sky | A search result |
|
||||
| **Lit doorway** | The building's door: facing the street, or a back door onto an alley for files in the middle of a folder |
|
||||
| **Streetlights** with pools of light | The edges of each folder: lights stand on its boundary, at every corner and every 20 m or so |
|
||||
| **Bins, benches, trees, hydrants, post boxes** | Street furniture on the folder's pavement. Purely for atmosphere |
|
||||
| **Cyan chevrons** on the road | Route to a file the selected file imports (**amber** if the import was inferred) |
|
||||
| **Pulsing magenta dashes** on the road | Route from a file that imports the selected file |
|
||||
| **Arcs** in the sky | The same import relationships, as the crow flies |
|
||||
@@ -48,7 +51,9 @@ the selected file's routes.
|
||||
## Following dependencies
|
||||
|
||||
Select a file (click it, search for it, or pick it from the sidebar). Routes appear on the streets
|
||||
to everything it imports and from everything that imports it. With a file selected, switching to
|
||||
to everything it imports and from everything that imports it. Every route leaves through the
|
||||
building's door, follows the alley to the street if it's a back door, and goes in through the other
|
||||
building's door. Alley stretches are drawn thinner. With a file selected, switching to
|
||||
**Walk** puts you at its door facing along the first route: follow the arrows.
|
||||
|
||||
## Tour and links
|
||||
|
||||
|
Before Width: | Height: | Size: 426 KiB After Width: | Height: | Size: 632 KiB |
|
Before Width: | Height: | Size: 393 KiB After Width: | Height: | Size: 374 KiB |
|
After Width: | Height: | Size: 266 KiB |
|
Before Width: | Height: | Size: 757 KiB After Width: | Height: | Size: 769 KiB |
|
Before Width: | Height: | Size: 530 KiB After Width: | Height: | Size: 531 KiB |
|
Before Width: | Height: | Size: 334 KiB After Width: | Height: | Size: 334 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 108 KiB |