Polish movement hall interiors: clear doors and bay columns, tone floors and windows.
Document hang keep-outs and period-module fixes; leave columns fixed while packing frames into gaps. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
1b760faf0d
commit
13f6f088b6
25 files changed
+1147
-318
No files matched your search
@@ -1,5 +1,14 @@
|
||||
import { useMemo } from 'react';
|
||||
import { CEILING_Y, EMBED, WALL_INNER, shade, type RoomDims, type WallId } from './geometry';
|
||||
import {
|
||||
CEILING_Y,
|
||||
DOOR_CLEAR_HALF,
|
||||
DOOR_CLEAR_Y,
|
||||
EMBED,
|
||||
WALL_INNER,
|
||||
shade,
|
||||
type RoomDims,
|
||||
type WallId,
|
||||
} from './geometry';
|
||||
|
||||
/** Wall-flush building blocks shared by the period interiors in this folder. */
|
||||
interface SurfaceProps {
|
||||
@@ -32,9 +41,40 @@ export function WallBand({
|
||||
span?: number;
|
||||
}) {
|
||||
const alongZ = wall === 'left' || wall === 'right';
|
||||
const len = (alongZ ? room.depth : room.width) * span;
|
||||
const thick = proud + EMBED * 2;
|
||||
const off = WALL_INNER + proud / 2 - EMBED;
|
||||
const matProps = {
|
||||
color,
|
||||
roughness,
|
||||
metalness,
|
||||
emissive,
|
||||
emissiveIntensity,
|
||||
};
|
||||
|
||||
// End-wall bands that sit in the door height must leave a clear gap for exits.
|
||||
const crossesDoor =
|
||||
!alongZ && y - height / 2 < DOOR_CLEAR_Y && room.halfW > DOOR_CLEAR_HALF + 0.35;
|
||||
|
||||
if (crossesDoor) {
|
||||
const z = wall === 'back' ? -room.halfD + off : room.halfD - off;
|
||||
const sideLen = room.halfW - DOOR_CLEAR_HALF;
|
||||
const leftX = (-room.halfW - DOOR_CLEAR_HALF) / 2;
|
||||
const rightX = (room.halfW + DOOR_CLEAR_HALF) / 2;
|
||||
return (
|
||||
<group>
|
||||
<mesh position={[leftX, y, z]}>
|
||||
<boxGeometry args={[sideLen, height, thick]} />
|
||||
<meshStandardMaterial {...matProps} />
|
||||
</mesh>
|
||||
<mesh position={[rightX, y, z]}>
|
||||
<boxGeometry args={[sideLen, height, thick]} />
|
||||
<meshStandardMaterial {...matProps} />
|
||||
</mesh>
|
||||
</group>
|
||||
);
|
||||
}
|
||||
|
||||
const len = (alongZ ? room.depth : room.width) * span;
|
||||
const args: [number, number, number] = alongZ ? [thick, height, len] : [len, height, thick];
|
||||
const pos: [number, number, number] =
|
||||
wall === 'back'
|
||||
@@ -48,13 +88,7 @@ export function WallBand({
|
||||
return (
|
||||
<mesh position={pos}>
|
||||
<boxGeometry args={args} />
|
||||
<meshStandardMaterial
|
||||
color={color}
|
||||
roughness={roughness}
|
||||
metalness={metalness}
|
||||
emissive={emissive}
|
||||
emissiveIntensity={emissiveIntensity}
|
||||
/>
|
||||
<meshStandardMaterial {...matProps} />
|
||||
</mesh>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user