Release: weekly deploy
@@ -1,5 +1,4 @@
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import * as THREE from 'three';
|
|
||||||
import type { GalleryWindowSpec, GalleryWindowStyle } from '../data/movement-interior-styles';
|
import type { GalleryWindowSpec, GalleryWindowStyle } from '../data/movement-interior-styles';
|
||||||
|
|
||||||
const WALL_HEIGHT = 4.2;
|
const WALL_HEIGHT = 4.2;
|
||||||
@@ -192,8 +191,6 @@ function SingleWindow({
|
|||||||
spec: GalleryWindowSpec;
|
spec: GalleryWindowSpec;
|
||||||
trimColor: string;
|
trimColor: string;
|
||||||
}) {
|
}) {
|
||||||
const glassColor = useMemo(() => new THREE.Color(spec.lightColor), [spec.lightColor]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<group>
|
<group>
|
||||||
<WindowFrame style={spec.style} width={spec.width} height={spec.height} trimColor={trimColor} />
|
<WindowFrame style={spec.style} width={spec.width} height={spec.height} trimColor={trimColor} />
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ interface MovementLayout {
|
|||||||
/** Band thickness in CSS pixels (proportional to influence_link_count). */
|
/** Band thickness in CSS pixels (proportional to influence_link_count). */
|
||||||
strokePx: number;
|
strokePx: number;
|
||||||
portraitSizePx: number;
|
portraitSizePx: number;
|
||||||
|
/** Saturated stream colour used for bands, branches, and artist lifespan tints. */
|
||||||
|
displayColor: string;
|
||||||
/** True when the on-band name label is wider than the visible movement span. */
|
/** True when the on-band name label is wider than the visible movement span. */
|
||||||
labelFitsInBand: boolean;
|
labelFitsInBand: boolean;
|
||||||
}
|
}
|
||||||
@@ -1953,14 +1955,13 @@ export default function MovementBands({
|
|||||||
};
|
};
|
||||||
}, [visibleMovements.length]);
|
}, [visibleMovements.length]);
|
||||||
|
|
||||||
const { layouts, layoutHeight, branches, childIdsByParent, streamStrokePx, portraitSizePx, streamCurveOffset } =
|
const { layouts, layoutHeight, branches, streamStrokePx, portraitSizePx, streamCurveOffset } =
|
||||||
useMemo(() => {
|
useMemo(() => {
|
||||||
if (visibleMovements.length === 0) {
|
if (visibleMovements.length === 0) {
|
||||||
return {
|
return {
|
||||||
layouts: [] as MovementLayout[],
|
layouts: [] as MovementLayout[],
|
||||||
layoutHeight: DEFAULT_CANVAS_HEIGHT,
|
layoutHeight: DEFAULT_CANVAS_HEIGHT,
|
||||||
branches: [] as BranchSegment[],
|
branches: [] as BranchSegment[],
|
||||||
childIdsByParent: new Map<number, number[]>(),
|
|
||||||
streamStrokePx: MAX_STREAM_STROKE_PX,
|
streamStrokePx: MAX_STREAM_STROKE_PX,
|
||||||
portraitSizePx: 78,
|
portraitSizePx: 78,
|
||||||
streamCurveOffset: 14,
|
streamCurveOffset: 14,
|
||||||
@@ -2148,7 +2149,6 @@ export default function MovementBands({
|
|||||||
layouts: [...layoutById.values()].sort((a, b) => a.depth - b.depth),
|
layouts: [...layoutById.values()].sort((a, b) => a.depth - b.depth),
|
||||||
layoutHeight,
|
layoutHeight,
|
||||||
branches: branchList,
|
branches: branchList,
|
||||||
childIdsByParent,
|
|
||||||
streamStrokePx,
|
streamStrokePx,
|
||||||
portraitSizePx,
|
portraitSizePx,
|
||||||
streamCurveOffset,
|
streamCurveOffset,
|
||||||
@@ -2250,7 +2250,6 @@ export default function MovementBands({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const layoutById = new Map((flowVisual?.layouts ?? layouts).map((l) => [l.movement.id, l]));
|
|
||||||
const drawLayouts = flowVisual?.layouts ?? layouts;
|
const drawLayouts = flowVisual?.layouts ?? layouts;
|
||||||
const drawBranches = flowVisual?.branches ?? branches;
|
const drawBranches = flowVisual?.branches ?? branches;
|
||||||
const drawCurveOffset = flowVisual?.streamCurveOffset ?? streamCurveOffset;
|
const drawCurveOffset = flowVisual?.streamCurveOffset ?? streamCurveOffset;
|
||||||
|
|||||||
@@ -1677,9 +1677,7 @@ function ArtistHall({
|
|||||||
size={[width, WALL_HEIGHT, WALL_THICKNESS]}
|
size={[width, WALL_HEIGHT, WALL_THICKNESS]}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<GalleryWall position={[0, WALL_HEIGHT / 2, -halfD]} size={[width, WALL_HEIGHT]} color={walls.main}
|
<GalleryWall position={[0, WALL_HEIGHT / 2, -halfD]} size={[width, WALL_HEIGHT]} color={walls.main} />
|
||||||
kind={interiorStyle?.surfaces.wall}
|
|
||||||
tint={interiorStyle?.tints.wall} />
|
|
||||||
)
|
)
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 13 MiB |
|
After Width: | Height: | Size: 232 KiB |
|
After Width: | Height: | Size: 2.4 MiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 42 KiB |