feat(models): the lounge furniture and the desk books and mugs from blender - #186
Merged
Merged
Conversation
An espresso machine with a glowing light, a round-shouldered retro fridge with notes on it, and a counter with a wooden top and a sink, exported to src/client/models/kitchen.glb.
world/kitchen.ts puts the model where the old boxes stood, turned to face into the room, with the same colliders and the coffee machine's interactable only on the machine.
A monstera with split leaves on arching stalks, a snake plant with banded sword leaves in a glazed planter, a little ficus tree with a crown of shingled leaves, and an echeveria for the desks, exported to src/client/models/plants.glb. Each species is its pot, the old code-built pot's size, with everything growing out of it hung under the pot as its own object, so Christmas can hide the leaves and leave the pot.
office.ts clones a species out of plants.glb wherever a plant stood: the plants round the room take turns with the three floor species, the balcony and the loft skip the wide monstera, and the desks get the succulent. Their places and colliders stay as they were. holiday.ts now finds the leaves by name, so the Christmas tree is never among what it hides, and the props lab lines the four species up (show=plants).
models.ts gets piece(): a painted copy of one named object in a preload model, or an empty group if the model didn't load. plant() now uses it, and the lounge and the desk things will too, so a model holding several things placed each on their own has one way to hand them out.
A chunky diner mug with a round handle and coffee in it, and hardback books in three arrangements (three standing side by side, two standing with one leaning on them, and a short pile lying flat), exported to src/client/models/desk_props.glb. Each is a root of its own standing on the desk at its origin, spines toward the chair. The mug is the old code-built mug's size with its body round its origin, and every arrangement fits the old three boxes' footprint, so they stay clear of the laptop, the holiday present and whoever dances on the desk.
office.ts takes the desks' knick-knacks out of desk_props.glb with piece(): deskMug() paints the mug's body in the desk's chair color as before, and deskBooks() hands out an arrangement of books, the desks with books taking turns with the three. Which desk gets the mug, the succulent or the books stays as it was, so the holiday presents and pumpkins still land in the free back corner, and the mug and books stand where the old ones did. The props lab lines the pieces up (show=desk_props), and with desks=1 shows them on desks built by buildDesk, which is exported for it.
…table A plump three-seat sofa with seat and back cushions, rolled arms and little wooden feet, a throw pillow, a round floor pouf with piping round its middle and a button in its top, and a round coffee table on a pedestal, exported to src/client/models/lounge.glb as four pieces of their own so the office can place each one freely. They keep the old code-built lounge's sizes: the sofa is 4.2 by 1.0 with its seat cushions at 0.47, under the couch's hips and collider, the pouf is 0.4 tall, and the table's top is 0.9 round at 0.46, where the holiday pumpkin stands. The pieces are built the way the desk furniture is, with its Wood, Frame, WoodDark and Cloth material names.
office.ts places each piece of lounge.glb where the old boxes stood: the sofa turned to face the TV with a pillow either side of its middle, hung under the couch so a click on one still offers the couch, the coffee table, and a pouf for each of the two floor seats, each in its old color and turned to the TV. Every collider, seat id and seat radius stays as it was. models.ts preloads the model, and the props lab shows the pieces side by side (show=lounge).
The pillows lean on the back halfway between the couch's places, at 0.6 either side of its middle, where no sitter's body reaches; tucked against the arms they'd be in the side sitters' way, with only 0.17 m between a sitter's elbow and an arm. The couch's collider top comes down to its seat cushions (0.47) and each pouf's to its top (0.42), so standing on one no longer floats over it. The player test's copies of those colliders match.
# Conflicts: # src/client/lab/props.ts # src/client/world/office.ts
webdevcody
added a commit
that referenced
this pull request
Sep 29, 2026
…e maps branch Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
webdevcody
added a commit
that referenced
this pull request
Sep 29, 2026
…) into the desk signs branch Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The lounge's couch, its pillows, the two poufs and the coffee table, and the books and mugs on the desks, modelled in Blender with the kit from #177. Every piece is its own object in its model file and is placed on its own, so a future office editor could move any of them around instead of the lounge being one big asset.
What you get
How
blender/scripts/build_lounge.pywritessrc/client/models/lounge.glb:sofa,pillow,pouf,coffee_table. Each piece's origin is on the floor under its middle, facing +z. Its wood and frame materials use the same names as the desk furniture still to come, so they'll share a palette.blender/scripts/build_desk_props.pywritessrc/client/models/desk_props.glb:mug,books_upright,books_leaning,books_stack.world/models.ts:piece(model, part, paint)hands out a painted copy of one named object of a preload model, or an empty group if the model didn't load. The plants, the lounge and the desks all use it.world/office.ts:loungeCouch(),pouf(),coffeeTable(),deskMug()anddeskBooks()build the pieces. The pillows hang under the couch, so a click on one still offers the couch.tests/player.test.tshas its copies of those two colliders updated.lab/props.ts:show=lounge, andshow=desk_props(desks=1puts them on real desks).tests/lounge-model.test.ts,tests/desk-props-model.test.ts: piece and material names, sizes, seat and table heights, footprints clear of the laptop and the holiday spot, and triangle budgets.Checked
npm run typecheckandnpm run build:client.mainthere (workers.test.tshangs,repos.test.tsfails two tests and then hangs, and onemeetings.test.tscase expects/paths). Not run on macOS or Linux.Follow-up