@adatechnology/game-items-three 0.6.2 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/test-area/area.ts","../src/area-layout.ts","../src/build-item.ts","../src/destruction.ts","../src/data/destruction.json","../src/kit.ts","../src/data/models.json","../src/models/canned-beans.ts","../src/data/opening.json","../src/opening.ts","../src/models/water-bottle.ts","../src/models/rice.ts","../src/models/military-ration.ts","../src/models/cachaca.ts","../src/models/first-aid-kit.ts","../src/models/bandage.ts","../src/models/amoxicillin.ts","../src/models/crowbar.ts","../src/models/hammer.ts","../src/models/machete.ts","../src/models/axe.ts","../src/models/nail-bat.ts","../src/models/hiking-backpack-40l.ts","../src/models/flashlight.ts","../src/models/portable-radio.ts","../src/models/house-key.ts","../src/models/survivor-diary.ts","../src/models/motorcycle-helmet.ts","../src/models/lpg-cylinder-13kg.ts","../src/models/fuel-jerrycan.ts","../src/models/walkie-talkies.ts","../src/models/batteries.ts","../src/models/wooden-plank.ts","../src/models/sugar.ts","../src/models/chocolate-bar.ts","../src/models/potatoes.ts","../src/models/biscuits.ts","../src/models/coffee.ts","../src/models/raw-beef.ts","../src/models/game-meat.ts","../src/models/jerked-beef.ts","../src/models/home-preserves.ts","../src/models/eggs.ts","../src/models/cassava-flour.ts","../src/models/beans.ts","../src/models/frozen-chicken.ts","../src/models/orange.ts","../src/models/condensed-milk.ts","../src/models/pasta.ts","../src/models/instant-noodles.ts","../src/models/cassava-root.ts","../src/models/canned-corn-and-peas.ts","../src/models/mortadella.ts","../src/models/fresh-fish.ts","../src/models/salted-fish.ts","../src/models/banana-bunch.ts","../src/models/honey-jar.ts","../src/models/bread.ts","../src/models/cheese.ts","../src/models/rapadura.ts","../src/models/dog-food.ts","../src/models/salt.ts","../src/models/snack-chips.ts","../src/models/canned-sausages.ts","../src/models/canned-sardines.ts","../src/models/cooking-oil.ts","../src/models/beer-can.ts","../src/models/energy-drink.ts","../src/models/water-jug-5l.ts","../src/models/sports-drink.ts","../src/models/milk-carton.ts","../src/models/soda-can.ts","../src/models/juice-box.ts","../src/models/communion-wine.ts","../src/models/coconut-water.ts","../src/models/dirty-water.ts","../src/models/painkillers.ts","../src/models/tramadol.ts","../src/models/ibuprofen.ts","../src/models/antihistamine.ts","../src/models/ceftriaxone.ts","../src/models/clonazepam.ts","../src/models/activated-charcoal.ts","../src/models/adhesive-bandages.ts","../src/models/medical-tape.ts","../src/models/sterile-gauze.ts","../src/models/povidone-iodine.ts","../src/models/suture-kit.ts","../src/models/exam-gloves.ts","../src/models/n95-mask.ts","../src/models/multivitamin.ts","../src/models/maintenance-medication.ts","../src/models/rehydration-salts.ts","../src/models/syringe.ts","../src/models/antivenom.ts","../src/models/saline-iv-bag.ts","../src/models/splint.ts","../src/models/thermometer.ts","../src/models/alcohol-70.ts","../src/models/can-opener.ts","../src/models/pliers.ts","../src/models/bolt-cutters.ts","../src/models/bucket.ts","../src/models/binoculars.ts","../src/models/matches.ts","../src/models/pocket-knife.ts","../src/models/screwdriver.ts","../src/models/adjustable-wrench.ts","../src/models/hoe.ts","../src/models/fire-extinguisher.ts","../src/models/duct-tape.ts","../src/models/camp-stove.ts","../src/models/lighter.ts","../src/models/lockpick-kit.ts","../src/models/sewing-kit.ts","../src/models/car-jack.ts","../src/models/mechanic-toolbox.ts","../src/models/gas-torch.ts","../src/models/inverter-welder.ts","../src/models/pot.ts","../src/models/cordless-drill.ts","../src/models/flint-striker.ts","../src/models/sharpening-stone.ts","../src/models/shovel.ts","../src/models/hacksaw.ts","../src/models/handsaw.ts","../src/models/scissors.ts","../src/models/recurve-bow.ts","../src/models/crossbow.ts","../src/models/iron-pipe.ts","../src/models/meat-cleaver.ts","../src/models/slingshot.ts","../src/models/knife.ts","../src/models/tactical-knife.ts","../src/models/arrows-and-bolts.ts","../src/models/sickle.ts","../src/models/cast-iron-skillet.ts","../src/models/improvised-spear.ts","../src/models/hatchet.ts","../src/models/sledgehammer.ts","../src/models/chainsaw.ts","../src/models/pickaxe.ts","../src/models/baseball-bat.ts","../src/models/police-baton.ts","../src/models/wire-roll.ts","../src/models/barbed-wire.ts","../src/models/glass-shards.ts","../src/models/sheet-metal.ts","../src/models/cement-bag.ts","../src/models/epoxy-glue.ts","../src/models/electronic-components.ts","../src/models/rope.ts","../src/models/copper-wire.ts","../src/models/pet-bottle.ts","../src/models/glass-bottle.ts","../src/models/empty-can.ts","../src/models/firewood.ts","../src/models/tarp.ts","../src/models/screws.ts","../src/models/nails.ts","../src/models/raffia-sack.ts","../src/models/scrap-metal.ts","../src/models/bricks.ts","../src/models/rag.ts","../src/models/rebar.ts","../src/models/lubricant-spray.ts","../src/models/army-camouflage-uniform.ts","../src/models/backpack.ts","../src/models/ballistic-vest.ts","../src/models/battery-9v.ts","../src/models/bean-seeds.ts","../src/models/beekeeper-suit.ts","../src/models/candles.ts","../src/models/car-alarm-remote.ts","../src/models/car-battery-12v.ts","../src/models/car-key.ts","../src/models/cash.ts","../src/models/cassava-cuttings.ts","../src/models/cb-radio.ts","../src/models/cell-key.ts","../src/models/charcoal-bag.ts","../src/models/cigarettes.ts","../src/models/city-map.ts","../src/models/combat-boots.ts","../src/models/cooler-box.ts","../src/models/corn-seeds.ts","../src/models/crossbody-bag.ts","../src/models/delivery-bag.ts","../src/models/denim-jacket.ts","../src/models/diesel.ts","../src/models/diy-magazine.ts","../src/models/dog-tag.ts","../src/models/electric-fence-energizer.ts","../src/models/extension-cord.ts","../src/models/fanny-pack.ts","../src/models/farmers-almanac.ts","../src/models/fertilizer-bag.ts","../src/models/firefighter-suit.ts","../src/models/fishing-net.ts","../src/models/fishing-rod.ts","../src/models/fishing-tackle-box.ts","../src/models/flip-flops.ts","../src/models/folding-solar-panel.ts","../src/models/gas-cartridge.ts","../src/models/gasoline.ts","../src/models/generator-key.ts","../src/models/hard-hat.ts","../src/models/headlamp.ts","../src/models/hoodie.ts","../src/models/janitor-keys.ts","../src/models/jeans.ts","../src/models/kale-and-lettuce-seeds.ts","../src/models/kerosene.ts","../src/models/laptop.ts","../src/models/leather-motorcycle-jacket.ts","../src/models/leather-motorcycle-pants.ts","../src/models/leather-work-gloves.ts","../src/models/led-camp-lantern.ts","../src/models/magazine-arm-guard.ts","../src/models/magazines-and-comics.ts","../src/models/master-key.ts","../src/models/mechanic-coveralls.ts","../src/models/military-backpack.ts","../src/models/military-radio.ts","../src/models/mobile-phone.ts","../src/models/motor-oil.ts","../src/models/night-vision-goggles.ts","../src/models/note.ts","../src/models/padded-coat.ts","../src/models/padlock-key.ts","../src/models/photo.ts","../src/models/portable-generator.ts","../src/models/power-bank.ts","../src/models/pumpkin-seeds.ts","../src/models/raincoat.ts","../src/models/road-map.ts","../src/models/rolling-suitcase.ts","../src/models/rubber-boots.ts","../src/models/safe-key.ts","../src/models/safety-goggles.ts","../src/models/sheet-metal-forearm-guard.ts","../src/models/shopping-bag.ts","../src/models/shopping-cart.ts","../src/models/skill-book.ts","../src/models/snare-trap.ts","../src/models/sneakers.ts","../src/models/tactical-vest.ts","../src/models/technical-manual.ts","../src/models/tool-belt.ts","../src/models/trash-bag.ts","../src/models/trekking-backpack-70l.ts","../src/models/tshirt.ts","../src/models/watering-can.ts","../src/models/wheelbarrow.ts","../src/models/windup-alarm-clock.ts","../src/models/shipped.ts","../src/models/registry.ts","../src/shapes.ts","../src/wear.ts","../src/budgets.ts","../src/models/deviations.ts","../src/thumbnails.ts"],"sourcesContent":["import { discardObject3D } from '@adatechnology/game-shapes-three'\nimport { markKitOrigin } from '@adatechnology/game-contracts'\nimport type * as THREE_NS from 'three'\nimport type { AreaPlacement, BenchChange, DestructibleSpec, ModuleArea, ModuleControl, ModuleHost, ModuleLayer, ModuleMetric, ModuleScenario, TestableItem, TestableModule, Vec3 } from '@adatechnology/game-contracts'\nimport { furnitureSpec } from '@adatechnology/game-floorplan-three'\nimport { rng } from '@adatechnology/game-interactables'\nimport { canCraft, craft, createFindsProvider, freshness, ITEM_CATEGORIES } from '@adatechnology/game-items'\nimport type { FindStack, FindsProvider, FindsQuery, ItemDef, ItemsCatalog, RecipeDef } from '@adatechnology/game-items'\n\nimport { ITEM_PREFIX, SHELF_HEIGHT, SHOWCASE_PREFIX, shelvesLayout } from '../area-layout'\nimport type { ShelfPlan } from '../area-layout'\nimport { buildItem } from '../build-item'\nimport type { DrawableItem } from '../build-item'\nimport { itemContents, SHELL_PART_ID } from '../destruction'\nimport { itemOpening, openItem, setOpeningContents, turnItem } from '../opening'\nimport type { ContentsSubject } from '../destruction'\nimport { checkBudget, countDrawCalls, countTriangles, ITEM_BUDGETS } from '../budgets'\nimport { MODEL_BUDGET_DEVIATIONS } from '../models/deviations'\nimport { itemThumbnailSvg } from '../thumbnails'\nimport { defaultItemModels } from '../models/registry'\nimport type { ItemModelRegistry } from '../models/registry'\nimport { SHIPPED_MODELS } from '../models/shipped'\nimport { setWear } from '../wear'\nimport type { WearStage } from '../wear'\n\nexport interface ItemsTestModuleOptions {\n /** The catalog to lay out (for example `createGoodsItems()` of `game-items-goods`). The module knows no content of its own. */\n catalog: ItemsCatalog\n /** `en` or `pt-BR` (default). */\n locale?: string\n /** Text of a key such as `item.canned_beans`, `place.house`, `category.food`, `container.fridge`, `recipe.stew` (the goods package has them in `goodsText`); without it the module falls back to the id. */\n translate?: (key: string, locale: string) => string | undefined\n /** Seed of the finds roll (default 1). */\n seed?: number\n /** Wear the items start with: `new` (default), `used` or `spoiled`. */\n wear?: string\n /** The finds provider; default the one of `game-items` over `catalog`. A game gives its own (floorplan bindings, pools). */\n provider?: FindsProvider\n /**\n * Draws a person of the kit to judge the scale by (for example a survivor of `createPersonBuilder` of `game-characters-three`); the module brings it to 1.80 m. Without it\n * the area shows the ruler alone.\n */\n person?: (THREE: unknown) => THREE_NS.Object3D\n /** The models to show and draw with (`createItemModels(...)`); default the shared set behind `registerItemModel`. */\n models?: ItemModelRegistry\n}\n\nexport const SHOWCASE_STAND_ID = 'stand_models'\nexport const RULER_ID = 'ruler_155'\nexport const HUMAN_ID = 'human_180'\nexport const FINDS_TABLE_ID = 'finds_table'\nexport const RULER_HEIGHT = 1.55\nexport const HUMAN_HEIGHT = 1.8\n\nconst STAND = { at: [0, 0, 9.5] as Vec3, radius: 2.1, height: 0.8, ring: 1.35 }\nconst RULER_AT: Vec3 = [-6.5, 0, 9]\nconst HUMAN_AT: Vec3 = [-5.4, 0, 9]\nconst TABLE = { at: [7, 0, 9.5] as Vec3, length: 3.2, depth: 1, height: 0.8 }\n// the furniture of the catalogue the shelves and the finds table are (an iron bench with an open shelf under the top, a wooden table)\nconst SHELF_FURNITURE = 'workbench'\nconst TABLE_FURNITURE = 'meeting_table'\nconst WEARS = ['new', 'used', 'spoiled'] as const\nconst WEAR_STAGE: Readonly<Record<string, WearStage>> = { new: 0, used: 1, spoiled: 2 }\nconst SPIN = 0.6\nconst MAX_COPIES = 5\nconst CATEGORY_ALL = 'all'\nconst BOX_COLOR = 0x4fc3f7\nconst HIGHLIGHT = 0x6a3a00\n\ninterface Text {\n group: string\n name: string\n shelf: string\n stand: string\n ruler: string\n human: string\n table: string\n control: Record<'category' | 'wear' | 'age_days' | 'storage' | 'powered' | 'place' | 'container' | 'state' | 'day' | 'seed' | 'roll_finds' | 'recipe' | 'craft', string>\n hint: Record<'age_days' | 'powered' | 'day' | 'roll_finds' | 'craft', string>\n all: string\n wears: Record<(typeof WEARS)[number], string>\n states: Record<'normal' | 'fortified' | 'abandoned', string>\n storages: Record<string, string>\n layers: Record<'labels' | 'boxes' | 'simple_shapes', string>\n metrics: Record<'items' | 'draw_calls' | 'triangles' | 'modeled' | 'finds', string>\n rolled: string\n rolledNothing: string\n crafted: string\n craftMissing: string\n craftEffect: string\n scenarios: Record<'real_size' | 'models' | 'budgets' | 'ruler' | 'finds' | 'freshness' | 'craft', string>\n}\n\nconst TEXT: Record<string, Text> = {\n en: {\n group: 'Items',\n name: 'Items area',\n shelf: 'Shelf of {category}',\n stand: 'Showcase stand of the 3D models',\n ruler: 'Ruler 1.55 m',\n human: 'Human figure 1.80 m',\n table: 'Finds table',\n control: {\n category: 'Category',\n wear: 'Wear',\n age_days: 'Age',\n storage: 'Storage',\n powered: 'Storage has power',\n place: 'Place',\n container: 'Container',\n state: 'State of the place',\n day: 'Outbreak day',\n seed: 'Seed',\n roll_finds: 'Roll finds',\n recipe: 'Recipe',\n craft: 'Craft',\n },\n hint: {\n age_days: 'Days the food has been kept: it spoils by its shelf life, faster or slower by the storage',\n powered: 'A fridge or freezer only keeps the food while it has power',\n day: 'Days since the outbreak: 0 is the normal world',\n roll_finds: 'Draws what the container holds and lays the stacks on the finds table',\n craft: 'Makes the recipe with exactly what it asks for and lays the result on the finds table',\n },\n all: 'All',\n wears: { new: 'New', used: 'Used', spoiled: 'Spoiled' },\n states: { normal: 'Normal', fortified: 'Fortified', abandoned: 'Abandoned' },\n storages: {},\n layers: { labels: 'Labels', boxes: 'Size boxes', simple_shapes: 'Highlight simple shapes' },\n metrics: { items: 'Items shown', draw_calls: 'Draw calls', triangles: 'Triangles', modeled: 'With a team model', finds: 'Stacks on the table' },\n rolled: 'Finds in {container} of {place} ({state}, day {day}): {stacks} stacks',\n rolledNothing: '{container} of {place} holds nothing',\n crafted: 'Crafted {recipe}: {output} ({seconds} s)',\n craftMissing: 'Cannot craft {recipe}: missing {missing}',\n craftEffect: 'effect {effect}',\n scenarios: {\n real_size: 'Every item is drawn at its real size',\n models: 'The 24 models of the team are shipped and draw their items',\n budgets: 'Models and shapes stay within the triangle and draw call budgets',\n ruler: 'The ruler is 1.55 m and the human figure 1.80 m',\n finds: 'The finds roll is the same for the same seed',\n freshness: 'Food spoils with age and the fridge slows it down',\n craft: 'A recipe made with what it asks for gives its output',\n },\n },\n 'pt-BR': {\n group: 'Itens',\n name: 'Área de itens',\n shelf: 'Prateleira de {category}',\n stand: 'Pedestal dos modelos 3D',\n ruler: 'Régua de 1,55 m',\n human: 'Silhueta humana de 1,80 m',\n table: 'Mesa de achados',\n control: {\n category: 'Categoria',\n wear: 'Desgaste',\n age_days: 'Idade',\n storage: 'Armazenamento',\n powered: 'Armazenamento com energia',\n place: 'Lugar',\n container: 'Recipiente',\n state: 'Estado do lugar',\n day: 'Dia do surto',\n seed: 'Semente',\n roll_finds: 'Sortear achados',\n recipe: 'Receita',\n craft: 'Fabricar',\n },\n hint: {\n age_days: 'Dias que a comida ficou guardada: estraga pela validade, mais rápido ou mais devagar conforme onde está',\n powered: 'Geladeira e freezer só conservam enquanto têm energia',\n day: 'Dias desde o surto: 0 é o mundo normal',\n roll_finds: 'Sorteia o que o recipiente guarda e põe as pilhas na mesa de achados',\n craft: 'Faz a receita com exatamente o que ela pede e põe o resultado na mesa de achados',\n },\n all: 'Todas',\n wears: { new: 'Novo', used: 'Usado', spoiled: 'Estragado' },\n states: { normal: 'Normal', fortified: 'Fortificado', abandoned: 'Abandonado' },\n storages: {},\n layers: { labels: 'Rótulos', boxes: 'Caixas de tamanho', simple_shapes: 'Destacar formas simples' },\n metrics: { items: 'Itens à mostra', draw_calls: 'Chamadas de desenho', triangles: 'Triângulos', modeled: 'Com modelo do time', finds: 'Pilhas na mesa' },\n rolled: 'Achados em {container} de {place} ({state}, dia {day}): {stacks} pilhas',\n rolledNothing: '{container} de {place} não tem nada',\n crafted: 'Fabricou {recipe}: {output} ({seconds} s)',\n craftMissing: 'Não dá para fabricar {recipe}: falta {missing}',\n craftEffect: 'efeito {effect}',\n scenarios: {\n real_size: 'Todo item é desenhado no tamanho real',\n models: 'Os 24 modelos do time vêm no kit e desenham os seus itens',\n budgets: 'Modelos e formas ficam dentro do orçamento de triângulos e de chamadas de desenho',\n ruler: 'A régua tem 1,55 m e a silhueta humana 1,80 m',\n finds: 'O sorteio de achados é o mesmo para a mesma semente',\n freshness: 'A comida estraga com a idade e a geladeira atrasa isso',\n craft: 'Uma receita feita com o que ela pede dá o que promete',\n },\n },\n}\nconst textOf = (locale: string): Text => TEXT[locale] ?? (TEXT.en as Text)\nconst fill = (template: string, vars: Record<string, string | number>): string => template.replace(/\\{(\\w+)\\}/g, (_, key: string) => String(vars[key] ?? ''))\nconst humanize = (id: string): string => id.replace(/_/g, ' ').replace(/^./, (c) => c.toUpperCase())\n\n/** What the scenarios of the area ask of the module (and what a host or a test may read). */\nexport interface ItemsAreaState {\n readonly category: string\n readonly wear: string\n readonly ageDays: number\n readonly storage: string\n readonly powered: boolean\n readonly place: string\n readonly container: string\n readonly state: string\n readonly day: number\n readonly seed: number\n readonly recipe: string\n}\n\nexport interface ItemsTestModule extends TestableModule {\n /** Everything the module has put in the scene so far, with what was measured when it was drawn. */\n placed(): ReadonlyArray<{ id: string; itemId: string; group: 'shelf' | 'showcase'; kind: 'model' | 'shape'; size: readonly [number, number, number]; root: THREE_NS.Object3D }>\n /** The stacks now on the finds table. */\n finds(): readonly FindStack[]\n /** The shelves of the layout. */\n shelves(): readonly ShelfPlan[]\n readonly state: ItemsAreaState\n /** The bench actions, callable without a host (what the buttons do). */\n rollFinds(): readonly FindStack[]\n craftSelected(): { ok: boolean; missing: readonly string[] }\n selectRecipe(id: string): void\n /** The box of a drawn object, metres [x, y, z] (needs the host's three.js namespace: null before the module is attached or an item built). */\n measure(root: THREE_NS.Object3D): [number, number, number] | null\n}\n\n/** Wear stage of an item from the age the bench sets: a food past its best turns spoiled, a food getting old turns used. */\nconst stageOf = (catalog: ItemsCatalog, item: ItemDef, base: WearStage, ageDays: number, storage: string, powered: boolean): WearStage => {\n if (item.shelfLife === undefined || ageDays <= 0) return base\n const state = freshness(item, { ageDays: 0, since: 0, storage, storedAt: 0 }, ageDays, { powered, rules: catalog.rules })\n const aged: WearStage = state === 'fresh' ? 0 : state === 'stale' ? 1 : 2\n return Math.max(base, aged) as WearStage\n}\n\nconst sizeOfModel = (modelSet: ItemModelRegistry, id: string): [number, number, number] | undefined => {\n const entry = modelSet.entry(id)\n return entry ? [entry.teamBox[0] * entry.scale, entry.teamBox[1] * entry.scale, entry.teamBox[2] * entry.scale] : undefined\n}\n\n/**\n * The items test area as a `TestableModule` of @adatechnology/game-contracts: every item of a catalog on shelves by category at real size (the real model of the team where there is\n * one, the simple shape of its category elsewhere), a stand where the 24 models turn, a ruler and a human figure to judge the scale, and a table where the finds of a container\n * and the result of a recipe are laid. The bench sets wear, age and storage, the place, container, state, outbreak day and seed of the finds, and the recipe.\n */\nexport function createItemsTestModule(options: ItemsTestModuleOptions): ItemsTestModule {\n const { catalog } = options\n const locale = options.locale ?? 'pt-BR'\n const text = textOf(locale)\n const label = (key: string, fallback: string): string => {\n const found = options.translate?.(key, locale)\n return found !== undefined && found !== key ? found : fallback\n }\n const nameOf = (item: ItemDef): string => label(item.name ?? `item.${item.id}`, label(`item.${item.id}`, humanize(item.id)))\n const categoryName = (id: string): string => label(`category.${id}`, humanize(id))\n const provider = options.provider ?? createFindsProvider(catalog)\n const modelSet = options.models ?? defaultItemModels()\n\n const items = catalog.list()\n const categories = [...ITEM_CATEGORIES.map((c) => c.id), ...[...catalog.categories.keys()].filter((id) => !ITEM_CATEGORIES.some((c) => c.id === id))].filter((id) => items.some((item) => item.category === id))\n // a sealed item lies next to the first of its opening tools the catalogue has (a can opener beside each tin), so the tool is at hand where the item is picked up\n const openerOf = (item: ItemDef): ItemDef | undefined => {\n const id = item.seal?.openWith?.find((tool) => catalog.has(tool))\n return id === undefined ? undefined : catalog.get(id)\n }\n const laid = items.flatMap((item) => {\n const opener = openerOf(item)\n return opener ? [item, { id: opener.id, category: item.category, size: opener.size }] : [item]\n })\n const shelves = shelvesLayout(laid, categories)\n const showcase = modelSet.list().map((id) => ({ id, size: sizeOfModel(modelSet, id) as [number, number, number], def: catalog.has(id) ? catalog.get(id) : undefined }))\n\n const state: { -readonly [K in keyof ItemsAreaState]: ItemsAreaState[K] } = {\n category: CATEGORY_ALL,\n wear: WEARS.includes(options.wear as (typeof WEARS)[number]) ? (options.wear as string) : 'new',\n ageDays: 0,\n storage: catalog.rules.storage.ambient ? 'ambient' : (Object.keys(catalog.rules.storage)[0] ?? 'ambient'),\n powered: true,\n place: catalog.places.has('house') ? 'house' : ([...catalog.places.keys()][0] ?? 'house'),\n container: catalog.containers.has('fridge') ? 'fridge' : ([...catalog.containers.keys()][0] ?? 'fridge'),\n state: 'normal',\n day: 0,\n seed: options.seed ?? 1,\n recipe: [...catalog.recipes.keys()][0] ?? '',\n }\n\n interface Entry {\n id: string\n itemId: string\n group: 'shelf' | 'showcase'\n category: string\n def: ItemDef | undefined\n kind: 'model' | 'shape'\n size: readonly [number, number, number]\n root: THREE_NS.Group\n triangles: number\n drawCalls: number\n }\n const entries: Entry[] = []\n let host: ModuleHost | null = null\n let latestTHREE: typeof THREE_NS | null = null\n let stack: FindStack[] = []\n let findsGroup: THREE_NS.Group | null = null\n let boxes: THREE_NS.Object3D[] = []\n const layers = { labels: true, boxes: false, simple_shapes: false }\n\n const baseStage = (): WearStage => WEAR_STAGE[state.wear] ?? 0\n const stageFor = (def: ItemDef | undefined): WearStage => (def ? stageOf(catalog, def, baseStage(), state.ageDays, state.storage, state.powered) : baseStage())\n\n const drawable = (def: ItemDef): DrawableItem => def\n const register = (entry: Omit<Entry, 'triangles' | 'drawCalls'>): void => {\n entries.push({ ...entry, triangles: countTriangles(entry.root), drawCalls: countDrawCalls(entry.root) })\n }\n\n // the shelves and the finds table are pieces of the furniture catalogue (`furnitureSpec` of game-floorplan-three), drawn by the house renderer at their measures\n const furnitureItem = (id: string, name: string, type: string, size: { w: number; d: number; h: number }, decorate?: (root: THREE_NS.Object3D) => void): TestableItem => ({\n id,\n name,\n movable: false,\n build: (THREE: unknown) => {\n const piece = furnitureSpec(THREE, type, { ...size, options: { chairs: false } })\n const root = piece.build(THREE) as THREE_NS.Object3D\n root.userData.furnitureSpec = { ...piece.spec, name }\n decorate?.(root)\n return root\n },\n spec: (root: unknown) => (root as THREE_NS.Object3D).userData.furnitureSpec as DestructibleSpec,\n })\n\n const shelfItem = (plan: ShelfPlan): TestableItem =>\n furnitureItem(plan.id, fill(text.shelf, { category: categoryName(plan.category) }), SHELF_FURNITURE, { w: plan.length, d: plan.depth, h: SHELF_HEIGHT }, (root) => {\n root.userData.category = plan.category\n root.userData.shelf = true\n shelfRoots.push(root)\n })\n const shelfRoots: THREE_NS.Object3D[] = []\n\n /** The liquid a can holds, as the room's `TestableItem.fluid`: a hole in the shell leaks it. */\n const fluidOf = (subject: ContentsSubject): Pick<TestableItem, 'fluid'> => {\n const contents = itemContents(subject)\n return contents ? { fluid: { container: contents.container, part: SHELL_PART_ID } } : {}\n }\n\n /**\n * A sealed item (`ItemDef.seal`) whose model opens: the room opens it before eating (`TestableItem.seal`), with the tools of the seal as catalog ids and as\n * the ids of this area's items (`item_can_opener`), and draws it open with `openItem`. A tin is eaten (`eat`); the other uses stay the room's defaults.\n */\n const sealOf = (def: ItemDef, fluid: Pick<TestableItem, 'fluid'>): Pick<TestableItem, 'seal' | 'fluid'> => {\n const model = def.model\n if (!def.seal || model === undefined || !itemOpening(model)) return fluid\n const openWith = def.seal.openWith ? [...def.seal.openWith, ...def.seal.openWith.map((id) => `${ITEM_PREFIX}${id}`)] : undefined\n const seal = {\n ...def.seal,\n ...(openWith ? { openWith } : {}),\n open: (root: unknown) => void (latestTHREE && openItem(latestTHREE, root as THREE_NS.Object3D, model)),\n contents: (root: unknown, share: number) => setOpeningContents(root as THREE_NS.Object3D, share),\n // a screw cap is turned off by the other hand before the first bite or sip\n ...(itemOpening(model)?.style === 'screw_cap'\n ? { openUse: 'unscrew', turn: (root: unknown, state: { readonly turned: number; readonly lift: number }) => void turnItem(root as THREE_NS.Object3D, model, state) }\n : {}),\n }\n const eaten = def.category === 'food' && fluid.fluid ? { fluid: { ...fluid.fluid, uses: ['eat', 'pour_out'] } } : fluid\n return { ...eaten, seal }\n }\n\n const itemOf = (def: ItemDef): TestableItem => ({\n id: `${ITEM_PREFIX}${def.id}`,\n name: nameOf(def),\n movable: true,\n thumbnail: itemThumbnailSvg(drawable(def)),\n ...sealOf(def, fluidOf({ ...(def.model === undefined ? {} : { model: def.model }), size: def.size, weight: def.weight })),\n build: (THREE: unknown) => {\n const T = THREE as typeof THREE_NS\n latestTHREE = T\n const model = buildItem(T, drawable(def), { wear: stageFor(def), destructible: true, models: modelSet })\n register({ id: `${ITEM_PREFIX}${def.id}`, itemId: def.id, group: 'shelf', category: def.category, def, kind: model.kind, size: def.size, root: model.root })\n return model.root\n },\n })\n\n const showcaseItem = (model: (typeof showcase)[number]): TestableItem => ({\n id: `${SHOWCASE_PREFIX}${model.id}`,\n name: model.def ? nameOf(model.def) : label(`item.${model.id}`, humanize(model.id)),\n movable: false,\n ...fluidOf({ model: model.id, size: model.size, ...(model.def ? { weight: model.def.weight } : {}) }),\n build: (THREE: unknown) => {\n const T = THREE as typeof THREE_NS\n const subject: DrawableItem = { id: model.id, category: model.def?.category ?? '', size: model.size, model: model.id, ...(model.def ? { weight: model.def.weight } : {}) }\n const built = buildItem(T, subject, { wear: stageFor(model.def), destructible: true, models: modelSet })\n register({ id: `${SHOWCASE_PREFIX}${model.id}`, itemId: model.id, group: 'showcase', category: model.def?.category ?? '', def: model.def, kind: built.kind, size: model.size, root: built.root })\n return built.root\n },\n })\n\n const standItem = (): TestableItem => ({\n id: SHOWCASE_STAND_ID,\n name: text.stand,\n movable: false,\n build: (THREE: unknown) => {\n const T = THREE as typeof THREE_NS\n // the display stand of the bench and the measuring ruler are aids of the area, not pieces\n const group = markKitOrigin(new T.Group(), { owner: 'game-items-three', kind: 'aid' })\n const base = new T.Mesh(new T.CylinderGeometry(STAND.radius, STAND.radius + 0.1, STAND.height - 0.04, 40), new T.MeshStandardMaterial({ color: 0x3a3d44, roughness: 0.8 }))\n base.position.y = (STAND.height - 0.04) / 2\n const top = new T.Mesh(new T.CylinderGeometry(STAND.radius, STAND.radius, 0.04, 40), new T.MeshStandardMaterial({ color: 0xcfcab8, roughness: 0.6 }))\n top.position.y = STAND.height - 0.02\n group.add(base, top)\n return group\n },\n })\n\n const rulerItem = (): TestableItem => ({\n id: RULER_ID,\n name: text.ruler,\n movable: false,\n build: (THREE: unknown) => {\n const T = THREE as typeof THREE_NS\n const group = markKitOrigin(new T.Group(), { owner: 'game-items-three', kind: 'aid' })\n const post = new T.Mesh(new T.BoxGeometry(0.06, RULER_HEIGHT, 0.02), new T.MeshStandardMaterial({ color: 0xe8e2c8, roughness: 0.7 }))\n post.position.y = RULER_HEIGHT / 2\n group.add(post)\n const tick = new T.MeshStandardMaterial({ color: 0x1b1b1b })\n for (let cm = 0; cm <= 155; cm += 5) {\n const long = cm % 10 === 0\n const mark = new T.Mesh(new T.BoxGeometry(long ? 0.05 : 0.03, 0.004, 0.024), tick)\n mark.position.set(0.03 + (long ? 0.025 : 0.015), cm / 100, 0)\n group.add(mark)\n }\n const base = new T.Mesh(new T.BoxGeometry(0.3, 0.03, 0.3), new T.MeshStandardMaterial({ color: 0x55585c }))\n base.position.y = 0.015\n group.add(base)\n group.userData.height = RULER_HEIGHT\n return group\n },\n })\n\n // a person of the kit (the host's `person`, a builder of game-characters-three) brought to 1.80 m\n const humanItem = (person: NonNullable<ItemsTestModuleOptions['person']>): TestableItem => ({\n id: HUMAN_ID,\n name: text.human,\n movable: false,\n build: (THREE: unknown) => {\n const T = THREE as typeof THREE_NS\n const root = person(THREE)\n const height = new T.Box3().setFromObject(root).getSize(new T.Vector3()).y\n if (height > 0) root.scale.multiplyScalar(HUMAN_HEIGHT / height)\n root.userData.height = HUMAN_HEIGHT\n return root\n },\n })\n\n const tableItem = (): TestableItem => furnitureItem(FINDS_TABLE_ID, text.table, TABLE_FURNITURE, { w: TABLE.length, d: TABLE.depth, h: TABLE.height })\n\n const liveEntries = (): Entry[] => entries.filter((entry) => entry.root.parent !== null)\n const visibleEntries = (): Entry[] => liveEntries().filter((entry) => entry.root.visible)\n\n const applyCategory = (): void => {\n for (const entry of entries) if (entry.group === 'shelf') entry.root.visible = state.category === CATEGORY_ALL || entry.category === state.category\n for (const shelf of shelfRoots) shelf.visible = state.category === CATEGORY_ALL || shelf.userData.category === state.category\n }\n const applyWear = (): void => {\n for (const entry of entries) setWear(entry.root, stageFor(entry.def))\n }\n const applyHighlight = (): void => {\n for (const entry of entries) {\n entry.root.traverse((object) => {\n const mesh = object as THREE_NS.Mesh\n if (!mesh.isMesh) return\n for (const material of Array.isArray(mesh.material) ? mesh.material : [mesh.material]) {\n const standard = material as THREE_NS.MeshStandardMaterial\n if (standard.emissive) standard.emissive.setHex(layers.simple_shapes && entry.kind === 'shape' ? HIGHLIGHT : 0x000000)\n }\n })\n }\n }\n const clearBoxes = (): void => {\n discardObject3D(boxes)\n boxes = []\n }\n const applyBoxes = (): void => {\n clearBoxes()\n if (!layers.boxes || !host || !latestTHREE) return\n const T = latestTHREE\n const scene = host.scene as THREE_NS.Scene\n for (const entry of liveEntries()) {\n if (!entry.root.visible) continue\n const box = new T.Box3().setFromObject(entry.root)\n if (box.isEmpty()) continue\n const helper = new T.Box3Helper(box, BOX_COLOR)\n scene.add(helper)\n boxes.push(helper)\n }\n }\n\n const clearFinds = (): void => {\n if (findsGroup) {\n discardObject3D(findsGroup)\n findsGroup = null\n }\n }\n const labelSprite = (T: typeof THREE_NS, content: string): THREE_NS.Sprite | null => {\n if (typeof document === 'undefined') return null\n const canvas = document.createElement('canvas')\n const context = canvas.getContext('2d')\n if (!context) return null\n canvas.width = 256\n canvas.height = 64\n context.fillStyle = 'rgba(15,17,20,0.78)'\n context.fillRect(0, 0, 256, 64)\n context.fillStyle = '#ffffff'\n context.font = '24px sans-serif'\n context.textAlign = 'center'\n context.textBaseline = 'middle'\n context.fillText(content.length > 22 ? `${content.slice(0, 21)}…` : content, 128, 32)\n const texture = new T.CanvasTexture(canvas)\n const sprite = new T.Sprite(new T.SpriteMaterial({ map: texture, depthTest: false, transparent: true }))\n sprite.scale.set(0.5, 0.125, 1)\n sprite.renderOrder = 10\n return sprite\n }\n /** Draws the stacks on the finds table: each item once per unit (up to five) side by side at real size, with a label of its name and count. */\n const showFinds = (): void => {\n clearFinds()\n if (!host || !latestTHREE) return\n const T = latestTHREE\n const group = new T.Group()\n group.position.set(TABLE.at[0], TABLE.height + 0.005, TABLE.at[2])\n let cursor = -TABLE.length / 2 + 0.1\n const scale = 1\n for (const found of stack) {\n const def = catalog.get(found.itemId)\n const copies = Math.min(found.count, MAX_COPIES)\n const start = cursor\n for (let i = 0; i < copies; i++) {\n const model = buildItem(T, drawable(def), { wear: stageFor(def), models: modelSet })\n model.root.position.set(cursor + (def.size[0] * scale) / 2, 0, 0)\n group.add(model.root)\n cursor += def.size[0] + 0.03\n }\n const sprite = labelSprite(T, `${nameOf(def)} x${found.count}`)\n if (sprite) {\n sprite.position.set((start + cursor) / 2, Math.max(def.size[1], 0.1) + 0.12, 0)\n sprite.visible = layers.labels\n sprite.userData.label = true\n group.add(sprite)\n }\n cursor += 0.1\n }\n ;(host.scene as THREE_NS.Scene).add(group)\n findsGroup = group\n }\n const applyLabels = (): void => {\n findsGroup?.traverse((object) => {\n if (object.userData.label) object.visible = layers.labels\n })\n }\n\n const rollFinds = (): readonly FindStack[] => {\n const query: FindsQuery = { place: state.place, container: state.container, state: state.state, rng: rng(state.seed), day: state.day }\n stack = [...(provider.findsFor(query) ?? [])]\n showFinds()\n const container = label(`container.${state.container}`, humanize(state.container))\n const place = label(`place.${state.place}`, humanize(state.place))\n host?.log(stack.length > 0 ? fill(text.rolled, { container, place, state: text.states[state.state as keyof Text['states']] ?? state.state, day: state.day, stacks: stack.length }) : fill(text.rolledNothing, { container, place }), { place: state.place, container: state.container, seed: state.seed })\n return stack\n }\n\n /** What the character needs to make `recipe`: the items, the stations and the tools it asks for, once. */\n const kitFor = (recipe: RecipeDef): { inventory: Map<string, number>; world: Set<string> } => {\n const inventory = new Map<string, number>()\n const world = new Set<string>()\n const add = (id: string, count: number): void => void inventory.set(id, (inventory.get(id) ?? 0) + count)\n for (const input of recipe.inputs) {\n if (input.world) for (const w of input.world) world.add(w)\n else if (input.item !== undefined) add(input.item, input.qty ?? 1)\n else if (input.any?.[0] !== undefined) add(input.any[0], input.qty ?? 1)\n else if (input.match) {\n const pick = catalog.list().find((item) => (input.match?.category === undefined || item.category === input.match.category) && (input.match?.cookable === undefined || item.cookable === input.match.cookable))\n if (pick) add(pick.id, input.qty ?? 1)\n }\n }\n for (const tool of recipe.tools) {\n if (tool.anyOf[0] !== undefined) add(tool.anyOf[0], 1)\n for (const w of tool.world ?? []) world.add(w)\n }\n return { inventory, world }\n }\n const craftSelected = (): { ok: boolean; missing: readonly string[] } => {\n const recipe = catalog.recipes.get(state.recipe)\n if (!recipe) return { ok: false, missing: [state.recipe] }\n const { inventory, world } = kitFor(recipe)\n const fluids: Record<string, number> = {}\n for (const input of recipe.inputs) if (input.fluid !== undefined) fluids[input.fluid] = (fluids[input.fluid] ?? 0) + (input.liters ?? 1)\n const context = { catalog, inventory, world, fluids }\n const name = label(`recipe.${recipe.id}`, humanize(recipe.id))\n const check = canCraft(recipe, context)\n if (!check.isPossible) {\n host?.log(fill(text.craftMissing, { recipe: name, missing: check.missing.join(', ') }), { recipe: recipe.id })\n return { ok: false, missing: check.missing }\n }\n const result = craft(recipe, context, rng(state.seed))\n if (!result.isCrafted) return { ok: false, missing: result.missing }\n if ('item' in result.output) {\n stack = [{ itemId: result.output.item, count: result.output.count }]\n showFinds()\n }\n const output = 'item' in result.output ? `${nameOf(catalog.get(result.output.item))} x${result.output.count}` : fill(text.craftEffect, { effect: result.output.effect })\n host?.log(fill(text.crafted, { recipe: name, output, seconds: result.seconds }), { recipe: recipe.id })\n return { ok: true, missing: [] }\n }\n\n const areaPlacements = (): AreaPlacement[] => {\n const placements: AreaPlacement[] = []\n for (const shelf of shelves) {\n placements.push({ item: shelf.id, position: shelf.position, surface: { halfSize: [shelf.length / 2, shelf.depth / 2], height: SHELF_HEIGHT } }, ...shelf.items)\n }\n placements.push({ item: SHOWCASE_STAND_ID, position: STAND.at, surface: { halfSize: [STAND.radius, STAND.radius], height: STAND.height } })\n showcase.forEach((model, index) => {\n const angle = (index / showcase.length) * Math.PI * 2\n placements.push({ item: `${SHOWCASE_PREFIX}${model.id}`, position: [STAND.at[0] + Math.cos(angle) * STAND.ring, STAND.height + 0.01, STAND.at[2] + Math.sin(angle) * STAND.ring], asleep: true })\n })\n placements.push({ item: RULER_ID, position: RULER_AT })\n if (options.person) placements.push({ item: HUMAN_ID, position: HUMAN_AT })\n placements.push({ item: FINDS_TABLE_ID, position: TABLE.at, surface: { halfSize: [TABLE.length / 2, TABLE.depth / 2], height: TABLE.height } })\n return placements\n }\n\n const onChange = (change: BenchChange): void => {\n if (change.kind === 'layer') {\n if (change.id === 'labels' || change.id === 'boxes' || change.id === 'simple_shapes') layers[change.id] = change.on\n if (change.id === 'labels') applyLabels()\n else if (change.id === 'boxes') applyBoxes()\n else if (change.id === 'simple_shapes') applyHighlight()\n return\n }\n if (change.kind === 'action') {\n if (change.id === 'roll_finds') rollFinds()\n else if (change.id === 'craft') craftSelected()\n return\n }\n const value = change.value\n switch (change.id) {\n case 'category':\n state.category = String(value)\n applyCategory()\n if (layers.boxes) applyBoxes()\n break\n case 'wear':\n state.wear = String(value)\n applyWear()\n break\n case 'age_days':\n state.ageDays = Number(value)\n applyWear()\n break\n case 'storage':\n state.storage = String(value)\n applyWear()\n break\n case 'powered':\n state.powered = Boolean(value)\n applyWear()\n break\n case 'place':\n state.place = String(value)\n break\n case 'container':\n state.container = String(value)\n break\n case 'state':\n state.state = String(value)\n break\n case 'day':\n state.day = Number(value)\n break\n case 'seed':\n state.seed = Number(value)\n break\n case 'recipe':\n state.recipe = String(value)\n break\n }\n }\n\n const choice = (id: keyof Text['control'], values: ReadonlyArray<{ id: string; name: string }>, def: string): ModuleControl => ({ kind: 'choice', id, name: text.control[id], options: values, default: def })\n\n const module: ItemsTestModule = {\n id: 'items_area',\n name: text.name,\n ground: { surface: 'tile_floor' },\n group: text.group,\n state,\n placed: () => entries.map((entry) => ({ id: entry.id, itemId: entry.itemId, group: entry.group, kind: entry.kind, size: entry.size, root: entry.root })),\n finds: () => stack,\n shelves: () => shelves,\n rollFinds,\n craftSelected,\n selectRecipe: (id) => {\n state.recipe = id\n },\n measure: (root) => {\n if (!latestTHREE) return null\n // the size of the object itself: a piece that a blast or a throw has turned (it, or the holder the room put around it) is measured upright\n const turned: Array<{ node: THREE_NS.Object3D; rotation: THREE_NS.Euler }> = []\n for (let node: THREE_NS.Object3D | null = root; node; node = node.parent) turned.push({ node, rotation: node.rotation.clone() })\n for (const { node } of turned) node.rotation.set(0, 0, 0)\n root.updateWorldMatrix(true, true)\n const size = new latestTHREE.Box3().setFromObject(root).getSize(new latestTHREE.Vector3())\n for (const { node, rotation } of turned) node.rotation.copy(rotation)\n root.updateWorldMatrix(true, true)\n return [size.x, size.y, size.z]\n },\n items: () => [\n ...items.map(itemOf),\n ...shelves.map(shelfItem),\n standItem(),\n ...showcase.map(showcaseItem),\n rulerItem(),\n ...(options.person ? [humanItem(options.person)] : []),\n tableItem(),\n ],\n area: (): ModuleArea => ({ placements: areaPlacements(), view: { eye: [0, 5.5, 16], target: [0, 0.8, 0] } }),\n controls: (): ModuleControl[] => [\n choice('category', [{ id: CATEGORY_ALL, name: text.all }, ...categories.map((id) => ({ id, name: categoryName(id) }))], CATEGORY_ALL),\n choice('wear', WEARS.map((id) => ({ id, name: text.wears[id] })), state.wear),\n { kind: 'number', id: 'age_days', name: text.control.age_days, hint: text.hint.age_days, unit: 'd', min: 0, max: 400, step: 5, default: 0 },\n choice('storage', Object.keys(catalog.rules.storage).map((id) => ({ id, name: label(`storage.${id}`, humanize(id)) })), state.storage),\n { kind: 'boolean', id: 'powered', name: text.control.powered, hint: text.hint.powered, default: true },\n choice('place', [...catalog.places.keys()].map((id) => ({ id, name: label(`place.${id}`, humanize(id)) })), state.place),\n choice('container', [...catalog.containers.keys()].map((id) => ({ id, name: label(`container.${id}`, humanize(id)) })), state.container),\n choice('state', (['normal', 'fortified', 'abandoned'] as const).map((id) => ({ id, name: text.states[id] })), 'normal'),\n { kind: 'number', id: 'day', name: text.control.day, hint: text.hint.day, unit: 'd', min: 0, max: 60, step: 1, default: 0 },\n { kind: 'number', id: 'seed', name: text.control.seed, min: 1, max: 9999, step: 1, default: state.seed },\n { kind: 'action', id: 'roll_finds', name: text.control.roll_finds, hint: text.hint.roll_finds },\n ...(state.recipe ? [choice('recipe', [...catalog.recipes.keys()].map((id) => ({ id, name: label(`recipe.${id}`, humanize(id)) })), state.recipe)] : []),\n ...(state.recipe ? [{ kind: 'action', id: 'craft', name: text.control.craft, hint: text.hint.craft } as ModuleControl] : []),\n ],\n layers: (): ModuleLayer[] => [\n { id: 'labels', name: text.layers.labels },\n { id: 'boxes', name: text.layers.boxes, default: false },\n { id: 'simple_shapes', name: text.layers.simple_shapes, default: false },\n ],\n metrics: (): ModuleMetric[] => [\n { id: 'items', name: text.metrics.items, digits: 0, read: () => visibleEntries().length },\n { id: 'draw_calls', name: text.metrics.draw_calls, digits: 0, read: () => visibleEntries().reduce((sum, entry) => sum + entry.drawCalls, 0) },\n { id: 'triangles', name: text.metrics.triangles, digits: 0, read: () => visibleEntries().reduce((sum, entry) => sum + entry.triangles, 0) },\n {\n id: 'modeled',\n name: text.metrics.modeled,\n read: () => {\n // per catalogue item: the can openers laid beside the tins are the same item\n const shown = [...new Map(visibleEntries().filter((entry) => entry.group === 'shelf').map((entry) => [entry.itemId, entry])).values()]\n return `${shown.filter((entry) => entry.kind === 'model').length}/${shown.length}`\n },\n },\n { id: 'finds', name: text.metrics.finds, digits: 0, read: () => stack.length },\n ],\n scenarios: (): Array<ModuleScenario<ScenarioLike>> => scenariosOf(module, catalog, text, provider, modelSet),\n attach(lent) {\n host = lent\n latestTHREE = lent.THREE as typeof THREE_NS\n const offChange = lent.bench?.onChange(onChange)\n const offFrame = lent.onFrame((dt) => {\n // what the room took out (or built only for its checks) is forgotten at the next frame: each entry holds its whole model\n for (let i = entries.length - 1; i >= 0; i--) if (!entries[i].root.parent) entries.splice(i, 1)\n for (let i = shelfRoots.length - 1; i >= 0; i--) if (!shelfRoots[i].parent) shelfRoots.splice(i, 1)\n for (const entry of entries) if (entry.group === 'showcase') entry.root.rotation.y += dt * SPIN\n })\n return () => {\n offChange?.()\n offFrame()\n clearBoxes()\n clearFinds()\n host = null\n }\n },\n }\n return module\n}\n\n/** What the scenarios use of the context the test room passes (`ScenarioContext`). */\nexport interface ScenarioLike {\n expect(condition: boolean, label: string, data?: Record<string, unknown>): void\n}\n\n/** A drawing never grows past its item's size, and its longest side is within 8% of it (a bag is a little lower than its box). */\nconst OVER = 0.02\nconst UNDER = 0.08\n\nfunction scenariosOf(module: ItemsTestModule, catalog: ItemsCatalog, text: Text, provider: FindsProvider, modelSet: ItemModelRegistry): Array<ModuleScenario<ScenarioLike>> {\n const names = text.scenarios\n const shelf = (): ReturnType<ItemsTestModule['placed']> => module.placed().filter((entry) => entry.group === 'shelf')\n return [\n {\n id: 'real_size',\n name: names.real_size,\n run: ({ expect }) => {\n const shown = shelf()\n expect(shown.length > 0, 'items are on the shelves', { count: shown.length })\n for (const entry of shown) {\n const measured = module.measure(entry.root)\n if (!measured) continue\n const longest = Math.max(...entry.size)\n const axis = entry.size.indexOf(longest)\n const ok = measured.every((side, a) => side <= (entry.size[a] as number) * (1 + OVER) + 0.002) && Math.abs((measured[axis] as number) - longest) <= longest * UNDER + 0.002\n expect(ok, `${entry.itemId} measures its real size`, { measured, size: entry.size })\n }\n },\n },\n {\n id: 'models',\n name: names.models,\n run: ({ expect }) => {\n const models = modelSet.list()\n expect(models.length === SHIPPED_MODELS.length, `${SHIPPED_MODELS.length} models are shipped`, { count: models.length })\n const withModel = catalog.list().filter((item) => item.model !== undefined && modelSet.has(item.model))\n const shippedItems = SHIPPED_MODELS.filter(({ entry }) => catalog.has(entry.id)).length\n expect(withModel.length === shippedItems, `${shippedItems} items of the catalog name a model (every shipped model that is a catalog item)`, { count: withModel.length })\n const stand = module.placed().filter((entry) => entry.group === 'showcase')\n expect(stand.length === 0 || stand.every((entry) => entry.kind === 'model'), 'every piece of the stand is drawn by the model of the team')\n },\n },\n {\n id: 'budgets',\n name: names.budgets,\n run: ({ expect }) => {\n for (const entry of module.placed()) {\n const report = checkBudget(entry.root, entry.size)\n expect(report.drawCalls <= ITEM_BUDGETS.drawCalls, `${entry.itemId} stays within ${ITEM_BUDGETS.drawCalls} draw calls`, { drawCalls: report.drawCalls })\n const deviation = entry.kind === 'model' ? MODEL_BUDGET_DEVIATIONS[entry.itemId] : undefined\n // a destructible can is tessellated on purpose (a dent needs vertices): the triangles that rule added are allowed on top of the budget\n const tessellated = (entry.root.userData.tessellationTriangles as number | undefined) ?? 0\n expect(report.ok || report.triangles <= Math.max(report.limit, deviation ?? 0) + tessellated, `${entry.itemId} stays within its triangle budget`, { triangles: report.triangles, limit: report.limit })\n }\n },\n },\n {\n id: 'ruler',\n name: names.ruler,\n run: ({ expect }) => {\n expect(RULER_HEIGHT === 1.55 && HUMAN_HEIGHT === 1.8, 'the references have the measures of the page')\n },\n },\n {\n id: 'finds',\n name: names.finds,\n run: ({ expect }) => {\n const query = (seed: number): FindsQuery => ({ place: module.state.place, container: module.state.container, state: 'normal', rng: rng(seed), day: 0 })\n const a = JSON.stringify(provider.findsFor(query(7)))\n const b = JSON.stringify(provider.findsFor(query(7)))\n expect(a === b, 'the same seed gives the same finds')\n expect((provider.findsFor(query(7)) ?? []).every((found) => catalog.has(found.itemId)), 'every find is an item of the catalog')\n },\n },\n {\n id: 'freshness',\n name: names.freshness,\n run: ({ expect }) => {\n const food = catalog.list().find((item) => item.shelfLife !== undefined && item.shelfLife > 0)\n if (!food) return expect(false, 'the catalog has a food that spoils')\n const at = (storage: string, days: number): string => freshness(food, { ageDays: 0, since: 0, storage, storedAt: 0 }, days, { rules: catalog.rules })\n const days = (food.shelfLife as number) * 1.2\n expect(at('ambient', days) !== 'fresh', 'at room temperature it is past its best', { food: food.id })\n if ('fridge' in catalog.rules.storage) expect(at('fridge', days) !== at('ambient', days) || at('fridge', days) === 'fresh', 'in the fridge it keeps better', { food: food.id })\n },\n },\n {\n id: 'craft',\n name: names.craft,\n run: ({ expect }) => {\n const before = module.state.recipe\n for (const id of catalog.recipes.keys()) {\n module.selectRecipe(id)\n const result = module.craftSelected()\n expect(result.ok, `recipe ${id} is made with what it asks for`, { missing: result.missing })\n }\n module.selectRecipe(before)\n },\n },\n ]\n}\n","import type { AreaPlacement, Vec3 } from '@adatechnology/game-contracts'\n\n/** What the layout needs of an item: its id, category and real size [width, height, depth] in metres. */\nexport interface LayoutItem {\n readonly id: string\n readonly category: string\n readonly size: readonly [number, number, number]\n}\n\n/** Height of the top of a shelf, metres. */\nexport const SHELF_HEIGHT = 0.9\n/** Longest row of items on a shelf, metres. */\nexport const ROW_LIMIT = 5\nconst GAP = 0.06\nconst EDGE = 0.12\nconst COLUMNS = 4\nconst COLUMN_PITCH = 6.2\nconst ROW_GAP = 1.5\nconst FIRST_Z = -11\n\n/** One shelf: a category's items laid out in rows at real size, the shelf's footprint and where its items sit on its top. */\nexport interface ShelfPlan {\n category: string\n /** Item id of the shelf in the module (`shelf_<category>`). */\n id: string\n /** Footprint on the floor: length along x, depth along z. */\n length: number\n depth: number\n position: Vec3\n /** Where each item sits, in world coordinates. */\n items: AreaPlacement[]\n}\n\nexport const SHELF_PREFIX = 'shelf_'\nexport const ITEM_PREFIX = 'item_'\nexport const SHOWCASE_PREFIX = 'showcase_'\n\ninterface Row {\n items: LayoutItem[]\n width: number\n depth: number\n}\n\nconst rowsOf = (items: readonly LayoutItem[]): Row[] => {\n const rows: Row[] = []\n for (const item of items) {\n const [w, , d] = item.size\n let row = rows[rows.length - 1]\n if (!row || (row.items.length > 0 && row.width + w + GAP > ROW_LIMIT)) {\n row = { items: [], width: 0, depth: 0 }\n rows.push(row)\n }\n row.items.push(item)\n row.width += w + GAP\n row.depth = Math.max(row.depth, d)\n }\n return rows\n}\n\n/**\n * The shelves of the area: one per category, in the order the categories come, with every item of the category side by side at real size, wrapped in rows of at most\n * `ROW_LIMIT` metres. Shelves stand in a grid of four columns; an item that is longer than the row limit gets a row to itself. Pure: the same items always land in the same spots.\n */\nexport function shelvesLayout(items: readonly LayoutItem[], categories: readonly string[]): ShelfPlan[] {\n const plans = categories.flatMap((category) => {\n const own = items.filter((item) => item.category === category)\n if (own.length === 0) return []\n const rows = rowsOf(own)\n const length = Math.max(...rows.map((row) => row.width - GAP)) + 2 * EDGE\n const depth = rows.reduce((sum, row) => sum + row.depth + GAP, 0) - GAP + 2 * EDGE\n return [{ category, rows, length, depth }]\n })\n const result: ShelfPlan[] = []\n let z = FIRST_Z\n for (let start = 0; start < plans.length; start += COLUMNS) {\n const line = plans.slice(start, start + COLUMNS)\n const lineDepth = Math.max(...line.map((plan) => plan.depth))\n line.forEach((plan, column) => {\n const x = (column - (COLUMNS - 1) / 2) * COLUMN_PITCH\n const centre: Vec3 = [x, 0, z + plan.depth / 2]\n const placed: AreaPlacement[] = []\n let rowZ = -plan.depth / 2 + EDGE\n for (const row of plan.rows) {\n let cursor = -plan.length / 2 + EDGE\n for (const item of row.items) {\n const [w, , d] = item.size\n placed.push({ item: `${ITEM_PREFIX}${item.id}`, position: [centre[0] + cursor + w / 2, SHELF_HEIGHT + 0.01, centre[2] + rowZ + d / 2], asleep: true })\n cursor += w + GAP\n }\n rowZ += row.depth + GAP\n }\n result.push({ category: plan.category, id: `${SHELF_PREFIX}${plan.category}`, length: plan.length, depth: plan.depth, position: centre, items: placed })\n })\n z += lineDepth + ROW_GAP\n }\n return result\n}\n","import { markKitOrigin } from '@adatechnology/game-contracts'\nimport type * as THREE_NS from 'three'\n\nimport { tagForDestruction } from './destruction'\nimport { createItemKit } from './kit'\nimport type { ItemKit, Vec3Tuple } from './kit'\nimport { defaultItemModels } from './models/registry'\nimport type { ItemModelRegistry } from './models/registry'\nimport { drawShape, shapeOf } from './shapes'\nimport type { ShapeId, ShapeSubject } from './shapes'\nimport { setWear } from './wear'\nimport type { WearStage } from './wear'\n\n/** The fields of an item the drawing reads (an `ItemDef` of `game-items` has them all). */\nexport interface DrawableItem extends ShapeSubject {\n id: string\n size: Vec3Tuple\n /** Key of a showcase model; without one (or when the model is not registered) the simple shape is drawn. */\n model?: string\n /** Real weight in kg; with `destructible` it becomes the mass of the destruction body. */\n weight?: number\n /** Loose dry contents in their colour (0xRRGGBB); with `destructible` a hole through the item puffs them out (`PartSpec.powder`). */\n powder?: { color: number }\n}\n\nexport interface BuildItemOptions {\n /** Wear of the materials, 0 new (default), 1 used, 2 spoiled. */\n wear?: WearStage\n /** Draw the simple shape even when the item has a model (the second level of detail). */\n simple?: boolean\n /** Level of detail of the simple shape, 1 (default) or 0.5 for half the segments. */\n detail?: number\n /** Write the `userData` that `game-destruction-three`'s `specFromObject3D` reads (material of each mesh, hollow shells, welded parts, skins; see `tagForDestruction`). Default off. */\n destructible?: boolean\n /** A kit to draw with (and to collect the materials in); default a new one. */\n kit?: ItemKit\n /** The models to draw with; default the shared set behind `registerItemModel` (`createItemModels` makes one of your own). */\n models?: ItemModelRegistry\n}\n\n/** What `buildItem` returns. */\nexport interface ItemModel {\n /** The object to add to a scene: origin at the bottom centre of the item, y up, in metres. */\n readonly root: THREE_NS.Group\n /** `model` when the showcase builder drew it, `shape` otherwise. */\n readonly kind: 'model' | 'shape'\n readonly shape?: ShapeId\n /** Size in metres the drawing was fitted to (the item's `size`). */\n readonly size: Vec3Tuple\n /** The materials made for this item. */\n readonly materials: readonly THREE_NS.MeshStandardMaterial[]\n}\n\n/** Moves a group so that its box has the centre of its base at the origin. */\nfunction restOnBase(T: typeof THREE_NS, inner: THREE_NS.Object3D): void {\n const box = new T.Box3().setFromObject(inner)\n const centre = box.getCenter(new T.Vector3())\n inner.position.set(-centre.x, -box.min.y, -centre.z)\n}\n\n/**\n * Draws an item at its real size. An item whose `model` is registered gets the showcase builder, ported as it is (page units, scaled to metres by the scale of\n * `models.json` on the root, so that the group inside is still the team's); every other item gets the simple shape of its `shape` hint (refined by category and\n * proportions) at its `size`. Either way the origin is the bottom centre and y is up.\n */\nexport function buildItem(T: typeof THREE_NS, item: DrawableItem, options: BuildItemOptions = {}): ItemModel {\n const kit = options.kit ?? createItemKit(T)\n const first = kit.materials.length\n const root = new T.Group()\n root.name = item.id\n const models = options.models ?? defaultItemModels()\n const entry = item.model === undefined ? undefined : models.entry(item.model)\n const builder = item.model === undefined ? undefined : models.builder(item.model)\n let kind: ItemModel['kind'] = 'shape'\n let shape: ShapeId | undefined\n if (entry && builder && !options.simple) {\n kind = 'model'\n const inner = builder(kit)\n inner.name = entry.teamId\n root.scale.setScalar(entry.scale)\n root.add(inner)\n restOnBase(T, inner)\n } else {\n shape = shapeOf(item)\n const inner = drawShape(kit, shape, item.size, { ...(item.color === undefined ? {} : { color: item.color }), ...(options.detail === undefined ? {} : { detail: options.detail }) })\n inner.name = shape\n root.add(inner)\n restOnBase(T, inner)\n }\n const materials = kit.materials.slice(first)\n if (options.wear) setWear(materials, options.wear)\n root.userData.wear = options.wear ?? 0\n if (options.destructible) tagForDestruction(root, { ...(kind === 'model' && item.model !== undefined ? { modelId: item.model } : {}), ...(shape === undefined ? {} : { shapeId: shape }), ...(item.weight === undefined ? {} : { weight: item.weight }), size: item.size, ...(item.powder ? { powder: item.powder } : {}), three: T })\n markKitOrigin(root, { owner: 'game-items-three', kind: 'item', id: item.id, ...(kind === 'shape' ? { standIn: true } : {}) })\n return { root, kind, ...(shape ? { shape } : {}), size: item.size, materials }\n}\n","import type * as THREE_NS from 'three'\nimport type { ContainerSpec } from '@adatechnology/game-contracts'\nimport { LIQUIDS } from '@adatechnology/game-fluids'\n\nimport data from './data/destruction.json'\n\n/** The destruction material (`game-destruction` id) of each material tag of the kit, for a mesh whose model says nothing else. */\nexport const DESTRUCTION_MATERIAL_BY_TAG: Readonly<Record<string, string>> = {\n metal: 'steel',\n wood: 'wood_soft',\n glass: 'glass',\n paper: 'paper',\n plastic: 'plastic',\n cloth: 'fabric',\n food: 'flesh_fruit',\n}\n\n/** How a model behaves under `game-destruction-three`'s `specFromObject3D`, as `data/destruction.json` keeps it. */\nexport interface ItemDestruction {\n /** The meshes are thin shells, not solid blocks. */\n readonly hollow?: boolean\n /** The parts of the model are welded to its largest mesh, so a hit dents and holes them instead of tearing them off. */\n readonly welded?: boolean\n /** Meshes made of these material tags are skins (labels, coats): drawn on a part, never a part of their own. */\n readonly skinTags?: readonly string[]\n /** Material tag to destruction material id, over `DESTRUCTION_MATERIAL_BY_TAG`. */\n readonly materials?: Readonly<Record<string, string>>\n /** Segments the cylinder and box meshes of the model are rebuilt with, so a bullet dent (a few millimetres wide) finds vertices to push in. */\n readonly tessellate?: {\n /**\n * With `capRings` (and `three` given to `tagForDestruction`) a cylinder becomes one lathe with that many rings on each end, so the lid and the bottom dent\n * too; its rows then are about as tall as its columns are wide, never more than `heightSegments`.\n */\n readonly cylinder?: { readonly heightSegments: number; readonly radialSegments: number; readonly capRings?: number }\n readonly box?: { readonly widthSegments: number; readonly heightSegments: number; readonly depthSegments: number }\n }\n /** Real wall thickness in metres of the shell (`body`, the largest mesh) and of its other parts (`ends`: lid, bottom, neck), for the destruction world. */\n readonly wall?: { readonly body: number; readonly ends: number }\n}\n\n/** A family of models that behave alike: one rule for all of them, so adding a model is one id and changing the rule changes them all. */\nexport interface ItemFamily {\n readonly models: readonly string[]\n readonly rule: ItemDestruction\n}\n\n/** What a model holds inside its shell: a liquid (`game-fluids` id) filling `fill` of the inner volume. */\nexport interface ItemContents {\n readonly liquid: string\n readonly fill: number\n /** The shell is a box (a flat tin) and not a cylinder. */\n readonly box?: boolean\n}\n\nconst FAMILIES = data.families as Readonly<Record<string, ItemFamily>>\nconst CONTENTS = data.contents as Readonly<Record<string, ItemContents>>\n/** The rule of an item drawn as a simple shape (no model of its own), by shape id: a `box` is a printed carton, a thin cardboard shell. */\nconst SHAPES = data.shapes as Readonly<Record<string, ItemDestruction>>\n\n/** The rule of an item drawn as the simple shape `shapeId` (`game-items-three`'s `drawShape`), if any. */\nexport const shapeDestruction = (shapeId: string): ItemDestruction | undefined => SHAPES[shapeId]\n\nconst FAMILY_OF_MODEL = new Map<string, string>(Object.entries(FAMILIES).flatMap(([family, entry]) => entry.models.map((model) => [model, family] as const)))\n\n/** Id of the family a model belongs to (`drink_can`), if any. */\nexport const itemFamily = (modelId: string): string | undefined => FAMILY_OF_MODEL.get(modelId)\n\n// One lookup on purpose: the item-category system (contracts per category) can feed it later instead of this file.\nexport const itemDestruction = (modelId: string): ItemDestruction | undefined => {\n const family = FAMILY_OF_MODEL.get(modelId)\n return family === undefined ? undefined : FAMILIES[family]?.rule\n}\n\n/** The family ids and their models, as the data gives them. */\nexport const ITEM_FAMILIES: Readonly<Record<string, ItemFamily>> = FAMILIES\n\n/** The subject of `itemContents`: what `buildItem` draws. */\nexport interface ContentsSubject {\n readonly model?: string\n /** Metres. */\n readonly size: readonly [number, number, number]\n /** Kg, shell included. */\n readonly weight?: number\n}\n\n/** Id of the welded part that is the whole shell of a container. */\nexport const SHELL_PART_ID = 'shell'\n\n/** Share of the inner volume the walls and the seams take away. */\nconst WALL_SHARE = 0.9\n/** Radius of the pull tab opening of a closed can, in metres. */\nconst OPENING_RADIUS = 0.012\n\n/**\n * The container the model holds (`TestableItem.fluid` of the test room and `PartSpec.contains` of the shell), sized from the item: the inner volume of its\n * box times the fill of the model, never more than the item weighs in that liquid. Undefined for a model that holds nothing.\n */\nexport function itemContents(subject: ContentsSubject): { readonly container: ContainerSpec; readonly liquid: string; readonly liters: number } | undefined {\n const contents = subject.model === undefined ? undefined : CONTENTS[subject.model]\n if (!contents) return undefined\n const [width, height, depth] = subject.size\n const radius = Math.min(width, depth) / 2\n const innerLiters = (contents.box ? width * depth : Math.PI * radius * radius) * height * WALL_SHARE * 1000\n const density = LIQUIDS.find((liquid) => liquid.id === contents.liquid)?.density ?? 1000\n const heaviest = subject.weight === undefined ? Infinity : (subject.weight * 1000) / density\n const liters = Math.min(innerLiters * contents.fill, heaviest)\n const container: ContainerSpec = {\n capacity: innerLiters,\n liquid: contents.liquid,\n liters,\n shape: contents.box ? { kind: 'box', size: [width * WALL_SHARE, height * WALL_SHARE, depth * WALL_SHARE] } : { kind: 'cylinder', radius: radius * WALL_SHARE, height: height * WALL_SHARE },\n opening: OPENING_RADIUS,\n closed: true,\n }\n return { container, liquid: contents.liquid, liters }\n}\n\nfunction tagOf(mesh: THREE_NS.Mesh): string | undefined {\n const material = Array.isArray(mesh.material) ? mesh.material[0] : mesh.material\n const tag = (material?.userData as { tag?: unknown } | undefined)?.tag\n return typeof tag === 'string' ? tag : undefined\n}\n\nfunction volumeOf(mesh: THREE_NS.Mesh): number {\n if (!mesh.geometry.boundingBox) mesh.geometry.computeBoundingBox()\n const box = mesh.geometry.boundingBox\n if (!box) return 0\n return (box.max.x - box.min.x) * (box.max.y - box.min.y) * (box.max.z - box.min.z)\n}\n\n/** What `tagForDestruction` needs to know about the item beside its meshes. */\nexport interface DestructionTagOptions {\n readonly modelId?: string\n /** The simple shape the item is drawn as when it has no model (`shapeDestruction`). */\n readonly shapeId?: string\n /** Real weight in kg. */\n readonly weight?: number\n /** Size in metres, for the contents of the shell. */\n readonly size?: readonly [number, number, number]\n /** Loose dry contents in their colour: written on the shell (`userData.destructionPowder`), so a hole through it puffs them out. */\n readonly powder?: { readonly color: number }\n /** three.js, for the shapes three only makes from scratch (a cylinder with rings on its ends: `tessellate.cylinder.capRings`). */\n readonly three?: typeof THREE_NS\n}\n\ntype CylinderParameters = { radiusTop: number; radiusBottom: number; height: number; openEnded: boolean; thetaStart: number; thetaLength: number }\ntype BoxParameters = { width: number; height: number; depth: number }\ntype Tessellation = NonNullable<ItemDestruction['tessellate']>\ntype GeometryConstructor = new (...args: readonly (number | boolean)[]) => THREE_NS.BufferGeometry\n\n/**\n * A cylinder drawn as one lathe: rings on the bottom from the axis out, the side, rings on the top back to the axis. The corners are two points (one of the end,\n * one of the side), so the rim stays sharp and the vertices of each face move with that face only.\n */\nfunction ringedCylinder(T: typeof THREE_NS, p: CylinderParameters, radial: number, maxRows: number, rings: number): THREE_NS.BufferGeometry {\n const half = p.height / 2\n // rows about as tall as a column is wide on the wider end\n const column = (2 * Math.PI * Math.max(p.radiusTop, p.radiusBottom, 1e-6)) / radial\n const rows = Math.max(1, Math.min(maxRows, Math.round(p.height / column)))\n const points: THREE_NS.Vector2[] = []\n if (!p.openEnded) for (let i = 0; i <= rings; i++) points.push(new T.Vector2((p.radiusBottom * i) / rings, -half))\n for (let j = 0; j <= rows; j++) points.push(new T.Vector2(p.radiusBottom + ((p.radiusTop - p.radiusBottom) * j) / rows, -half + (p.height * j) / rows))\n if (!p.openEnded) for (let i = rings; i >= 0; i--) points.push(new T.Vector2((p.radiusTop * i) / rings, half))\n return lathed(T, points, radial, p.thetaStart, p.thetaLength)\n}\n\n/**\n * The lathe of `points` with its normals from its faces: the lathe's own normals blend an end into the side at a doubled corner point. A point on the axis that\n * only degenerate triangles touch gets the normal of the end it closes (up on the top, down on the bottom).\n */\nfunction lathed(T: typeof THREE_NS, points: readonly THREE_NS.Vector2[], radial: number, phiStart?: number, phiLength?: number): THREE_NS.BufferGeometry {\n const geometry = new T.LatheGeometry([...points], radial, phiStart, phiLength)\n geometry.computeVertexNormals()\n const position = geometry.getAttribute('position')\n const normal = geometry.getAttribute('normal')\n const middle = (Math.min(...points.map((point) => point.y)) + Math.max(...points.map((point) => point.y))) / 2\n for (let i = 0; i < normal.count; i++) {\n if (Math.hypot(normal.getX(i), normal.getY(i), normal.getZ(i)) > 0.5) continue\n normal.setXYZ(i, 0, position.getY(i) >= middle ? 1 : -1, 0)\n }\n return geometry\n}\n\n/** The profile of a lathe with every stretch split into pieces no longer than `step`, so its rows are about as fine as its columns. */\nfunction finerProfile(T: typeof THREE_NS, points: readonly THREE_NS.Vector2[], step: number): THREE_NS.Vector2[] {\n const out: THREE_NS.Vector2[] = []\n points.forEach((point, index) => {\n const next = points[index + 1]\n out.push(point.clone())\n if (!next) return\n const pieces = Math.max(1, Math.round(point.distanceTo(next) / step))\n for (let k = 1; k < pieces; k++) out.push(point.clone().lerp(next, k / pieces))\n })\n return out\n}\n\n/** The same shape as `geometry` with the segments of the rule, or undefined when the rule says nothing about its kind. */\nfunction tessellated(geometry: THREE_NS.BufferGeometry, rule: Tessellation, T?: typeof THREE_NS): THREE_NS.BufferGeometry | undefined {\n const Shape = geometry.constructor as GeometryConstructor\n if (geometry.type === 'CylinderGeometry' && rule.cylinder) {\n const parameters = (geometry as unknown as { parameters: CylinderParameters }).parameters\n const { radiusTop, radiusBottom, height, openEnded, thetaStart, thetaLength } = parameters\n if (T && rule.cylinder.capRings !== undefined) return ringedCylinder(T, parameters, rule.cylinder.radialSegments, rule.cylinder.heightSegments, rule.cylinder.capRings)\n return new Shape(radiusTop, radiusBottom, height, rule.cylinder.radialSegments, rule.cylinder.heightSegments, openEnded, thetaStart, thetaLength)\n }\n // a model drawn as a lathe already (an empty can) gets the same columns, and rows to match\n if (geometry.type === 'LatheGeometry' && rule.cylinder && T && rule.cylinder.capRings !== undefined) {\n const { points, segments, phiStart, phiLength } = (geometry as unknown as { parameters: { points: THREE_NS.Vector2[]; segments: number; phiStart: number; phiLength: number } }).parameters\n if (segments >= rule.cylinder.radialSegments) return undefined\n const widest = Math.max(...points.map((point) => point.x), 1e-6)\n return lathed(T, finerProfile(T, points, (2 * Math.PI * widest) / rule.cylinder.radialSegments), rule.cylinder.radialSegments, phiStart, phiLength)\n }\n if (geometry.type === 'BoxGeometry' && rule.box) {\n const { width, height, depth } = (geometry as unknown as { parameters: BoxParameters }).parameters\n return new Shape(width, height, depth, rule.box.widthSegments, rule.box.heightSegments, rule.box.depthSegments)\n }\n return undefined\n}\n\nconst triangleCount = (geometry: THREE_NS.BufferGeometry): number => (geometry.index ? geometry.index.count : geometry.getAttribute('position').count) / 3\n\n/** Rebuilds the cylinder and box geometries of every mesh under `root` with the segments of the rule; a geometry shared by several meshes is rebuilt once. */\nfunction tessellateShapes(root: THREE_NS.Object3D, rule: Tessellation, T?: typeof THREE_NS): void {\n const rebuilt = new Map<THREE_NS.BufferGeometry, THREE_NS.BufferGeometry>()\n root.traverse((object) => {\n const mesh = object as THREE_NS.Mesh\n if (!mesh.isMesh) return\n let fresh = rebuilt.get(mesh.geometry)\n if (!fresh) {\n fresh = tessellated(mesh.geometry, rule, T)\n if (!fresh) return\n rebuilt.set(mesh.geometry, fresh)\n }\n mesh.geometry = fresh\n })\n let added = 0\n rebuilt.forEach((fresh, old) => {\n added += triangleCount(fresh) - triangleCount(old)\n old.dispose()\n })\n root.userData.tessellationTriangles = added\n}\n\n/**\n * Writes the `userData` that `specFromObject3D` reads onto the meshes of a drawn item: the destruction material of each mesh from its kit material tag,\n * the item's real weight in kg (`destructionMass`, so the world weighs what the thing weighs) and what the model's family (or the simple shape it is drawn as) in `data/destruction.json` asks for (hollow shells, welded parts, skins),\n * with the liquid the model holds on its shell (`destructionContains`), its loose dry contents (`destructionPowder`) and the real thickness of each wall (`destructionThickness`).\n */\nexport function tagForDestruction(root: THREE_NS.Object3D, options: DestructionTagOptions = {}): void {\n const { modelId, shapeId, weight, size, powder, three } = options\n if (weight !== undefined && weight > 0) root.userData.destructionMass = weight\n const rule = modelId !== undefined ? itemDestruction(modelId) : shapeId !== undefined ? shapeDestruction(shapeId) : undefined\n if (rule?.tessellate) tessellateShapes(root, rule.tessellate, three)\n const solid: THREE_NS.Mesh[] = []\n root.traverse((object) => {\n const mesh = object as THREE_NS.Mesh\n if (!mesh.isMesh) return\n const tag = tagOf(mesh)\n if (tag === undefined) return\n const material = rule?.materials?.[tag] ?? DESTRUCTION_MATERIAL_BY_TAG[tag]\n if (material !== undefined) mesh.userData.destructionMaterial = material\n if (rule?.skinTags?.includes(tag)) {\n mesh.userData.destructionSkin = true\n return\n }\n if (rule?.hollow) mesh.userData.hollow = true\n if (powder) mesh.userData.destructionPowder = { color: powder.color }\n solid.push(mesh)\n })\n if (!rule?.welded || solid.length < 2) return\n const anchor = solid.reduce((largest, mesh) => (volumeOf(mesh) > volumeOf(largest) ? mesh : largest))\n solid.forEach((mesh, index) => {\n mesh.userData.destructionPart = mesh === anchor ? { id: SHELL_PART_ID } : { id: `shell_${index}`, parent: SHELL_PART_ID, kind: 'weld' }\n if (rule.wall) mesh.userData.destructionThickness = mesh === anchor ? rule.wall.body : rule.wall.ends\n })\n const contents = size === undefined ? undefined : itemContents({ ...(modelId === undefined ? {} : { model: modelId }), size, ...(weight === undefined ? {} : { weight }) })\n if (contents) anchor.userData.destructionContains = { fluid: contents.liquid, liters: contents.liters }\n}\n","{\n \"families\": {\n \"drink_can\": {\n \"models\": [\n \"soda_can\",\n \"beer_can\",\n \"energy_drink\",\n \"empty_can\"\n ],\n \"rule\": {\n \"hollow\": true,\n \"welded\": true,\n \"skinTags\": [\n \"paper\",\n \"food\"\n ],\n \"materials\": {\n \"metal\": \"aluminium\"\n },\n \"tessellate\": {\n \"cylinder\": {\n \"heightSegments\": 24,\n \"radialSegments\": 40,\n \"capRings\": 6\n },\n \"box\": {\n \"widthSegments\": 6,\n \"heightSegments\": 1,\n \"depthSegments\": 4\n }\n },\n \"wall\": {\n \"body\": 0.0001,\n \"ends\": 0.00025\n }\n }\n },\n \"food_tin\": {\n \"models\": [\n \"canned_beans\",\n \"canned_corn_and_peas\",\n \"canned_sausages\",\n \"canned_sardines\",\n \"condensed_milk\"\n ],\n \"rule\": {\n \"hollow\": true,\n \"welded\": true,\n \"skinTags\": [\n \"paper\",\n \"food\"\n ],\n \"materials\": {\n \"metal\": \"steel\"\n },\n \"tessellate\": {\n \"cylinder\": {\n \"heightSegments\": 24,\n \"radialSegments\": 40,\n \"capRings\": 6\n },\n \"box\": {\n \"widthSegments\": 6,\n \"heightSegments\": 1,\n \"depthSegments\": 4\n }\n },\n \"wall\": {\n \"body\": 0.00018,\n \"ends\": 0.00022\n }\n }\n },\n \"plastic_bottle\": {\n \"models\": [\n \"water_bottle\",\n \"water_jug_5l\",\n \"dirty_water\",\n \"sports_drink\",\n \"coconut_water\",\n \"cooking_oil\",\n \"alcohol_70\",\n \"fuel_jerrycan\"\n ],\n \"rule\": {\n \"hollow\": true,\n \"welded\": true,\n \"skinTags\": [\n \"paper\",\n \"food\"\n ],\n \"materials\": {\n \"glass\": \"plastic\"\n }\n }\n },\n \"glass_bottle\": {\n \"models\": [\n \"cachaca\",\n \"communion_wine\",\n \"honey_jar\",\n \"home_preserves\"\n ],\n \"rule\": {\n \"hollow\": true,\n \"welded\": true,\n \"skinTags\": [\n \"paper\",\n \"food\"\n ]\n }\n },\n \"drink_carton\": {\n \"models\": [\n \"juice_box\",\n \"milk_carton\"\n ],\n \"rule\": {\n \"hollow\": true,\n \"welded\": true\n }\n }\n },\n \"contents\": {\n \"soda_can\": {\n \"liquid\": \"soda\",\n \"fill\": 0.95\n },\n \"beer_can\": {\n \"liquid\": \"beer\",\n \"fill\": 0.95\n },\n \"energy_drink\": {\n \"liquid\": \"soda\",\n \"fill\": 0.95\n },\n \"water_bottle\": {\n \"liquid\": \"water\",\n \"fill\": 0.95\n },\n \"water_jug_5l\": {\n \"liquid\": \"water\",\n \"fill\": 0.95,\n \"box\": true\n },\n \"dirty_water\": {\n \"liquid\": \"water\",\n \"fill\": 0.9\n },\n \"sports_drink\": {\n \"liquid\": \"juice\",\n \"fill\": 0.95\n },\n \"coconut_water\": {\n \"liquid\": \"water\",\n \"fill\": 0.9,\n \"box\": true\n },\n \"juice_box\": {\n \"liquid\": \"juice\",\n \"fill\": 0.95,\n \"box\": true\n },\n \"milk_carton\": {\n \"liquid\": \"milk\",\n \"fill\": 0.95,\n \"box\": true\n },\n \"cachaca\": {\n \"liquid\": \"spirits\",\n \"fill\": 0.9\n },\n \"communion_wine\": {\n \"liquid\": \"wine\",\n \"fill\": 0.9\n },\n \"cooking_oil\": {\n \"liquid\": \"cooking_oil\",\n \"fill\": 0.9\n },\n \"alcohol_70\": {\n \"liquid\": \"spirits\",\n \"fill\": 0.9\n },\n \"honey_jar\": {\n \"liquid\": \"honey\",\n \"fill\": 0.85\n },\n \"home_preserves\": {\n \"liquid\": \"water\",\n \"fill\": 0.5\n },\n \"fuel_jerrycan\": {\n \"liquid\": \"fuel\",\n \"fill\": 0.85,\n \"box\": true\n },\n \"canned_beans\": {\n \"liquid\": \"juice\",\n \"fill\": 0.4\n },\n \"canned_corn_and_peas\": {\n \"liquid\": \"water\",\n \"fill\": 0.4\n },\n \"canned_sausages\": {\n \"liquid\": \"water\",\n \"fill\": 0.3\n },\n \"canned_sardines\": {\n \"liquid\": \"cooking_oil\",\n \"fill\": 0.3,\n \"box\": true\n },\n \"condensed_milk\": {\n \"liquid\": \"honey\",\n \"fill\": 0.9\n }\n },\n \"shapes\": {\n \"box\": {\n \"hollow\": true,\n \"welded\": true\n }\n }\n}\n","import { shapeGeometries } from '@adatechnology/game-shapes-three'\nimport type * as THREE_NS from 'three'\n\ntype Three = typeof THREE_NS\n\n/** The material tags the team's showcase wears: what `setWear` turns toward its spoiled colour. */\nexport const WEAR_TAGS = ['metal', 'wood', 'cloth', 'plastic', 'paper', 'food', 'glass'] as const\nexport type WearTag = (typeof WEAR_TAGS)[number]\n\n/** What a material of the kit remembers so that `setWear` can go back to new: the colour it was made with (as three read it, and as sRGB floats), its tag and its roughness. */\nexport interface ItemMaterialData {\n base: THREE_NS.Color\n baseRgb: readonly [number, number, number]\n tag: string\n rough: number\n}\n\nexport type Vec3Tuple = readonly [number, number, number]\ntype Triple = [number, number, number]\n\n/**\n * The helpers the showcase page defines before its models (`M`, `mesh`, `cyl`, `bx`, `lathe`, `torus`, `extrude`, `G` and the seven material makers), so that the\n * builders ported from the page read the same as the originals. `T` is the three.js the kit was made with, with its box, cylinder, cone, sphere, plane, lathe, torus and\n * (straight-edged) extrude geometries made by game-shapes (`shapeGeometries`: the same bytes, the same classes, a template cache); `materials` lists every material it made,\n * in order.\n */\nexport interface ItemKit {\n readonly T: Three\n readonly materials: THREE_NS.MeshStandardMaterial[]\n M(color: number, tag: string, options?: THREE_NS.MeshStandardMaterialParameters): THREE_NS.MeshStandardMaterial\n mesh(geometry: THREE_NS.BufferGeometry, material: THREE_NS.Material, position?: Vec3Tuple, rotation?: Vec3Tuple, scale?: Vec3Tuple): THREE_NS.Mesh\n cyl(radiusTop: number, radiusBottom: number, height: number, segments?: number): THREE_NS.CylinderGeometry\n bx(width: number, height: number, depth: number): THREE_NS.BoxGeometry\n lathe(points: ReadonlyArray<readonly [number, number]>, segments?: number): THREE_NS.LatheGeometry\n torus(radius: number, tube: number, arc?: number): THREE_NS.TorusGeometry\n extrude(points: ReadonlyArray<readonly [number, number]>, depth: number, bevel?: number): THREE_NS.ExtrudeGeometry\n G(...children: THREE_NS.Object3D[]): THREE_NS.Group\n metal(color: number): THREE_NS.MeshStandardMaterial\n wood(color: number): THREE_NS.MeshStandardMaterial\n cloth(color: number): THREE_NS.MeshStandardMaterial\n plastic(color: number): THREE_NS.MeshStandardMaterial\n paper(color: number): THREE_NS.MeshStandardMaterial\n food(color: number): THREE_NS.MeshStandardMaterial\n glass(color: number, opacity: number): THREE_NS.MeshStandardMaterial\n}\n\n/** The channels of a hex as r128 (the team's three.js) stores them: each one over 255, as given, with no conversion. */\nconst channelsOf = (hex: number): readonly [number, number, number] => [((hex >> 16) & 255) / 255, ((hex >> 8) & 255) / 255, (hex & 255) / 255]\n\n/** The helpers of the showcase page on a given three.js; every kit has its own list of materials. */\nexport function createItemKit(three: Three): ItemKit {\n const T = shapeGeometries(three)\n const materials: THREE_NS.MeshStandardMaterial[] = []\n const M: ItemKit['M'] = (color, tag, options = {}) => {\n const material = new T.MeshStandardMaterial(Object.assign({ color, roughness: 0.78, metalness: 0 }, options))\n const base = new T.Color(color)\n const data: ItemMaterialData = { base, baseRgb: channelsOf(color), tag, rough: material.roughness }\n material.userData = data\n materials.push(material)\n return material\n }\n const mesh: ItemKit['mesh'] = (geometry, material, position = [0, 0, 0], rotation = [0, 0, 0], scale) => {\n const object = new T.Mesh(geometry, material)\n object.position.set(...(position as Triple))\n object.rotation.set(...(rotation as Triple))\n if (scale) object.scale.set(...(scale as Triple))\n return object\n }\n return {\n T,\n materials,\n M,\n mesh,\n cyl: (radiusTop, radiusBottom, height, segments = 14) => new T.CylinderGeometry(radiusTop, radiusBottom, height, segments),\n bx: (width, height, depth) => new T.BoxGeometry(width, height, depth),\n lathe: (points, segments = 16) => new T.LatheGeometry(points.map(([x, y]) => new T.Vector2(x, y)), segments),\n torus: (radius, tube, arc = Math.PI * 2) => new T.TorusGeometry(radius, tube, 8, 18, arc),\n extrude: (points, depth, bevel = 0.015) => {\n const shape = new T.Shape()\n points.forEach(([x, y], index) => (index ? shape.lineTo(x, y) : shape.moveTo(x, y)))\n return new T.ExtrudeGeometry(shape, { depth, bevelEnabled: true, bevelThickness: bevel, bevelSize: bevel, bevelSegments: 2 })\n },\n G: (...children) => {\n const group = new T.Group()\n children.forEach((child) => group.add(child))\n return group\n },\n metal: (color) => M(color, 'metal', { metalness: 0.55, roughness: 0.45 }),\n wood: (color) => M(color, 'wood'),\n cloth: (color) => M(color, 'cloth', { roughness: 0.95 }),\n plastic: (color) => M(color, 'plastic', { roughness: 0.6 }),\n paper: (color) => M(color, 'paper', { roughness: 0.9 }),\n food: (color) => M(color, 'food', { roughness: 0.85 }),\n glass: (color, opacity) => M(color, 'glass', { roughness: 0.15, metalness: 0.1, transparent: true, opacity }),\n }\n}\n","[\n {\n \"id\": \"canned_beans\",\n \"teamId\": \"feijao_lata\",\n \"teamBox\": [\n 0.67,\n 0.57,\n 0.66\n ],\n \"scale\": 0.119403\n },\n {\n \"id\": \"water_bottle\",\n \"teamId\": \"agua_500\",\n \"teamBox\": [\n 0.452,\n 1.25,\n 0.452\n ],\n \"scale\": 0.146018\n },\n {\n \"id\": \"rice\",\n \"teamId\": \"arroz\",\n \"teamBox\": [\n 0.72,\n 1.055,\n 0.3\n ],\n \"scale\": 0.236967\n },\n {\n \"id\": \"military_ration\",\n \"teamId\": \"racao_militar\",\n \"teamBox\": [\n 0.77,\n 1.03,\n 0.235\n ],\n \"scale\": 0.252427\n },\n {\n \"id\": \"cachaca\",\n \"teamId\": \"cachaca\",\n \"teamBox\": [\n 0.552,\n 1.31,\n 0.552\n ],\n \"scale\": 0.163043\n },\n {\n \"id\": \"first_aid_kit\",\n \"teamId\": \"kit_ps\",\n \"teamBox\": [\n 1.07,\n 0.915,\n 0.41\n ],\n \"scale\": 0.233645\n },\n {\n \"id\": \"bandage\",\n \"teamId\": \"atadura\",\n \"teamBox\": [\n 0.9851,\n 0.7575,\n 0.43\n ],\n \"scale\": 0.102528\n },\n {\n \"id\": \"amoxicillin\",\n \"teamId\": \"amoxicilina\",\n \"teamBox\": [\n 0.8859,\n 0.47,\n 0.607\n ],\n \"scale\": 0.11288\n },\n {\n \"id\": \"crowbar\",\n \"teamId\": \"pe_cabra\",\n \"teamBox\": [\n 0.428,\n 1.7087,\n 0.11\n ],\n \"scale\": 0.43893\n },\n {\n \"id\": \"hammer\",\n \"teamId\": \"martelo\",\n \"teamBox\": [\n 0.6487,\n 1.3477,\n 0.19\n ],\n \"scale\": 0.244862\n },\n {\n \"id\": \"machete\",\n \"teamId\": \"facao\",\n \"teamBox\": [\n 1.8759,\n 0.2906,\n 0.12\n ],\n \"scale\": 0.293193\n },\n {\n \"id\": \"axe\",\n \"teamId\": \"machado\",\n \"teamBox\": [\n 0.5952,\n 1.6693,\n 0.14\n ],\n \"scale\": 0.419337\n },\n {\n \"id\": \"nail_bat\",\n \"teamId\": \"taco_pregos\",\n \"teamBox\": [\n 0.4384,\n 1.69,\n 0.4352\n ],\n \"scale\": 0.508876\n },\n {\n \"id\": \"hiking_backpack_40l\",\n \"teamId\": \"mochila_trilha\",\n \"teamBox\": [\n 0.8,\n 1.07,\n 0.62\n ],\n \"scale\": 0.514019\n },\n {\n \"id\": \"flashlight\",\n \"teamId\": \"lanterna\",\n \"teamBox\": [\n 0.38,\n 1.08,\n 0.38\n ],\n \"scale\": 0.148148\n },\n {\n \"id\": \"portable_radio\",\n \"teamId\": \"radio_portatil\",\n \"teamBox\": [\n 1.1041,\n 1.4821,\n 0.35\n ],\n \"scale\": 0.199257\n },\n {\n \"id\": \"house_key\",\n \"teamId\": \"chave_casa\",\n \"teamBox\": [\n 1.5433,\n 0.8305,\n 0.08\n ],\n \"scale\": 0.055077\n },\n {\n \"id\": \"survivor_diary\",\n \"teamId\": \"diario\",\n \"teamBox\": [\n 0.8,\n 1.04,\n 0.27\n ],\n \"scale\": 0.201923\n },\n {\n \"id\": \"motorcycle_helmet\",\n \"teamId\": \"capacete_moto\",\n \"teamBox\": [\n 1.11,\n 1.0825,\n 1.17\n ],\n \"scale\": 0.234234\n },\n {\n \"id\": \"lpg_cylinder_13kg\",\n \"teamId\": \"botijao\",\n \"teamBox\": [\n 0.9257,\n 1.285,\n 0.94\n ],\n \"scale\": 0.381323\n },\n {\n \"id\": \"fuel_jerrycan\",\n \"teamId\": \"galao\",\n \"teamBox\": [\n 0.8788,\n 1.342,\n 0.44\n ],\n \"scale\": 0.350224\n },\n {\n \"id\": \"walkie_talkies\",\n \"teamId\": \"walkie\",\n \"teamBox\": [\n 0.465,\n 1.47,\n 0.22\n ],\n \"scale\": 0.14966\n },\n {\n \"id\": \"batteries\",\n \"teamId\": \"pilha_aa\",\n \"teamBox\": [\n 0.744,\n 1.005,\n 0.344\n ],\n \"scale\": 0.050249\n },\n {\n \"id\": \"wooden_plank\",\n \"teamId\": \"tabua\",\n \"teamBox\": [\n 1.5203,\n 0.4741,\n 0.5377\n ],\n \"scale\": 0.526212\n },\n {\n \"id\": \"sugar\",\n \"teamId\": \"acucar\",\n \"teamBox\": [\n 1,\n 2,\n 0.601\n ],\n \"scale\": 0.099945\n },\n {\n \"id\": \"chocolate_bar\",\n \"teamId\": \"chocolate\",\n \"teamBox\": [\n 1.5,\n 0.7,\n 0.102\n ],\n \"scale\": 0.099342\n },\n {\n \"id\": \"potatoes\",\n \"teamId\": \"batata\",\n \"teamBox\": [\n 1.9511,\n 0.9,\n 1.3608\n ],\n \"scale\": 0.101787\n },\n {\n \"id\": \"biscuits\",\n \"teamId\": \"biscoito\",\n \"teamBox\": [\n 2,\n 0.5,\n 1\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"coffee\",\n \"teamId\": \"cafe_po\",\n \"teamBox\": [\n 0.8,\n 1.5,\n 0.61\n ],\n \"scale\": 0.099451\n },\n {\n \"id\": \"raw_beef\",\n \"teamId\": \"carne_bovina\",\n \"teamBox\": [\n 2,\n 0.5,\n 1.5\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"game_meat\",\n \"teamId\": \"carne_caca\",\n \"teamBox\": [\n 3,\n 0.8,\n 2\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"jerked_beef\",\n \"teamId\": \"charque\",\n \"teamBox\": [\n 2.5,\n 0.251,\n 1.5\n ],\n \"scale\": 0.099867\n },\n {\n \"id\": \"home_preserves\",\n \"teamId\": \"conserva\",\n \"teamBox\": [\n 0.904,\n 1.3,\n 0.904\n ],\n \"scale\": 0.099705\n },\n {\n \"id\": \"eggs\",\n \"teamId\": \"ovos\",\n \"teamBox\": [\n 2.5,\n 0.7,\n 1\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"cassava_flour\",\n \"teamId\": \"farinha_mandioca\",\n \"teamBox\": [\n 1.5,\n 2.5,\n 0.601\n ],\n \"scale\": 0.099945\n },\n {\n \"id\": \"beans\",\n \"teamId\": \"feijao_seco\",\n \"teamBox\": [\n 1,\n 2,\n 0.6\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"frozen_chicken\",\n \"teamId\": \"frango\",\n \"teamBox\": [\n 2.6,\n 1,\n 1.7\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"orange\",\n \"teamId\": \"laranja\",\n \"teamBox\": [\n 0.75,\n 0.7518,\n 0.75\n ],\n \"scale\": 0.099921\n },\n {\n \"id\": \"condensed_milk\",\n \"teamId\": \"leite_condensado\",\n \"teamBox\": [\n 0.734,\n 1.004,\n 0.734\n ],\n \"scale\": 0.099504\n },\n {\n \"id\": \"pasta\",\n \"teamId\": \"macarrao\",\n \"teamBox\": [\n 1,\n 2.5,\n 0.405\n ],\n \"scale\": 0.099587\n },\n {\n \"id\": \"instant_noodles\",\n \"teamId\": \"macarrao_inst\",\n \"teamBox\": [\n 1.2,\n 1.6,\n 0.308\n ],\n \"scale\": 0.099127\n },\n {\n \"id\": \"cassava_root\",\n \"teamId\": \"mandioca\",\n \"teamBox\": [\n 4.0317,\n 0.7121,\n 0.71\n ],\n \"scale\": 0.098701\n },\n {\n \"id\": \"canned_corn_and_peas\",\n \"teamId\": \"milho_lata\",\n \"teamBox\": [\n 0.734,\n 0.85,\n 0.734\n ],\n \"scale\": 0.099636\n },\n {\n \"id\": \"mortadella\",\n \"teamId\": \"mortadela\",\n \"teamBox\": [\n 1.516,\n 0.6,\n 0.5\n ],\n \"scale\": 0.099647\n },\n {\n \"id\": \"fresh_fish\",\n \"teamId\": \"peixe_fresco\",\n \"teamBox\": [\n 3.0071,\n 0.6,\n 1\n ],\n \"scale\": 0.099921\n },\n {\n \"id\": \"salted_fish\",\n \"teamId\": \"peixe_salgado\",\n \"teamBox\": [\n 2.487,\n 0.291,\n 0.98\n ],\n \"scale\": 0.101878\n },\n {\n \"id\": \"banana_bunch\",\n \"teamId\": \"banana\",\n \"teamBox\": [\n 3.0041,\n 1.2881,\n 1.6943\n ],\n \"scale\": 0.100373\n },\n {\n \"id\": \"honey_jar\",\n \"teamId\": \"mel\",\n \"teamBox\": [\n 0.804,\n 1,\n 0.804\n ],\n \"scale\": 0.099668\n },\n {\n \"id\": \"bread\",\n \"teamId\": \"pao_forma\",\n \"teamBox\": [\n 3,\n 1,\n 1\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"cheese\",\n \"teamId\": \"queijo\",\n \"teamBox\": [\n 1.4941,\n 0.405,\n 0.981\n ],\n \"scale\": 0.100355\n },\n {\n \"id\": \"rapadura\",\n \"teamId\": \"rapadura\",\n \"teamBox\": [\n 1.9,\n 1,\n 0.602\n ],\n \"scale\": 0.099889\n },\n {\n \"id\": \"dog_food\",\n \"teamId\": \"racao_cao\",\n \"teamBox\": [\n 1.8,\n 2.6,\n 0.711\n ],\n \"scale\": 0.099482\n },\n {\n \"id\": \"salt\",\n \"teamId\": \"sal\",\n \"teamBox\": [\n 0.704,\n 1.61,\n 0.704\n ],\n \"scale\": 0.099414\n },\n {\n \"id\": \"snack_chips\",\n \"teamId\": \"salgadinho\",\n \"teamBox\": [\n 2,\n 2.8,\n 0.601\n ],\n \"scale\": 0.099945\n },\n {\n \"id\": \"canned_sausages\",\n \"teamId\": \"salsicha_lata\",\n \"teamBox\": [\n 0.734,\n 0.85,\n 0.734\n ],\n \"scale\": 0.099636\n },\n {\n \"id\": \"canned_sardines\",\n \"teamId\": \"sardinha\",\n \"teamBox\": [\n 1.12,\n 0.26,\n 0.65\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"cooking_oil\",\n \"teamId\": \"oleo_cozinha\",\n \"teamBox\": [\n 0.704,\n 2.6,\n 0.704\n ],\n \"scale\": 0.099621\n },\n {\n \"id\": \"beer_can\",\n \"teamId\": \"cerveja\",\n \"teamBox\": [\n 0.664,\n 1.2,\n 0.664\n ],\n \"scale\": 0.099598\n },\n {\n \"id\": \"energy_drink\",\n \"teamId\": \"energetico\",\n \"teamBox\": [\n 0.584,\n 1.35,\n 0.584\n ],\n \"scale\": 0.099543\n },\n {\n \"id\": \"water_jug_5l\",\n \"teamId\": \"galao_agua\",\n \"teamBox\": [\n 1.9,\n 3.3,\n 1.501\n ],\n \"scale\": 0.099978\n },\n {\n \"id\": \"sports_drink\",\n \"teamId\": \"isotonico\",\n \"teamBox\": [\n 0.664,\n 1.83,\n 0.664\n ],\n \"scale\": 0.099598\n },\n {\n \"id\": \"milk_carton\",\n \"teamId\": \"leite\",\n \"teamBox\": [\n 0.7,\n 2,\n 0.704\n ],\n \"scale\": 0.09981\n },\n {\n \"id\": \"soda_can\",\n \"teamId\": \"refri_lata\",\n \"teamBox\": [\n 0.664,\n 1.2,\n 0.664\n ],\n \"scale\": 0.099598\n },\n {\n \"id\": \"juice_box\",\n \"teamId\": \"suco_cx\",\n \"teamBox\": [\n 0.52,\n 1,\n 0.3715\n ],\n \"scale\": 0.099865\n },\n {\n \"id\": \"communion_wine\",\n \"teamId\": \"vinho\",\n \"teamBox\": [\n 0.764,\n 3,\n 0.767\n ],\n \"scale\": 0.099521\n },\n {\n \"id\": \"coconut_water\",\n \"teamId\": \"agua_coco\",\n \"teamBox\": [\n 0.6,\n 1.7,\n 0.6\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"dirty_water\",\n \"teamId\": \"agua_suja\",\n \"teamBox\": [\n 0.664,\n 1.83,\n 0.664\n ],\n \"scale\": 0.099598\n },\n {\n \"id\": \"painkillers\",\n \"teamId\": \"analgesico\",\n \"teamBox\": [\n 0.6,\n 0.201,\n 0.4\n ],\n \"scale\": 0.099834\n },\n {\n \"id\": \"tramadol\",\n \"teamId\": \"opioide\",\n \"teamBox\": [\n 0.95,\n 0.5,\n 0.1525\n ],\n \"scale\": 0.099451\n },\n {\n \"id\": \"ibuprofen\",\n \"teamId\": \"ibuprofeno\",\n \"teamBox\": [\n 0.95,\n 0.5,\n 0.1525\n ],\n \"scale\": 0.099451\n },\n {\n \"id\": \"antihistamine\",\n \"teamId\": \"antialergico\",\n \"teamBox\": [\n 0.8,\n 0.5,\n 0.1525\n ],\n \"scale\": 0.099451\n },\n {\n \"id\": \"ceftriaxone\",\n \"teamId\": \"ceftriaxona\",\n \"teamBox\": [\n 1,\n 0.6,\n 0.3\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"clonazepam\",\n \"teamId\": \"calmante\",\n \"teamBox\": [\n 0.9,\n 0.5,\n 0.1525\n ],\n \"scale\": 0.099451\n },\n {\n \"id\": \"activated_charcoal\",\n \"teamId\": \"carvao_ativado\",\n \"teamBox\": [\n 0.6,\n 0.95,\n 0.2515\n ],\n \"scale\": 0.099801\n },\n {\n \"id\": \"adhesive_bandages\",\n \"teamId\": \"curativo\",\n \"teamBox\": [\n 1,\n 0.6,\n 0.1516\n ],\n \"scale\": 0.099647\n },\n {\n \"id\": \"medical_tape\",\n \"teamId\": \"esparadrapo\",\n \"teamBox\": [\n 0.5,\n 0.25,\n 0.5\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"sterile_gauze\",\n \"teamId\": \"gaze\",\n \"teamBox\": [\n 1,\n 1,\n 0.1526\n ],\n \"scale\": 0.099429\n },\n {\n \"id\": \"povidone_iodine\",\n \"teamId\": \"pvpi\",\n \"teamBox\": [\n 0.451,\n 1.1,\n 0.3563\n ],\n \"scale\": 0.099335\n },\n {\n \"id\": \"suture_kit\",\n \"teamId\": \"kit_sutura\",\n \"teamBox\": [\n 1.5,\n 0.8,\n 0.305\n ],\n \"scale\": 0.099451\n },\n {\n \"id\": \"exam_gloves\",\n \"teamId\": \"luva_proc\",\n \"teamBox\": [\n 1.0104,\n 1.2,\n 0.1005\n ],\n \"scale\": 0.09949\n },\n {\n \"id\": \"n95_mask\",\n \"teamId\": \"n95\",\n \"teamBox\": [\n 1.5,\n 1.1007,\n 0.25\n ],\n \"scale\": 0.099978\n },\n {\n \"id\": \"multivitamin\",\n \"teamId\": \"vitamina\",\n \"teamBox\": [\n 0.5,\n 0.9,\n 0.5\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"maintenance_medication\",\n \"teamId\": \"remedio_continuo\",\n \"teamBox\": [\n 0.45,\n 0.9,\n 0.45\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"rehydration_salts\",\n \"teamId\": \"sais_reidrat\",\n \"teamBox\": [\n 0.9,\n 1.2,\n 0.1005\n ],\n \"scale\": 0.099834\n },\n {\n \"id\": \"syringe\",\n \"teamId\": \"seringa\",\n \"teamBox\": [\n 1.5,\n 0.2,\n 0.2\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"antivenom\",\n \"teamId\": \"antiofidico\",\n \"teamBox\": [\n 1.5,\n 0.9,\n 0.504\n ],\n \"scale\": 0.099735\n },\n {\n \"id\": \"saline_iv_bag\",\n \"teamId\": \"soro\",\n \"teamBox\": [\n 1.2,\n 2.5,\n 0.45\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"splint\",\n \"teamId\": \"tala\",\n \"teamBox\": [\n 4.6,\n 1.1,\n 0.1005\n ],\n \"scale\": 0.099834\n },\n {\n \"id\": \"thermometer\",\n \"teamId\": \"termometro\",\n \"teamBox\": [\n 1.2,\n 0.198,\n 0.3\n ],\n \"scale\": 0.100336\n },\n {\n \"id\": \"alcohol_70\",\n \"teamId\": \"alcool70\",\n \"teamBox\": [\n 0.702,\n 2,\n 0.5012\n ],\n \"scale\": 0.099823\n },\n {\n \"id\": \"can_opener\",\n \"teamId\": \"abridor\",\n \"teamBox\": [\n 14,\n 4,\n 2.5\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"pliers\",\n \"teamId\": \"alicate\",\n \"teamBox\": [\n 20,\n 3,\n 7\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"bolt_cutters\",\n \"teamId\": \"corta_vergalhao\",\n \"teamBox\": [\n 60,\n 6,\n 15\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"bucket\",\n \"teamId\": \"balde\",\n \"teamBox\": [\n 28,\n 27,\n 28\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"binoculars\",\n \"teamId\": \"binoculo\",\n \"teamBox\": [\n 18,\n 15,\n 12\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"matches\",\n \"teamId\": \"fosforo\",\n \"teamBox\": [\n 5,\n 1.5,\n 3.5\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"pocket_knife\",\n \"teamId\": \"canivete\",\n \"teamBox\": [\n 11,\n 2.2,\n 3.2\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"screwdriver\",\n \"teamId\": \"chave_fenda\",\n \"teamBox\": [\n 22,\n 4,\n 4\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"adjustable_wrench\",\n \"teamId\": \"chave_inglesa\",\n \"teamBox\": [\n 25,\n 2,\n 6\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"hoe\",\n \"teamId\": \"enxada\",\n \"teamBox\": [\n 135,\n 6,\n 17\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"fire_extinguisher\",\n \"teamId\": \"extintor\",\n \"teamBox\": [\n 16.0794,\n 48,\n 16\n ],\n \"scale\": 0.009984\n },\n {\n \"id\": \"duct_tape\",\n \"teamId\": \"silver_tape\",\n \"teamBox\": [\n 10,\n 5,\n 10\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"camp_stove\",\n \"teamId\": \"fogareiro\",\n \"teamBox\": [\n 18,\n 10,\n 11\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"lighter\",\n \"teamId\": \"isqueiro\",\n \"teamBox\": [\n 2.5,\n 8,\n 1.2\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"lockpick_kit\",\n \"teamId\": \"kit_chaveiro\",\n \"teamBox\": [\n 10,\n 7,\n 2\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"sewing_kit\",\n \"teamId\": \"kit_costura\",\n \"teamBox\": [\n 9,\n 5,\n 3\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"car_jack\",\n \"teamId\": \"macaco\",\n \"teamBox\": [\n 30,\n 11,\n 11\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"mechanic_toolbox\",\n \"teamId\": \"kit_mecanico\",\n \"teamBox\": [\n 40,\n 20,\n 19.8\n ],\n \"scale\": 0.010034\n },\n {\n \"id\": \"gas_torch\",\n \"teamId\": \"macarico\",\n \"teamBox\": [\n 15.1,\n 42,\n 15\n ],\n \"scale\": 0.009978\n },\n {\n \"id\": \"inverter_welder\",\n \"teamId\": \"solda\",\n \"teamBox\": [\n 30,\n 22,\n 12.9\n ],\n \"scale\": 0.010026\n },\n {\n \"id\": \"pot\",\n \"teamId\": \"panela\",\n \"teamBox\": [\n 25,\n 15,\n 25\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"cordless_drill\",\n \"teamId\": \"parafusadeira\",\n \"teamBox\": [\n 22,\n 20,\n 7\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"flint_striker\",\n \"teamId\": \"pederneira\",\n \"teamBox\": [\n 11.1,\n 2,\n 1.5\n ],\n \"scale\": 0.00997\n },\n {\n \"id\": \"sharpening_stone\",\n \"teamId\": \"amolador\",\n \"teamBox\": [\n 20,\n 5,\n 2.5\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"shovel\",\n \"teamId\": \"pa\",\n \"teamBox\": [\n 110.3,\n 7,\n 22\n ],\n \"scale\": 0.009991\n },\n {\n \"id\": \"hacksaw\",\n \"teamId\": \"serra_arco\",\n \"teamBox\": [\n 42,\n 3,\n 12\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"handsaw\",\n \"teamId\": \"serrote\",\n \"teamBox\": [\n 50.01,\n 3.5,\n 13.021\n ],\n \"scale\": 0.009994\n },\n {\n \"id\": \"scissors\",\n \"teamId\": \"tesoura\",\n \"teamBox\": [\n 18,\n 1.5,\n 7\n ],\n \"scale\": 0.01\n },\n {\n \"id\": \"recurve_bow\",\n \"teamId\": \"arco\",\n \"teamBox\": [\n 12.9812,\n 1.98,\n 0.5\n ],\n \"scale\": 0.100385\n },\n {\n \"id\": \"crossbow\",\n \"teamId\": \"besta\",\n \"teamBox\": [\n 7,\n 1.2,\n 8.0191\n ],\n \"scale\": 0.09992\n },\n {\n \"id\": \"iron_pipe\",\n \"teamId\": \"cano\",\n \"teamBox\": [\n 8.01,\n 0.354,\n 0.354\n ],\n \"scale\": 0.099204\n },\n {\n \"id\": \"meat_cleaver\",\n \"teamId\": \"cutelo\",\n \"teamBox\": [\n 3.3,\n 0.3,\n 1.2\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"slingshot\",\n \"teamId\": \"estilingue\",\n \"teamBox\": [\n 1.3013,\n 1.5055,\n 0.252\n ],\n \"scale\": 0.099578\n },\n {\n \"id\": \"knife\",\n \"teamId\": \"faca_cozinha\",\n \"teamBox\": [\n 2.5028,\n 0.3,\n 0.404\n ],\n \"scale\": 0.099632\n },\n {\n \"id\": \"tactical_knife\",\n \"teamId\": \"faca_tatica\",\n \"teamBox\": [\n 2.6028,\n 0.282,\n 0.454\n ],\n \"scale\": 0.099433\n },\n {\n \"id\": \"arrows_and_bolts\",\n \"teamId\": \"flecha\",\n \"teamBox\": [\n 7,\n 0.25,\n 0.4\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"sickle\",\n \"teamId\": \"foice\",\n \"teamBox\": [\n 4.0085,\n 0.352,\n 3.4971\n ],\n \"scale\": 0.099767\n },\n {\n \"id\": \"cast_iron_skillet\",\n \"teamId\": \"frigideira\",\n \"teamBox\": [\n 4.3,\n 0.5,\n 2.5\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"improvised_spear\",\n \"teamId\": \"lanca\",\n \"teamBox\": [\n 16,\n 0.35,\n 0.35\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"hatchet\",\n \"teamId\": \"machadinha\",\n \"teamBox\": [\n 3.5016,\n 0.5,\n 1.3047\n ],\n \"scale\": 0.099866\n },\n {\n \"id\": \"sledgehammer\",\n \"teamId\": \"marreta\",\n \"teamBox\": [\n 9,\n 1.2,\n 2.5\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"chainsaw\",\n \"teamId\": \"motosserra\",\n \"teamBox\": [\n 4.5,\n 2.6,\n 2.3\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"pickaxe\",\n \"teamId\": \"picareta\",\n \"teamBox\": [\n 9,\n 0.4,\n 3.5352\n ],\n \"scale\": 0.099667\n },\n {\n \"id\": \"baseball_bat\",\n \"teamId\": \"taco\",\n \"teamBox\": [\n 8.6,\n 0.704,\n 0.704\n ],\n \"scale\": 0.099621\n },\n {\n \"id\": \"police_baton\",\n \"teamId\": \"tonfa\",\n \"teamBox\": [\n 5,\n 1,\n 0.45\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"wire_roll\",\n \"teamId\": \"arame\",\n \"teamBox\": [\n 1.404,\n 0.5,\n 1.404\n ],\n \"scale\": 0.09981\n },\n {\n \"id\": \"barbed_wire\",\n \"teamId\": \"arame_farpado\",\n \"teamBox\": [\n 3,\n 1.2,\n 3\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"glass_shards\",\n \"teamId\": \"cacos\",\n \"teamBox\": [\n 1.205,\n 0.5149,\n 1.0049\n ],\n \"scale\": 0.098729\n },\n {\n \"id\": \"sheet_metal\",\n \"teamId\": \"chapa\",\n \"teamBox\": [\n 6,\n 0.03,\n 4.5\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"cement_bag\",\n \"teamId\": \"cimento\",\n \"teamBox\": [\n 5,\n 1.011,\n 3\n ],\n \"scale\": 0.099636\n },\n {\n \"id\": \"epoxy_glue\",\n \"teamId\": \"cola\",\n \"teamBox\": [\n 1,\n 0.6,\n 0.3\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"electronic_components\",\n \"teamId\": \"componentes\",\n \"teamBox\": [\n 1,\n 0.2,\n 0.8\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"rope\",\n \"teamId\": \"corda\",\n \"teamBox\": [\n 1.5,\n 0.8,\n 1.5\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"copper_wire\",\n \"teamId\": \"fio_cobre\",\n \"teamBox\": [\n 0.8,\n 0.302,\n 0.8\n ],\n \"scale\": 0.099779\n },\n {\n \"id\": \"pet_bottle\",\n \"teamId\": \"garrafa_pet\",\n \"teamBox\": [\n 1.06,\n 3.3,\n 1.06\n ],\n \"scale\": 0.09937\n },\n {\n \"id\": \"glass_bottle\",\n \"teamId\": \"garrafa_vidro\",\n \"teamBox\": [\n 0.75,\n 2.6,\n 0.75\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"empty_can\",\n \"teamId\": \"lata_vazia\",\n \"teamBox\": [\n 0.664,\n 1.207,\n 0.664\n ],\n \"scale\": 0.099405\n },\n {\n \"id\": \"firewood\",\n \"teamId\": \"lenha\",\n \"teamBox\": [\n 4,\n 1.2,\n 1.6\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"tarp\",\n \"teamId\": \"lona\",\n \"teamBox\": [\n 3.5,\n 1.002,\n 2.502\n ],\n \"scale\": 0.099907\n },\n {\n \"id\": \"screws\",\n \"teamId\": \"parafusos\",\n \"teamBox\": [\n 0.9,\n 0.5,\n 0.5\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"nails\",\n \"teamId\": \"pregos\",\n \"teamBox\": [\n 1.3,\n 0.6,\n 0.5\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"raffia_sack\",\n \"teamId\": \"saco_areia\",\n \"teamBox\": [\n 4,\n 0.2,\n 3\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"scrap_metal\",\n \"teamId\": \"sucata\",\n \"teamBox\": [\n 2,\n 0.805,\n 1.5\n ],\n \"scale\": 0.099793\n },\n {\n \"id\": \"bricks\",\n \"teamId\": \"tijolo\",\n \"teamBox\": [\n 1.911,\n 1.8,\n 2.9\n ],\n \"scale\": 0.099808\n },\n {\n \"id\": \"rag\",\n \"teamId\": \"trapo\",\n \"teamBox\": [\n 2.2,\n 0.252,\n 1.8\n ],\n \"scale\": 0.099735\n },\n {\n \"id\": \"rebar\",\n \"teamId\": \"vergalhao\",\n \"teamBox\": [\n 12.7,\n 0.16,\n 0.16\n ],\n \"scale\": 0.1\n },\n {\n \"id\": \"lubricant_spray\",\n \"teamId\": \"lubrificante\",\n \"teamBox\": [\n 0.504,\n 1.7,\n 0.504\n ],\n \"scale\": 0.09947\n },\n {\n \"id\": \"army_camouflage_uniform\",\n \"teamId\": \"farda_eb\",\n \"teamBox\": [\n 0.4,\n 0.1005,\n 0.32\n ],\n \"scale\": 1\n },\n {\n \"id\": \"backpack\",\n \"teamId\": \"mochila_escolar\",\n \"teamBox\": [\n 0.3,\n 0.3,\n 0.2\n ],\n \"scale\": 1\n },\n {\n \"id\": \"ballistic_vest\",\n \"teamId\": \"colete\",\n \"teamBox\": [\n 0.4,\n 0.07,\n 0.45\n ],\n \"scale\": 1\n },\n {\n \"id\": \"battery_9v\",\n \"teamId\": \"bateria_9v\",\n \"teamBox\": [\n 0.0262,\n 0.049,\n 0.0182\n ],\n \"scale\": 1\n },\n {\n \"id\": \"bean_seeds\",\n \"teamId\": \"sem_feijao\",\n \"teamBox\": [\n 0.1,\n 0.15,\n 0.02\n ],\n \"scale\": 1\n },\n {\n \"id\": \"beekeeper_suit\",\n \"teamId\": \"apicultor\",\n \"teamBox\": [\n 0.4,\n 0.1,\n 0.33\n ],\n \"scale\": 1\n },\n {\n \"id\": \"candles\",\n \"teamId\": \"vela\",\n \"teamBox\": [\n 0.06,\n 0.12,\n 0.06\n ],\n \"scale\": 1\n },\n {\n \"id\": \"car_alarm_remote\",\n \"teamId\": \"controle_alarme\",\n \"teamBox\": [\n 0.04,\n 0.07011,\n 0.012\n ],\n \"scale\": 1\n },\n {\n \"id\": \"car_battery_12v\",\n \"teamId\": \"bateria_12v\",\n \"teamBox\": [\n 0.24,\n 0.19,\n 0.1725\n ],\n \"scale\": 1\n },\n {\n \"id\": \"car_key\",\n \"teamId\": \"chave_carro\",\n \"teamBox\": [\n 0.06,\n 0.045,\n 0.015\n ],\n \"scale\": 1\n },\n {\n \"id\": \"cash\",\n \"teamId\": \"dinheiro\",\n \"teamBox\": [\n 0.155,\n 0.01,\n 0.065\n ],\n \"scale\": 1\n },\n {\n \"id\": \"cassava_cuttings\",\n \"teamId\": \"maniva\",\n \"teamBox\": [\n 0.7,\n 0.12,\n 0.12\n ],\n \"scale\": 1\n },\n {\n \"id\": \"cb_radio\",\n \"teamId\": \"radio_px\",\n \"teamBox\": [\n 0.25,\n 0.08,\n 0.2\n ],\n \"scale\": 1\n },\n {\n \"id\": \"cell_key\",\n \"teamId\": \"chave_cela\",\n \"teamBox\": [\n 0.12,\n 0.03,\n 0.008\n ],\n \"scale\": 1\n },\n {\n \"id\": \"charcoal_bag\",\n \"teamId\": \"carvao\",\n \"teamBox\": [\n 0.3,\n 0.12,\n 0.4\n ],\n \"scale\": 1\n },\n {\n \"id\": \"cigarettes\",\n \"teamId\": \"cigarro\",\n \"teamBox\": [\n 0.055,\n 0.088,\n 0.022\n ],\n \"scale\": 1\n },\n {\n \"id\": \"city_map\",\n \"teamId\": \"mapa_cidade\",\n \"teamBox\": [\n 0.11,\n 0.01,\n 0.25\n ],\n \"scale\": 1\n },\n {\n \"id\": \"combat_boots\",\n \"teamId\": \"coturno\",\n \"teamBox\": [\n 0.3,\n 0.2,\n 0.22\n ],\n \"scale\": 1\n },\n {\n \"id\": \"cooler_box\",\n \"teamId\": \"caixa_termica\",\n \"teamBox\": [\n 0.32,\n 0.25,\n 0.23\n ],\n \"scale\": 1\n },\n {\n \"id\": \"corn_seeds\",\n \"teamId\": \"sem_milho\",\n \"teamBox\": [\n 0.1,\n 0.15,\n 0.02\n ],\n \"scale\": 1\n },\n {\n \"id\": \"crossbody_bag\",\n \"teamId\": \"bolsa\",\n \"teamBox\": [\n 0.25,\n 0.2,\n 0.08\n ],\n \"scale\": 1\n },\n {\n \"id\": \"delivery_bag\",\n \"teamId\": \"bag_entregador\",\n \"teamBox\": [\n 0.48,\n 0.45,\n 0.42\n ],\n \"scale\": 1\n },\n {\n \"id\": \"denim_jacket\",\n \"teamId\": \"jaqueta_jeans\",\n \"teamBox\": [\n 0.4,\n 0.08,\n 0.3025\n ],\n \"scale\": 1\n },\n {\n \"id\": \"diesel\",\n \"teamId\": \"diesel\",\n \"teamBox\": [\n 0.091,\n 0.26,\n 0.091\n ],\n \"scale\": 1\n },\n {\n \"id\": \"diy_magazine\",\n \"teamId\": \"revista_receita\",\n \"teamBox\": [\n 0.21,\n 0.28,\n 0.00805\n ],\n \"scale\": 1\n },\n {\n \"id\": \"dog_tag\",\n \"teamId\": \"plaqueta\",\n \"teamBox\": [\n 0.03,\n 0.003,\n 0.05038\n ],\n \"scale\": 1\n },\n {\n \"id\": \"electric_fence_energizer\",\n \"teamId\": \"eletrificador\",\n \"teamBox\": [\n 0.25,\n 0.2,\n 0.1502\n ],\n \"scale\": 1\n },\n {\n \"id\": \"extension_cord\",\n \"teamId\": \"extensao\",\n \"teamBox\": [\n 0.228,\n 0.08,\n 0.23\n ],\n \"scale\": 1\n },\n {\n \"id\": \"fanny_pack\",\n \"teamId\": \"pochete\",\n \"teamBox\": [\n 0.25,\n 0.1,\n 0.12\n ],\n \"scale\": 1\n },\n {\n \"id\": \"farmers_almanac\",\n \"teamId\": \"almanaque\",\n \"teamBox\": [\n 0.15,\n 0.21,\n 0.0151\n ],\n \"scale\": 1\n },\n {\n \"id\": \"fertilizer_bag\",\n \"teamId\": \"adubo\",\n \"teamBox\": [\n 0.45,\n 0.13,\n 0.3\n ],\n \"scale\": 1\n },\n {\n \"id\": \"firefighter_suit\",\n \"teamId\": \"bombeiro\",\n \"teamBox\": [\n 0.55,\n 0.2,\n 0.4\n ],\n \"scale\": 1\n },\n {\n \"id\": \"fishing_net\",\n \"teamId\": \"rede_pesca\",\n \"teamBox\": [\n 0.35,\n 0.15,\n 0.3\n ],\n \"scale\": 1\n },\n {\n \"id\": \"fishing_rod\",\n \"teamId\": \"vara_pesca\",\n \"teamBox\": [\n 1.8,\n 0.04,\n 0.04\n ],\n \"scale\": 1\n },\n {\n \"id\": \"fishing_tackle_box\",\n \"teamId\": \"kit_pesca\",\n \"teamBox\": [\n 0.3,\n 0.1,\n 0.18\n ],\n \"scale\": 1\n },\n {\n \"id\": \"flip_flops\",\n \"teamId\": \"chinelo\",\n \"teamBox\": [\n 0.29,\n 0.03,\n 0.23\n ],\n \"scale\": 1\n },\n {\n \"id\": \"folding_solar_panel\",\n \"teamId\": \"painel_solar\",\n \"teamBox\": [\n 0.396,\n 0.296,\n 0.0506\n ],\n \"scale\": 1\n },\n {\n \"id\": \"gas_cartridge\",\n \"teamId\": \"cartucho_gas\",\n \"teamBox\": [\n 0.111,\n 0.165,\n 0.111\n ],\n \"scale\": 1\n },\n {\n \"id\": \"gasoline\",\n \"teamId\": \"gasolina\",\n \"teamBox\": [\n 0.091,\n 0.26,\n 0.091\n ],\n \"scale\": 1\n },\n {\n \"id\": \"generator_key\",\n \"teamId\": \"chave_gerador\",\n \"teamBox\": [\n 0.08,\n 0.03,\n 0.006\n ],\n \"scale\": 1\n },\n {\n \"id\": \"hard_hat\",\n \"teamId\": \"capacete_obra\",\n \"teamBox\": [\n 0.24958,\n 0.15,\n 0.3\n ],\n \"scale\": 1\n },\n {\n \"id\": \"headlamp\",\n \"teamId\": \"lanterna_cabeca\",\n \"teamBox\": [\n 0.09,\n 0.06,\n 0.05\n ],\n \"scale\": 1\n },\n {\n \"id\": \"hoodie\",\n \"teamId\": \"moletom\",\n \"teamBox\": [\n 0.38,\n 0.08,\n 0.28\n ],\n \"scale\": 1\n },\n {\n \"id\": \"janitor_keys\",\n \"teamId\": \"molho_zelador\",\n \"teamBox\": [\n 0.12125,\n 0.10081,\n 0.02\n ],\n \"scale\": 1\n },\n {\n \"id\": \"jeans\",\n \"teamId\": \"calca_jeans\",\n \"teamBox\": [\n 0.35,\n 0.06,\n 0.22\n ],\n \"scale\": 1\n },\n {\n \"id\": \"kale_and_lettuce_seeds\",\n \"teamId\": \"sem_couve\",\n \"teamBox\": [\n 0.09,\n 0.13,\n 0.015\n ],\n \"scale\": 1\n },\n {\n \"id\": \"kerosene\",\n \"teamId\": \"querosene\",\n \"teamBox\": [\n 0.091,\n 0.26,\n 0.091\n ],\n \"scale\": 1\n },\n {\n \"id\": \"laptop\",\n \"teamId\": \"notebook\",\n \"teamBox\": [\n 0.36,\n 0.0252,\n 0.251\n ],\n \"scale\": 1\n },\n {\n \"id\": \"leather_motorcycle_jacket\",\n \"teamId\": \"jaqueta_couro\",\n \"teamBox\": [\n 0.45,\n 0.1,\n 0.355\n ],\n \"scale\": 1\n },\n {\n \"id\": \"leather_motorcycle_pants\",\n \"teamId\": \"calca_couro\",\n \"teamBox\": [\n 0.4,\n 0.0902,\n 0.3\n ],\n \"scale\": 1\n },\n {\n \"id\": \"leather_work_gloves\",\n \"teamId\": \"luva_couro\",\n \"teamBox\": [\n 0.25,\n 0.03,\n 0.12\n ],\n \"scale\": 1\n },\n {\n \"id\": \"led_camp_lantern\",\n \"teamId\": \"lampiao_led\",\n \"teamBox\": [\n 0.11,\n 0.2,\n 0.11\n ],\n \"scale\": 1\n },\n {\n \"id\": \"magazine_arm_guard\",\n \"teamId\": \"braco_revista\",\n \"teamBox\": [\n 0.3,\n 0.05899,\n 0.15022\n ],\n \"scale\": 1\n },\n {\n \"id\": \"magazines_and_comics\",\n \"teamId\": \"revista_passa\",\n \"teamBox\": [\n 0.17,\n 0.26,\n 0.0101\n ],\n \"scale\": 1\n },\n {\n \"id\": \"master_key\",\n \"teamId\": \"chave_mestra\",\n \"teamBox\": [\n 0.09,\n 0.035,\n 0.006\n ],\n \"scale\": 1\n },\n {\n \"id\": \"mechanic_coveralls\",\n \"teamId\": \"macacao\",\n \"teamBox\": [\n 0.4,\n 0.09,\n 0.3\n ],\n \"scale\": 1\n },\n {\n \"id\": \"military_backpack\",\n \"teamId\": \"mochila_militar\",\n \"teamBox\": [\n 0.35,\n 0.6,\n 0.3\n ],\n \"scale\": 1\n },\n {\n \"id\": \"military_radio\",\n \"teamId\": \"radio_militar\",\n \"teamBox\": [\n 0.3,\n 0.2,\n 0.25\n ],\n \"scale\": 1\n },\n {\n \"id\": \"mobile_phone\",\n \"teamId\": \"celular\",\n \"teamBox\": [\n 0.077,\n 0.16,\n 0.009\n ],\n \"scale\": 1\n },\n {\n \"id\": \"motor_oil\",\n \"teamId\": \"oleo_motor\",\n \"teamBox\": [\n 0.1,\n 0.26,\n 0.07\n ],\n \"scale\": 1\n },\n {\n \"id\": \"night_vision_goggles\",\n \"teamId\": \"nvg\",\n \"teamBox\": [\n 0.15,\n 0.1,\n 0.11\n ],\n \"scale\": 1\n },\n {\n \"id\": \"note\",\n \"teamId\": \"bilhete\",\n \"teamBox\": [\n 0.15,\n 0.002,\n 0.1\n ],\n \"scale\": 1\n },\n {\n \"id\": \"padded_coat\",\n \"teamId\": \"casaco_frio\",\n \"teamBox\": [\n 0.45,\n 0.15,\n 0.35\n ],\n \"scale\": 1\n },\n {\n \"id\": \"padlock_key\",\n \"teamId\": \"cadeado_chave\",\n \"teamBox\": [\n 0.05,\n 0.08078,\n 0.025\n ],\n \"scale\": 1\n },\n {\n \"id\": \"photo\",\n \"teamId\": \"foto\",\n \"teamBox\": [\n 0.102,\n 0.002,\n 0.152\n ],\n \"scale\": 1\n },\n {\n \"id\": \"portable_generator\",\n \"teamId\": \"gerador\",\n \"teamBox\": [\n 0.5,\n 0.42,\n 0.43345\n ],\n \"scale\": 1\n },\n {\n \"id\": \"power_bank\",\n \"teamId\": \"power_bank\",\n \"teamBox\": [\n 0.15,\n 0.07,\n 0.0158\n ],\n \"scale\": 1\n },\n {\n \"id\": \"pumpkin_seeds\",\n \"teamId\": \"sem_abobora\",\n \"teamBox\": [\n 0.09,\n 0.13,\n 0.015\n ],\n \"scale\": 1\n },\n {\n \"id\": \"raincoat\",\n \"teamId\": \"capa_chuva\",\n \"teamBox\": [\n 0.3,\n 0.04,\n 0.25\n ],\n \"scale\": 1\n },\n {\n \"id\": \"road_map\",\n \"teamId\": \"mapa_rodoviario\",\n \"teamBox\": [\n 0.11,\n 0.01,\n 0.25\n ],\n \"scale\": 1\n },\n {\n \"id\": \"rolling_suitcase\",\n \"teamId\": \"mala\",\n \"teamBox\": [\n 0.4,\n 0.65,\n 0.25\n ],\n \"scale\": 1\n },\n {\n \"id\": \"rubber_boots\",\n \"teamId\": \"bota_borracha\",\n \"teamBox\": [\n 0.3,\n 0.35,\n 0.223\n ],\n \"scale\": 1\n },\n {\n \"id\": \"safe_key\",\n \"teamId\": \"chave_cofre\",\n \"teamBox\": [\n 0.06995,\n 0.0249,\n 0.005\n ],\n \"scale\": 1\n },\n {\n \"id\": \"safety_goggles\",\n \"teamId\": \"oculos\",\n \"teamBox\": [\n 0.16,\n 0.06,\n 0.08\n ],\n \"scale\": 1\n },\n {\n \"id\": \"sheet_metal_forearm_guard\",\n \"teamId\": \"braco_chapa\",\n \"teamBox\": [\n 0.3,\n 0.0981,\n 0.11995\n ],\n \"scale\": 1\n },\n {\n \"id\": \"shopping_bag\",\n \"teamId\": \"sacola\",\n \"teamBox\": [\n 0.3,\n 0.02,\n 0.2\n ],\n \"scale\": 1\n },\n {\n \"id\": \"shopping_cart\",\n \"teamId\": \"carrinho_merc\",\n \"teamBox\": [\n 0.55,\n 0.98,\n 0.95\n ],\n \"scale\": 1\n },\n {\n \"id\": \"skill_book\",\n \"teamId\": \"livro_hab\",\n \"teamBox\": [\n 0.1615,\n 0.23,\n 0.0402\n ],\n \"scale\": 1\n },\n {\n \"id\": \"snare_trap\",\n \"teamId\": \"armadilha_laco\",\n \"teamBox\": [\n 0.15,\n 0.03,\n 0.15\n ],\n \"scale\": 1\n },\n {\n \"id\": \"sneakers\",\n \"teamId\": \"tenis\",\n \"teamBox\": [\n 0.29731,\n 0.12,\n 0.12\n ],\n \"scale\": 1\n },\n {\n \"id\": \"tactical_vest\",\n \"teamId\": \"colete_tatico\",\n \"teamBox\": [\n 0.35,\n 0.1,\n 0.4\n ],\n \"scale\": 1\n },\n {\n \"id\": \"technical_manual\",\n \"teamId\": \"livro_tecnico\",\n \"teamBox\": [\n 0.21,\n 0.3,\n 0.0404\n ],\n \"scale\": 1\n },\n {\n \"id\": \"tool_belt\",\n \"teamId\": \"cinto_ferramentas\",\n \"teamBox\": [\n 0.35,\n 0.1,\n 0.25\n ],\n \"scale\": 1\n },\n {\n \"id\": \"trash_bag\",\n \"teamId\": \"saco_lixo\",\n \"teamBox\": [\n 0.25,\n 0.025,\n 0.2\n ],\n \"scale\": 1\n },\n {\n \"id\": \"trekking_backpack_70l\",\n \"teamId\": \"cargueira\",\n \"teamBox\": [\n 0.38,\n 0.75,\n 0.3\n ],\n \"scale\": 1\n },\n {\n \"id\": \"tshirt\",\n \"teamId\": \"camiseta\",\n \"teamBox\": [\n 0.3,\n 0.04,\n 0.22\n ],\n \"scale\": 1\n },\n {\n \"id\": \"watering_can\",\n \"teamId\": \"regador\",\n \"teamBox\": [\n 0.40001,\n 0.25789,\n 0.18\n ],\n \"scale\": 1\n },\n {\n \"id\": \"wheelbarrow\",\n \"teamId\": \"carrinho_mao\",\n \"teamBox\": [\n 0.64651,\n 0.65148,\n 1.5\n ],\n \"scale\": 1\n },\n {\n \"id\": \"windup_alarm_clock\",\n \"teamId\": \"despertador\",\n \"teamBox\": [\n 0.1089,\n 0.125,\n 0.05525\n ],\n \"scale\": 1\n }\n]\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"feijao_lata\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L145), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `canned_beans`.\n */\nexport const cannedBeans: ItemModelBuilder = ({ mesh, cyl, torus, G, metal, paper, food }) => { const m = metal(0x8d9096); return G(mesh(cyl(.32, .32, .52), m), mesh(cyl(.326, .326, .34, 14), food(0x9b3a24)), mesh(cyl(.33, .33, .06), paper(0xe2c36a), [0, .02, 0]), mesh(torus(.31, .025), m, [0, .26, 0], [Math.PI / 2, 0, 0]), mesh(torus(.31, .025), m, [0, -.26, 0], [Math.PI / 2, 0, 0])); }\n","{\n \"families\": {\n \"drink_can\": { \"style\": \"pull_tab\" },\n \"food_tin\": { \"style\": \"cut_lid\" }\n },\n \"models\": {\n \"empty_can\": { \"style\": \"none\" },\n \"canned_beans\": { \"food\": \"#7a2e1c\" },\n \"canned_corn_and_peas\": { \"food\": \"#c7b03c\" },\n \"canned_sausages\": { \"food\": \"#c98d5c\" },\n \"canned_sardines\": { \"style\": \"peel_lid\", \"food\": \"#8e979c\" },\n \"condensed_milk\": { \"food\": \"#e3cf9c\" },\n \"energy_drink\": { \"style\": \"pull_tab\" },\n \"honey_jar\": { \"style\": \"screw_cap\", \"food\": \"#d99a1c\" },\n \"home_preserves\": { \"style\": \"screw_cap\", \"food\": \"#8e1f3a\" },\n \"cooking_oil\": { \"style\": \"screw_cap\", \"food\": \"#e3b830\" },\n \"water_bottle\": { \"style\": \"screw_cap\" },\n \"water_jug_5l\": { \"style\": \"screw_cap\" },\n \"dirty_water\": { \"style\": \"screw_cap\" },\n \"sports_drink\": { \"style\": \"screw_cap\" },\n \"coconut_water\": { \"style\": \"screw_cap\" },\n \"cachaca\": { \"style\": \"screw_cap\" },\n \"communion_wine\": { \"style\": \"screw_cap\" }\n }\n}\n","import type * as THREE_NS from 'three'\n\nimport data from './data/opening.json'\nimport { itemFamily } from './destruction'\n\n/**\n * How a sealed model looks once open: `cut_lid` (a tin opened with a can opener: the lid cut along the rim and bent up on a hinge, the food showing),\n * `peel_lid` (a flat tin with a ring pull: the lid rolled back along its length), `pull_tab` (a drink can: the scored mouth pushed in under the tab) and `screw_cap`\n * (a jar or a bottle: the meshes its model marks `userData.itemLid` taken off, the mouth under them showing).\n */\nexport type ItemOpeningStyle = 'cut_lid' | 'peel_lid' | 'pull_tab' | 'screw_cap'\n\nexport interface ItemOpening {\n readonly style: ItemOpeningStyle\n /** Colour of what shows inside (`#rrggbb`); a dark inside when the data gives none. */\n readonly food?: string\n}\n\ntype OpeningRow = { readonly style?: ItemOpeningStyle | 'none'; readonly food?: string }\nconst FAMILIES = data.families as Readonly<Record<string, OpeningRow>>\nconst MODELS = data.models as Readonly<Record<string, OpeningRow>>\n\n/** The opened look of a model (`data/opening.json`: its family's style, the model's own entry over it), or undefined for a model that does not open. */\nexport const itemOpening = (modelId: string): ItemOpening | undefined => {\n const family = itemFamily(modelId)\n const row = { ...(family === undefined ? {} : FAMILIES[family]), ...MODELS[modelId] }\n if (row.style === undefined || row.style === 'none') return undefined\n return { style: row.style, ...(row.food === undefined ? {} : { food: row.food }) }\n}\n\n/** Name of the group `openItem` adds to the root. */\nexport const OPENING_NAME = 'opening'\n\nconst INSIDE = 0x14110e\nconst CUT_EDGE = 0xd9dde2\nconst LID = 0xb9bec4\n\nconst isLid = (o: THREE_NS.Object3D): boolean => o.userData.itemLid === true\n\n/** Marks the cap of a model (`userData.itemLid`), the part a `screw_cap` opening takes off; wraps the mesh where the model makes it, so nothing is reordered. */\nexport const asLid = <TMesh extends THREE_NS.Object3D>(mesh: TMesh): TMesh => {\n mesh.userData.itemLid = true\n return mesh\n}\n\n/** Box of the drawn meshes in the root's own space (its units, whatever its pose), decals and debris left out; `only` keeps just the meshes it accepts. */\nconst localBox = (T: typeof THREE_NS, root: THREE_NS.Object3D, only?: (o: THREE_NS.Object3D) => boolean): THREE_NS.Box3 => {\n root.updateMatrixWorld(true)\n const toRoot = new T.Matrix4().copy(root.matrixWorld).invert()\n const box = new T.Box3()\n const part = new T.Box3()\n const m = new T.Matrix4()\n root.traverse((o) => {\n const mesh = o as THREE_NS.Mesh\n if (!mesh.isMesh || mesh.userData.destructionDebris || mesh.name === OPENING_NAME || mesh.parent?.name === OPENING_NAME) return\n if (only && !only(mesh)) return\n if (!mesh.geometry.boundingBox) mesh.geometry.computeBoundingBox()\n part.copy(mesh.geometry.boundingBox!).applyMatrix4(m.multiplyMatrices(toRoot, mesh.matrixWorld))\n box.union(part)\n })\n return box\n}\n\n/**\n * Draws the model `modelId` opened on the root `buildItem` returned: a child group named `opening` (marked as decals, `userData.destructionDebris`, so a\n * shot and the liquid ignore it). Measured on the drawn model, so it fits any scale. Once: a second call does nothing. False for a model that does not open.\n */\nexport function openItem(T: typeof THREE_NS, root: THREE_NS.Object3D, modelId: string): boolean {\n const look = itemOpening(modelId)\n if (!look) return false\n if (root.userData.itemOpened) return true\n const box = look.style === 'screw_cap' ? localBox(T, root, isLid) : localBox(T, root)\n if (box.isEmpty()) return false\n const size = box.getSize(new T.Vector3())\n const centre = box.getCenter(new T.Vector3())\n const top = look.style === 'screw_cap' ? box.min.y : box.max.y\n const lift = size.y * 0.003\n const sheet = Math.max(size.y * 0.006, 1e-4)\n const group = new T.Group()\n group.name = OPENING_NAME\n group.position.set(centre.x, top, centre.z)\n const material = (color: number | string, metal = 0): THREE_NS.MeshStandardMaterial =>\n new T.MeshStandardMaterial({ color, metalness: metal, roughness: metal ? 0.45 : 0.85, polygonOffset: true, polygonOffsetFactor: -2, polygonOffsetUnits: -2 })\n const add = (geometry: THREE_NS.BufferGeometry, mat: THREE_NS.Material, y: number, parent: THREE_NS.Object3D = group): THREE_NS.Mesh => {\n const mesh = new T.Mesh(geometry, mat)\n mesh.position.y = y\n mesh.renderOrder = 2\n mesh.userData.destructionDebris = true\n mesh.userData.itemOpening = true\n parent.add(mesh)\n return mesh\n }\n const flat = (geometry: THREE_NS.BufferGeometry): THREE_NS.BufferGeometry => geometry.rotateX(-Math.PI / 2)\n const food = look.food ?? INSIDE\n\n if (look.style === 'screw_cap') {\n // the cap is off (in the hand or the pocket): the open mouth where it sat, and what is inside a little below the rim\n const r = Math.min(size.x, size.z) / 2\n root.traverse((o) => isLid(o) && (o.visible = false))\n add(flat(new T.CircleGeometry(r * 0.85, 24)), material(INSIDE), lift)\n if (look.food !== undefined) add(flat(new T.CircleGeometry(r * 0.7, 24)), material(look.food), lift * 2).userData.itemFood = true\n } else if (look.style === 'pull_tab') {\n // the scored mouth in front of the rivet, pushed in under the tab: a dark opening about a fifth of the lid wide\n const r = Math.min(size.x, size.z) / 2\n const mouth = add(flat(new T.CircleGeometry(r * 0.2, 24)), material(INSIDE), lift)\n mouth.scale.set(1.15, 1, 0.85)\n mouth.position.z = r * 0.52\n } else if (look.style === 'cut_lid') {\n // the opener cuts just inside the rim: a bright cut edge, the dark of the inner wall, the food a little below, and the lid bent up on the last centimetre left uncut\n const r = Math.min(size.x, size.z) / 2\n add(flat(new T.CircleGeometry(r * 0.88, 40)), material(INSIDE), lift)\n add(flat(new T.CircleGeometry(r * 0.76, 40)), material(food), lift * 2).userData.itemFood = true\n add(flat(new T.RingGeometry(r * 0.86, r * 0.9, 40)), material(CUT_EDGE, 0.9), lift * 3)\n const hinge = new T.Group()\n hinge.position.set(0, lift, -r * 0.86)\n hinge.rotation.x = -1.95\n group.add(hinge)\n const lid = add(new T.CylinderGeometry(r * 0.86, r * 0.86, sheet, 40), material(LID, 0.4), 0, hinge)\n lid.position.z = r * 0.86\n } else {\n // a flat tin: the lid rolled back from the ring end along the length, the food in the tray\n const long = size.x >= size.z ? 'x' : 'z'\n const length = Math.max(size.x, size.z)\n const width = Math.min(size.x, size.z)\n const plane = (a: number, b: number): THREE_NS.BufferGeometry => flat(long === 'x' ? new T.PlaneGeometry(a, b) : new T.PlaneGeometry(b, a))\n add(plane(length * 0.92, width * 0.86), material(INSIDE), lift)\n add(plane(length * 0.84, width * 0.76), material(food), lift * 2).userData.itemFood = true\n const hinge = new T.Group()\n const end = length * 0.46\n if (long === 'x') {\n hinge.position.set(end, lift, 0)\n hinge.rotation.z = -1.7\n } else {\n hinge.position.set(0, lift, end)\n hinge.rotation.x = 1.7\n }\n group.add(hinge)\n const lid = add(long === 'x' ? new T.BoxGeometry(length * 0.9, sheet, width * 0.84) : new T.BoxGeometry(width * 0.84, sheet, length * 0.9), material(LID, 0.4), 0, hinge)\n if (long === 'x') lid.position.x = -length * 0.45\n else lid.position.z = -length * 0.45\n }\n root.add(group)\n root.userData.itemOpened = true\n return true\n}\n\n/** How high (in cap heights) a screw cap is lifted when it is fully off its thread. */\nconst CAP_OFF = 1.6\n\n/**\n * Turns the cap of a `screw_cap` model `turned` radians round its axis and lifts it `lift` (0..1) of the way off its thread, from where the model drew it. Before\n * `openItem`, which takes it off. False for a model that does not open with a screw cap.\n */\nexport function turnItem(root: THREE_NS.Object3D, modelId: string, state: { readonly turned: number; readonly lift: number }): boolean {\n if (itemOpening(modelId)?.style !== 'screw_cap') return false\n root.traverse((o) => {\n if (!isLid(o)) return\n const mesh = o as THREE_NS.Mesh\n const base = (mesh.userData.lidBase ??= { y: mesh.position.y, turn: mesh.rotation.y }) as { y: number; turn: number }\n if (!mesh.geometry.boundingBox) mesh.geometry.computeBoundingBox()\n const height = (mesh.geometry.boundingBox!.max.y - mesh.geometry.boundingBox!.min.y) * mesh.scale.y\n mesh.rotation.y = base.turn + state.turned\n mesh.position.y = base.y + Math.min(1, Math.max(0, state.lift)) * height * CAP_OFF\n })\n return true\n}\n\n/** Shows how much is left in an opened item: the food inside the rim shrinks with `share` (0..1 of what it held) and is gone when it is eaten up. */\nexport function setOpeningContents(root: THREE_NS.Object3D, share: number): void {\n const opening = root.getObjectByName(OPENING_NAME)\n if (!opening) return\n const left = Math.max(0, Math.min(1, share))\n opening.traverse((o) => {\n if (!o.userData.itemFood) return\n o.visible = left > 0.02\n // what is left lies in the middle of the bottom: a smaller patch, never less than a third of the tin\n const k = 0.35 + 0.65 * left\n o.scale.set(k, 1, k)\n })\n}\n","import { asLid } from '../opening'\n\nimport type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"agua_500\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L146), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `water_bottle`.\n */\nexport const waterBottle: ItemModelBuilder = ({ mesh, cyl, lathe, G, plastic, paper, glass }) => G(mesh(lathe([[0, -.6], [.2, -.6], [.22, -.5], [.22, .2], [.19, .32], [.09, .45], [.08, .55], [0, .55]]), glass(0x8fc3dc, .55)), asLid(mesh(cyl(.085, .085, .1, 12), plastic(0x2c5d8a), [0, .6, 0])), mesh(cyl(.225, .225, .22, 16), paper(0xe9ecef), [0, -.15, 0]), mesh(cyl(.226, .226, .05, 16), plastic(0x3a78a8), [0, -.12, 0]))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"arroz\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L147), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `rice`.\n */\nexport const rice: ItemModelBuilder = ({ mesh, bx, G, paper, food }) => G(mesh(bx(.7, .95, .28), paper(0xe6dcc0)), mesh(bx(.72, .12, .1), paper(0xd5c9a8), [0, .52, 0]), mesh(bx(.5, .3, .02), food(0xb5521f), [0, .05, .15]), mesh(bx(.3, .1, .02), paper(0x3f7a45), [0, -.25, .15]))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"racao_militar\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L148), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `military_ration`.\n */\nexport const militaryRation: ItemModelBuilder = ({ mesh, bx, G, plastic, paper }) => G(mesh(bx(.75, 1, .22), plastic(0x5a6146)), mesh(bx(.77, .1, .23), plastic(0x474d37), [0, .48, 0]), mesh(bx(.5, .14, .01), paper(0x22251f), [0, .18, .115]), mesh(bx(.36, .06, .01), paper(0x22251f), [0, -.02, .115]))\n","import { asLid } from '../opening'\n\nimport type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"cachaca\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L149), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `cachaca`.\n */\nexport const cachaca: ItemModelBuilder = ({ mesh, cyl, lathe, G, wood, paper, food, glass }) => G(mesh(lathe([[0, -.6], [.25, -.6], [.27, -.52], [.27, .1], [.2, .25], [.09, .35], [.09, .58], [0, .58]]), glass(0xc28a2a, .78)), asLid(mesh(cyl(.08, .07, .14, 10), wood(0x8a6a44), [0, .64, 0])), mesh(cyl(.275, .275, .34, 16), paper(0xe9e1cc), [0, -.25, 0]), mesh(cyl(.276, .276, .06, 16), food(0x7a2f1f), [0, -.15, 0]))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"kit_ps\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L150), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `first_aid_kit`.\n */\nexport const firstAidKit: ItemModelBuilder = ({ mesh, bx, torus, G, plastic }) => { const r = plastic(0xb23a2c); return G(mesh(bx(1.05, .72, .38), plastic(0xe6e3d8)), mesh(bx(1.07, .06, .4), plastic(0xbdb8aa), [0, 0, 0]), mesh(bx(.36, .1, .02), r, [0, .1, .2]), mesh(bx(.1, .36, .02), r, [0, .1, .2]), mesh(torus(.16, .035, Math.PI), plastic(0x55534c), [0, .36, 0])); }\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"atadura\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L151), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `bandage`.\n */\nexport const bandage: ItemModelBuilder = ({ mesh, cyl, bx, G, cloth }) => { const c = cloth(0xece5d2); return G(mesh(cyl(.34, .34, .38, 18), c, [0, 0, 0], [Math.PI / 2, 0, 0]), mesh(cyl(.1, .1, .4, 12), cloth(0x8a8577), [0, 0, 0], [Math.PI / 2, 0, 0]), mesh(bx(.36, .02, .36), c, [.2, -.33, .05], [0, 0, -.25]), mesh(bx(.3, .02, .36), c, [.5, -.4, .05], [0, 0, -.05])); }\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"amoxicilina\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L152), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `amoxicillin`.\n */\nexport const amoxicillin: ItemModelBuilder = ({ T, mesh, bx, G, metal, plastic, paper }) => G(mesh(bx(.8, .42, .24), paper(0xf0eee6)), mesh(bx(.81, .1, .25), plastic(0x4e7287), [0, .1, 0]), mesh(bx(.6, .04, .3), metal(0xb9bdc0), [.15, -.24, .25], [0, .3, 0]), ...[0, 1, 2, 3].map(k => mesh(new T.SphereGeometry(.05, 10, 8), plastic(0xd9a441), [-.05 + k * .14, -.21, .3], [0, 0, 0], [1, .6, 1])))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"pe_cabra\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L153), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `crowbar`.\n */\nexport const crowbar: ItemModelBuilder = ({ T, mesh, cyl, G, metal }) => { const c = new T.CatmullRomCurve3([[0, -.8, 0], [0, .45, 0], [.02, .62, 0], [.12, .72, 0], [.26, .7, 0], [.32, .6, 0]].map(p => new T.Vector3(...p))); return G(mesh(new T.TubeGeometry(c, 30, .055, 8), metal(0x9b2a1f)), mesh(cyl(.02, .055, .14, 8), metal(0x3a3c3e), [0, -.86, 0])); }\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"martelo\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L154), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `hammer`.\n */\nexport const hammer: ItemModelBuilder = ({ T, mesh, cyl, bx, G, metal, wood, plastic }) => G(mesh(cyl(.05, .065, 1.1, 10), wood(0x8a643c), [0, -.15, 0]), mesh(cyl(.07, .07, .3, 10), plastic(0x22251f), [0, -.6, 0]), mesh(bx(.28, .15, .15), metal(0x55595d), [.05, .45, 0]), mesh(cyl(.08, .08, .1, 12), metal(0x55595d), [.22, .45, 0], [0, 0, Math.PI / 2]), mesh(new T.ConeGeometry(.06, .3, 6), metal(0x55595d), [-.22, .5, .035], [0, 0, 1.9]), mesh(new T.ConeGeometry(.06, .3, 6), metal(0x55595d), [-.22, .5, -.035], [0, 0, 1.9]))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"facao\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L155), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `machete`.\n */\nexport const machete: ItemModelBuilder = ({ mesh, cyl, bx, extrude, G, metal, wood }) => G(mesh(extrude([[0, 0], [1.25, .05], [1.4, .14], [1.3, .26], [0, .2]], .03), metal(0xa9adb0), [-.55, 0, 0]), mesh(bx(.45, .2, .1), wood(0x3b2a20), [-.78, .1, .015]), ...[-.9, -.68].map(x => mesh(cyl(.025, .025, .12, 8), metal(0xb8913a), [x, .1, .015], [Math.PI / 2, 0, 0])))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"machado\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L156), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `axe`.\n */\nexport const axe: ItemModelBuilder = ({ M, mesh, cyl, bx, extrude, G, metal, wood }) => G(mesh(cyl(.05, .06, 1.5, 10), wood(0x9a7448), [0, -.1, 0]), mesh(extrude([[0, 0], [.42, -.16], [.5, .05], [.48, .3], [.4, .42], [0, .22]], .07), metal(0x6c7075), [.02, .38, -.05]), mesh(bx(.12, .26, .14), metal(0x4a4d50), [0, .5, 0]), mesh(bx(.1, .2, .08), M(0x9b2a1f, \"plastic\"), [0, .55, 0]))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"taco_pregos\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L157), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `nail_bat`.\n */\nexport const nailBat: ItemModelBuilder = ({ mesh, cyl, lathe, G, metal, wood }) => { const g = G(mesh(lathe([[0, -.85], [.05, -.85], [.05, -.8], [.035, -.75], [.04, -.2], [.09, .3], [.11, .7], [.09, .82], [0, .84]], 14), wood(0xb08a5a))); const nm = metal(0x7d8186); for (let k = 0; k < 9; k++) { const a = k * 2.4, y = .25 + (k % 5) * .12; const n = mesh(cyl(.012, .012, .2, 6), nm, [Math.cos(a) * .12, y, Math.sin(a) * .12], [0, 0, 0]); n.lookAt(Math.cos(a) * 2, y, Math.sin(a) * 2); n.rotateX(Math.PI / 2); g.add(n); } return g; }\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"mochila_trilha\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L158), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `hiking_backpack_40l`.\n */\nexport const hikingBackpack40L: ItemModelBuilder = ({ T, mesh, bx, G, cloth, plastic }) => { const c = cloth(0x4f6b3a), d = cloth(0x36472a); return G(mesh(bx(.78, .9, .42), c), mesh(new T.SphereGeometry(.4, 14, 8, 0, Math.PI * 2, 0, Math.PI / 2), c, [0, .44, 0], [0, 0, 0], [.98, .45, .53]), mesh(bx(.56, .4, .16), d, [0, -.15, .27]), mesh(bx(.8, .12, .46), d, [0, .2, 0]), mesh(bx(.06, .9, .06), cloth(0x22251f), [-.22, 0, -.24]), mesh(bx(.06, .9, .06), cloth(0x22251f), [.22, 0, -.24]), mesh(bx(.1, .08, .04), plastic(0xd9a441), [0, .2, .24])); }\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"lanterna\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L159), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `flashlight`.\n */\nexport const flashlight: ItemModelBuilder = ({ M, mesh, cyl, bx, torus, G, metal, plastic }) => G(mesh(cyl(.11, .11, .8, 14), metal(0x2a2c2e), [0, -.15, 0]), mesh(cyl(.19, .12, .28, 16), metal(0x3a3d40), [0, .37, 0]), mesh(cyl(.17, .17, .02, 16), M(0xfff1c0, \"glass\", { emissive: 0xffe08a, emissiveIntensity: .9 }), [0, .52, 0]), mesh(bx(.06, .1, .05), plastic(0xb5521f), [0, .05, .11]), ...[-.4, -.3, -.2].map(y => mesh(torus(.112, .012), plastic(0x1b1c1d), [0, y, 0], [Math.PI / 2, 0, 0])))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"radio_portatil\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L160), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `portable_radio`.\n */\nexport const portableRadio: ItemModelBuilder = ({ M, mesh, cyl, bx, torus, G, metal, plastic }) => { const g = G(mesh(bx(1.05, .62, .3), plastic(0x3a3d35)), mesh(cyl(.2, .2, .02, 18), plastic(0x1e1f1b), [-.24, -.04, .16], [Math.PI / 2, 0, 0]), mesh(bx(.36, .14, .02), M(0xd9a441, \"glass\", { emissive: 0x6a4a10, emissiveIntensity: .6 }), [.26, .1, .16]), mesh(cyl(.06, .06, .06, 12), plastic(0x8d8a80), [.18, -.15, .17], [Math.PI / 2, 0, 0]), mesh(cyl(.06, .06, .06, 12), plastic(0x8d8a80), [.36, -.15, .17], [Math.PI / 2, 0, 0]), mesh(torus(.24, .03, Math.PI), plastic(0x22251f), [0, .3, 0])); const a = mesh(cyl(.012, .02, .95, 6), metal(0xb9bdc0), [.4, .72, 0], [0, 0, -.35]); g.add(a); return g; }\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"chave_casa\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L161), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `house_key`.\n */\nexport const houseKey: ItemModelBuilder = ({ mesh, bx, torus, extrude, G, metal, plastic }) => { const b = metal(0xb8913a); return G(mesh(torus(.22, .04), metal(0x9a9da0), [-.55, .1, 0]), mesh(extrude([[0, -.2], [.25, -.22], [.3, -.1], [.3, .1], [.25, .22], [0, .2]], .05), b, [-.38, .02, -.025]), mesh(extrude([[0, 0], [.75, 0], [.75, -.08], [.66, -.08], [.66, -.14], [.56, -.08], [.46, -.14], [.4, -.08], [0, -.08]], .035), b, [-.1, .06, -.017]), mesh(bx(.24, .34, .03), plastic(0xb5521f), [-.72, -.28, 0], [0, 0, .25])); }\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"diario\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L162), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `survivor_diary`.\n */\nexport const survivorDiary: ItemModelBuilder = ({ mesh, bx, G, cloth, paper }) => G(mesh(bx(.78, 1.02, .05), paper(0x6b3f2a), [0, 0, .1]), mesh(bx(.78, 1.02, .05), paper(0x6b3f2a), [0, 0, -.1]), mesh(bx(.74, .98, .16), paper(0xe9e1cc), [.01, 0, 0]), mesh(bx(.06, 1.02, .25), paper(0x5a3322), [-.38, 0, 0]), mesh(bx(.03, 1.04, .27), cloth(0x22251f), [.25, 0, 0]), mesh(bx(.18, .3, .002), paper(0xd5c9a8), [.05, .2, .126], [0, 0, .08]))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"capacete_moto\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L163), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `motorcycle_helmet`.\n */\nexport const motorcycleHelmet: ItemModelBuilder = ({ T, M, mesh, cyl, bx, G, plastic }) => G(mesh(new T.SphereGeometry(.55, 18, 12), plastic(0x2b2f3a), [0, 0, 0], [0, 0, 0], [1, .95, 1.08]), mesh(new T.SphereGeometry(.56, 18, 10, -0.9, 1.8, 1.05, .75), M(0x14171c, \"glass\", { roughness: .15, metalness: .4 }), [0, .02, .02], [0, 0, 0], [1, .95, 1.08]), mesh(bx(.2, .12, .02), plastic(0xe0773f), [.42, .2, .22], [0, .95, 0]), mesh(cyl(.5, .55, .12, 18), plastic(0x1d2028), [0, -.5, 0]))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"botijao\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L164), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `lpg_cylinder_13kg`.\n */\nexport const lpgCylinder13Kg: ItemModelBuilder = ({ mesh, cyl, bx, lathe, torus, G, metal }) => G(mesh(lathe([[0, -.6], [.38, -.6], [.42, -.55], [.45, -.3], [.45, .15], [.4, .32], [.28, .42], [.12, .46], [0, .46]], 18), metal(0x355f86)), mesh(cyl(.47, .47, .1, 18), metal(0x29486a), [0, -.62, 0]), mesh(torus(.24, .035), metal(0x29486a), [0, .58, 0], [Math.PI / 2, 0, 0]), mesh(cyl(.07, .07, .14, 10), metal(0xb8913a), [0, .5, 0]), mesh(bx(.04, .2, .04), metal(0x29486a), [.22, .5, 0]), mesh(bx(.04, .2, .04), metal(0x29486a), [-.22, .5, 0]))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"galao\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L165), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `fuel_jerrycan`.\n */\nexport const fuelJerrycan: ItemModelBuilder = ({ mesh, cyl, bx, G, plastic }) => G(mesh(bx(.85, 1, .42), plastic(0xa3322a)), mesh(bx(.6, .1, .3), plastic(0x7e2620), [0, .45, 0]), mesh(bx(.36, .2, .1), plastic(0xa3322a), [-.12, .62, 0]), mesh(cyl(.05, .07, .35, 10), plastic(0xd9a441), [.3, .66, 0], [0, 0, -.6]), mesh(bx(.6, .5, .02), plastic(0x8a2a22), [0, -.1, .22]))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"walkie\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L166), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `walkie_talkies`.\n */\nexport const walkieTalkies: ItemModelBuilder = ({ M, mesh, cyl, bx, G, plastic }) => G(mesh(bx(.42, .9, .2), plastic(0x2a2d27)), mesh(bx(.34, .3, .02), plastic(0x161814), [0, -.12, .11]), mesh(bx(.24, .12, .02), M(0x9fbf8a, \"glass\", { emissive: 0x2f4a22, emissiveIntensity: .7 }), [0, .22, .11]), mesh(cyl(.035, .045, .6, 8), plastic(0x1b1c1a), [.12, .72, 0]), mesh(cyl(.04, .04, .08, 10), plastic(0xb5521f), [-.12, .48, 0]), mesh(bx(.05, .2, .1), plastic(0x3a3d35), [-.23, .05, 0]))\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"pilha_aa\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L167), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `batteries`.\n */\nexport const batteries: ItemModelBuilder = ({ mesh, cyl, G, metal }) => { const g = G(); [-.2, .2].forEach((x, k) => g.add(mesh(cyl(.17, .17, .95, 16), metal(k ? 0xb5521f : 0x2a2c2e), [x, 0, 0]), mesh(cyl(.172, .172, .3, 16), metal(0xc9a227), [x, .33, 0]), mesh(cyl(.06, .06, .06, 10), metal(0xb9bdc0), [x, .5, 0]))); return g; }\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * `MODELS[\"tabua\"]` of the Itens do Vale Cinzento showcase (`armas-itens__itens-vale-cinzento.js` L168), ported as it is: same units, same parts, same order, same materials by tag.\n * It draws in the units of the page; `data/models.json` gives the scale to metres of the item `wooden_plank`.\n */\nexport const woodenPlank: ItemModelBuilder = ({ mesh, cyl, bx, G, metal, wood }) => { const g = G(); [0xa88459, 0x8e6c45, 0xb49268].forEach((c, k) => g.add(mesh(bx(1.5, .07, .26), wood(c), [0, -.15 + k * .12, (k - 1) * .05], [0, (k - 1) * .12, 0]))); const nm = metal(0x7d8186); [-.5, -.3, .4].forEach((x, k) => g.add(mesh(cyl(.012, .012, .18, 6), nm, [x, .18 + k * .01, .2], [0, 0, (k - 1) * .3]))); return g; }\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `sugar`.\n */\nexport const sugar: ItemModelBuilder = ({ mesh, bx, G, paper }) => G(\n mesh(bx(1.0, 1.7, 0.58), paper(0xf4f1ea), [0, -0.15, 0]),\n mesh(bx(1.0, 0.3, 0.34), paper(0xe4dfd0), [0, 0.85, 0]),\n mesh(bx(1.0, 0.05, 0.12), paper(0xc9c3b0), [0, 0.975, 0]),\n mesh(bx(0.7, 0.8, 0.02), paper(0x3f6f94), [0, -0.1, 0.3]),\n mesh(bx(0.5, 0.14, 0.022), paper(0xf4f1ea), [0, 0.1, 0.3]),\n mesh(bx(0.5, 0.14, 0.022), paper(0xf4f1ea), [0, -0.3, 0.3]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `chocolate_bar`.\n */\nexport const chocolateBar: ItemModelBuilder = ({ mesh, bx, G, paper, food }) => {\n const chocolate = food(0x4a2a1a)\n const pieces = [-0.5, 0, 0.5].flatMap((x) => [0.18, -0.07].map((y) => mesh(bx(0.46, 0.22, 0.04), chocolate, [x, y, 0.03])))\n return G(\n mesh(bx(1.5, 0.7, 0.06), paper(0xb9bcc0), [0, 0, -0.02]),\n ...pieces,\n mesh(bx(1.5, 0.2, 0.1), paper(0x9b2f2f), [0, -0.25, 0]),\n mesh(bx(0.9, 0.05, 0.102), paper(0xe8d9a8), [0, -0.25, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `potatoes`.\n */\nexport const potatoes: ItemModelBuilder = ({ T, mesh, bx, G, food }) => {\n const skin = food(0xb08a55)\n const ball = new T.SphereGeometry(0.5, 8, 5)\n const eye = food(0x6b4f2a)\n return G(\n mesh(ball, skin, [-0.5, 0, -0.3], [0, 0, 0], [1.0, 0.9, 0.8]),\n mesh(ball, food(0xa57e4a), [0.5, -0.03, -0.3], [0, 0, 0], [1.0, 0.8, 0.8]),\n mesh(ball, food(0xbf9a63), [0, -0.03, 0.3], [0, 0, 0], [1.0, 0.8, 0.8]),\n mesh(bx(0.08, 0.05, 0.08), eye, [-0.6, 0.4, -0.3]),\n mesh(bx(0.08, 0.05, 0.08), eye, [0.4, 0.34, -0.3]),\n mesh(bx(0.08, 0.05, 0.08), eye, [0.1, 0.34, 0.3]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `biscuits`.\n */\nexport const biscuits: ItemModelBuilder = ({ mesh, bx, cyl, G, paper, food }) => {\n const biscuit = food(0xc98f4e)\n const cream = food(0xe6d2a2)\n return G(\n mesh(bx(2.0, 0.24, 1.0), paper(0x2f5d8c), [0, -0.13, 0]),\n mesh(bx(0.1, 0.3, 1.0), paper(0x244a70), [-0.95, -0.1, 0]),\n mesh(bx(0.1, 0.3, 1.0), paper(0x244a70), [0.95, -0.1, 0]),\n mesh(cyl(0.38, 0.38, 0.1, 12), biscuit, [-0.45, 0.04, 0]),\n mesh(cyl(0.38, 0.38, 0.05, 12), cream, [-0.45, 0.11, 0]),\n mesh(cyl(0.38, 0.38, 0.11, 12), biscuit, [-0.45, 0.195, 0]),\n mesh(cyl(0.38, 0.38, 0.1, 12), biscuit, [0.45, 0.04, 0]),\n mesh(cyl(0.38, 0.38, 0.05, 12), cream, [0.45, 0.11, 0]),\n mesh(cyl(0.38, 0.38, 0.11, 12), biscuit, [0.45, 0.195, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `coffee`.\n */\nexport const coffee: ItemModelBuilder = ({ T, mesh, bx, G, paper, food }) => G(\n mesh(bx(0.8, 1.3, 0.58), paper(0x5a3a22), [0, -0.1, 0]),\n mesh(bx(0.8, 0.2, 0.12), paper(0x3f2a18), [0, 0.65, 0]),\n mesh(bx(0.6, 0.55, 0.02), paper(0xe8d7b0), [0, -0.05, 0.3]),\n mesh(bx(0.6, 0.12, 0.022), paper(0x8a5a2e), [0, -0.4, 0.3]),\n mesh(new T.SphereGeometry(0.5, 8, 4), food(0x3b2414), [0, 0.0, 0.29], [0, 0, 0.5], [0.3, 0.42, 0.06]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `raw_beef`.\n */\nexport const rawBeef: ItemModelBuilder = ({ T, mesh, bx, G, plastic, food }) => {\n const ball = new T.SphereGeometry(0.5, 8, 6)\n return G(\n mesh(bx(2.0, 0.1, 1.5), plastic(0xf1f0eb), [0, -0.2, 0]),\n mesh(bx(2.0, 0.16, 0.08), plastic(0xf1f0eb), [0, -0.13, 0.71]),\n mesh(bx(2.0, 0.16, 0.08), plastic(0xf1f0eb), [0, -0.13, -0.71]),\n mesh(bx(0.08, 0.16, 1.34), plastic(0xf1f0eb), [0.96, -0.13, 0]),\n mesh(bx(0.08, 0.16, 1.34), plastic(0xf1f0eb), [-0.96, -0.13, 0]),\n mesh(ball, food(0xa3262a), [0, 0, 0], [0, 0.2, 0], [1.6, 0.5, 1.05]),\n mesh(ball, food(0xe9d6c1), [-0.35, 0.08, 0.3], [0, 0.4, 0], [0.7, 0.3, 0.3]),\n mesh(ball, food(0x7d1b20), [0.4, 0.09, -0.1], [0, 0.2, 0], [0.6, 0.3, 0.5]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `game_meat`.\n */\nexport const gameMeat: ItemModelBuilder = ({ T, mesh, cyl, G, food }) => {\n const ball = new T.SphereGeometry(0.5, 8, 6)\n const knob = new T.SphereGeometry(0.5, 6, 4)\n const bone = food(0xe6dcc3)\n return G(\n mesh(ball, food(0x7a2a24), [-0.4, 0, 0], [0, 0, 0], [2.2, 0.8, 2.0]),\n mesh(ball, food(0xc9a37a), [-0.5, 0.1, -0.3], [0, 0, 0], [1.4, 0.6, 1.0]),\n mesh(ball, food(0x5c1d1a), [-0.2, -0.05, 0.5], [0, 0, 0], [1.0, 0.6, 0.6]),\n mesh(cyl(0.11, 0.14, 0.9, 8), bone, [1.05, 0, 0], [0, 0, Math.PI / 2]),\n mesh(knob, bone, [1.35, 0.1, 0], [0, 0, 0], [0.3, 0.4, 0.4]),\n mesh(knob, bone, [1.35, -0.1, 0], [0, 0, 0], [0.3, 0.4, 0.4]),\n mesh(cyl(0.25, 0.25, 0.06, 8), food(0x3a2a22), [0.62, 0, 0], [0, 0, Math.PI / 2]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `jerked_beef`.\n */\nexport const jerkedBeef: ItemModelBuilder = ({ mesh, bx, cyl, G, food, wood }) => {\n const dark = food(0x5b2e22)\n const mid = food(0x70392a)\n const fat = food(0xb98a6a)\n return G(\n mesh(bx(2.5, 0.08, 0.4), dark, [0, -0.085, -0.55]),\n mesh(bx(2.2, 0.08, 0.4), mid, [0.1, 0.08, -0.18]),\n mesh(bx(2.4, 0.08, 0.4), dark, [-0.05, -0.085, 0.2]),\n mesh(bx(2.1, 0.08, 0.4), mid, [0.15, 0.085, 0.55]),\n mesh(bx(1.1, 0.012, 0.06), fat, [0.2, 0.12, -0.18]),\n mesh(bx(0.9, 0.012, 0.06), fat, [-0.3, 0.12, 0.55]),\n mesh(cyl(0.04, 0.04, 1.5, 6), wood(0x9b7a4a), [-0.95, 0.085, 0], [Math.PI / 2, 0, 0]),\n )\n}\n","import { asLid } from '../opening'\n\nimport type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `home_preserves`.\n */\nexport const homePreserves: ItemModelBuilder = ({ mesh, cyl, G, glass, metal, paper, food, cloth }) => G(\n mesh(cyl(0.445, 0.445, 0.98, 12), glass(0xcfe6ee, 0.5), [0, -0.16, 0]),\n mesh(cyl(0.41, 0.41, 0.86, 12), food(0x8e1f3a), [0, -0.2, 0]),\n mesh(cyl(0.34, 0.445, 0.12, 12), glass(0xcfe6ee, 0.5), [0, 0.39, 0]),\n mesh(cyl(0.34, 0.34, 0.05, 12), glass(0xcfe6ee, 0.5), [0, 0.475, 0]),\n asLid(mesh(cyl(0.38, 0.38, 0.15, 12), metal(0xb99a3c), [0, 0.575, 0])),\n mesh(cyl(0.45, 0.45, 0.4, 12), paper(0xe9dfc4), [0, -0.2, 0]),\n mesh(cyl(0.452, 0.452, 0.08, 12), cloth(0x9b3a3a), [0, -0.2, 0]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `eggs`.\n */\nexport const eggs: ItemModelBuilder = ({ T, mesh, bx, G, paper, food }) => {\n const egg = new T.SphereGeometry(0.5, 8, 4)\n const carton = paper(0xb8a98f)\n const eggs = [-0.8, 0, 0.8].flatMap((x) => [-0.25, 0.25].map((z, row) => mesh(egg, food(row ? 0xd9bd8d : 0xe6d3b0), [x, 0.05, z], [0, 0, 0], [0.5, 0.6, 0.5])))\n return G(\n mesh(bx(2.5, 0.2, 1.0), carton, [0, -0.25, 0]),\n ...eggs,\n mesh(bx(0.05, 0.18, 1.0), carton, [-0.4, -0.06, 0]),\n mesh(bx(0.05, 0.18, 1.0), carton, [0.4, -0.06, 0]),\n mesh(bx(2.5, 0.12, 0.04), carton, [0, -0.1, 0.48]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `cassava_flour`.\n */\nexport const cassavaFlour: ItemModelBuilder = ({ T, mesh, bx, G, paper, food }) => G(\n mesh(bx(1.5, 2.2, 0.58), paper(0xf1e9d2), [0, -0.15, 0]),\n mesh(bx(1.5, 0.3, 0.34), paper(0xdcd1b3), [0, 1.1, 0]),\n mesh(bx(1.5, 0.05, 0.12), paper(0xc4b890), [0, 1.225, 0]),\n mesh(bx(1.1, 1.0, 0.02), paper(0xd48a2a), [0, -0.1, 0.3]),\n mesh(bx(1.1, 0.16, 0.022), paper(0x5b7a3a), [0, -0.78, 0.3]),\n mesh(new T.SphereGeometry(0.5, 8, 4), food(0x7a5230), [0, 0.0, 0.29], [0, 0, 0.5], [0.8, 0.28, 0.04]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `beans`.\n */\nexport const beans: ItemModelBuilder = ({ T, mesh, bx, G, cloth, paper, food }) => {\n const bean = new T.SphereGeometry(0.5, 6, 4)\n const dark = food(0x4a2418)\n return G(\n mesh(bx(1.0, 1.7, 0.58), cloth(0x8a5a2e), [0, -0.15, 0]),\n mesh(bx(1.0, 0.3, 0.34), cloth(0x70461f), [0, 0.85, 0]),\n mesh(bx(1.0, 0.05, 0.12), cloth(0x5a3716), [0, 0.975, 0]),\n mesh(bx(0.7, 0.8, 0.02), paper(0xe8d7b0), [0, -0.1, 0.3]),\n mesh(bean, dark, [-0.1, 0.0, 0.29], [0, 0, 0.6], [0.22, 0.14, 0.04]),\n mesh(bean, dark, [0.12, -0.1, 0.29], [0, 0, -0.5], [0.22, 0.14, 0.04]),\n mesh(bean, dark, [-0.05, -0.25, 0.29], [0, 0, 0.2], [0.22, 0.14, 0.04]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `frozen_chicken`.\n */\nexport const frozenChicken: ItemModelBuilder = ({ T, mesh, bx, cyl, G, plastic, glass, food }) => {\n const ball = new T.SphereGeometry(0.5, 8, 5)\n const small = new T.SphereGeometry(0.5, 6, 4)\n const skin = food(0xe6c7a0)\n const leg = (z: number) => [\n mesh(cyl(0.1, 0.17, 0.7, 8), skin, [0.8, -0.02, z], [0, 0, -1.37]),\n mesh(small, food(0xefe0c8), [1.18, 0.02, z], [0, 0, 0], [0.22, 0.2, 0.22]),\n ]\n return G(\n mesh(bx(2.6, 1.0, 1.7), glass(0xcfe3ee, 0.3)),\n mesh(ball, skin, [-0.25, -0.05, 0], [0, 0, 0], [1.7, 0.7, 1.1]),\n mesh(small, food(0xd6a97f), [-0.1, 0.18, 0], [0, 0, 0], [1.0, 0.3, 0.7]),\n ...leg(0.45),\n ...leg(-0.45),\n mesh(small, skin, [-0.55, 0.05, 0.62], [0, 0, 0], [0.8, 0.3, 0.35]),\n mesh(small, skin, [-0.55, 0.05, -0.62], [0, 0, 0], [0.8, 0.3, 0.35]),\n mesh(bx(2.6, 0.14, 0.05), plastic(0x7fa7c4), [0, 0.43, 0.8]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `orange`.\n */\nexport const orange: ItemModelBuilder = ({ T, mesh, cyl, bx, G, food }) => G(\n mesh(new T.SphereGeometry(0.375, 12, 8), food(0xe8871e)),\n mesh(cyl(0.07, 0.07, 0.02, 8), food(0x4f7a2a), [0, 0.365, 0]),\n mesh(bx(0.16, 0.012, 0.07), food(0x4f7a2a), [0.1, 0.355, 0.02], [0, 0.5, 0.2]),\n mesh(cyl(0.03, 0.03, 0.02, 6), food(0xc06a12), [0, -0.365, 0]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `condensed_milk`.\n */\nexport const condensedMilk: ItemModelBuilder = ({ mesh, cyl, G, metal, paper }) => G(\n mesh(cyl(0.36, 0.36, 0.96, 12), metal(0xb8bcc2)),\n mesh(cyl(0.365, 0.365, 0.04, 12), metal(0x8d9096), [0, 0.48, 0]),\n mesh(cyl(0.365, 0.365, 0.04, 12), metal(0x8d9096), [0, -0.48, 0]),\n mesh(cyl(0.365, 0.365, 0.52, 12), paper(0xf1f1ec), [0, -0.02, 0]),\n mesh(cyl(0.367, 0.367, 0.16, 12), paper(0x2f6aa8), [0, 0.1, 0]),\n mesh(cyl(0.367, 0.367, 0.06, 12), paper(0x2f6aa8), [0, -0.2, 0]),\n mesh(cyl(0.12, 0.12, 0.008, 8), metal(0x8d9096), [0, 0.5, 0.0]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `pasta`.\n */\nexport const pasta: ItemModelBuilder = ({ mesh, bx, G, paper, glass, food }) => {\n const strand = food(0xe8cf86)\n return G(\n mesh(bx(1.0, 2.5, 0.38), paper(0xb23a2c)),\n mesh(bx(0.7, 1.7, 0.02), glass(0xf2f2ee, 0.35), [0, -0.1, 0.195]),\n ...[-0.24, -0.12, 0, 0.12, 0.24].map((x) => mesh(bx(0.05, 1.6, 0.03), strand, [x, -0.1, 0.18])),\n mesh(bx(1.0, 0.16, 0.4), paper(0xf1e3b8), [0, 1.0, 0]),\n mesh(bx(1.0, 0.16, 0.4), paper(0xf1e3b8), [0, -1.1, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `instant_noodles`.\n */\nexport const instantNoodles: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic, paper, food }) => {\n const wrap = plastic(0xd9742a)\n return G(\n mesh(bx(1.2, 1.3, 0.28), wrap),\n mesh(bx(1.2, 0.15, 0.1), plastic(0xb85a1a), [0, 0.725, 0]),\n mesh(bx(1.2, 0.15, 0.1), plastic(0xb85a1a), [0, -0.725, 0]),\n mesh(cyl(0.38, 0.38, 0.02, 12), paper(0xf3e2a8), [0, 0.05, 0.15], [Math.PI / 2, 0, 0]),\n mesh(cyl(0.3, 0.3, 0.012, 12), food(0xe6c866), [0, 0.1, 0.162], [Math.PI / 2, 0, 0]),\n mesh(bx(0.9, 0.16, 0.02), paper(0x8a2a1a), [0, -0.5, 0.15]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `cassava_root`.\n */\nexport const cassavaRoot: ItemModelBuilder = ({ mesh, cyl, G, food }) => {\n const skin = food(0x7a5230)\n return G(\n mesh(cyl(0.35, 0.3, 1.2, 8), skin, [-1.38, 0, 0], [0, 0, Math.PI / 2]),\n mesh(cyl(0.3, 0.2, 1.5, 8), food(0x6b4528), [-0.05, 0.02, 0], [0, 0, Math.PI / 2 + 0.05]),\n mesh(cyl(0.2, 0.05, 1.3, 8), skin, [1.35, 0.02, 0], [0, 0, Math.PI / 2 + 0.1]),\n mesh(cyl(0.34, 0.34, 0.04, 8), food(0xf1ead6), [-1.98, 0, 0], [0, 0, Math.PI / 2]),\n mesh(cyl(0.05, 0.05, 0.05, 6), food(0x4a3018), [-1.99, 0, 0], [0, 0, Math.PI / 2]),\n mesh(cyl(0.355, 0.355, 0.06, 8), food(0x5c3c20), [-0.95, 0, 0], [0, 0, Math.PI / 2]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `canned_corn_and_peas`.\n */\nexport const cannedCornAndPeas: ItemModelBuilder = ({ mesh, cyl, G, metal, paper }) => G(\n mesh(cyl(0.36, 0.36, 0.81, 12), metal(0xb8bcc2)),\n mesh(cyl(0.365, 0.365, 0.04, 12), metal(0x8d9096), [0, 0.405, 0]),\n mesh(cyl(0.365, 0.365, 0.04, 12), metal(0x8d9096), [0, -0.405, 0]),\n mesh(cyl(0.365, 0.365, 0.5, 12), paper(0x4f8a3a), [0, 0, 0]),\n mesh(cyl(0.367, 0.367, 0.14, 12), paper(0xe9c43a), [0, 0.09, 0]),\n mesh(cyl(0.12, 0.12, 0.01, 10), paper(0xf3e08a), [-0.13, 0.0, 0.36], [Math.PI / 2, 0, 0]),\n mesh(cyl(0.1, 0.1, 0.01, 10), paper(0x7ab648), [0.12, -0.08, 0.36], [Math.PI / 2, 0, 0]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `mortadella`.\n */\nexport const mortadella: ItemModelBuilder = ({ mesh, cyl, bx, G, food }) => {\n const pink = food(0xd98a8a)\n const fat = food(0xf1e4d4)\n const nut = food(0x7a9a4a)\n return G(\n mesh(cyl(0.25, 0.25, 1.2, 12), food(0xc27a74), [-0.15, 0, 0], [0, 0, Math.PI / 2], [1.2, 1, 1]),\n mesh(cyl(0.25, 0.25, 0.05, 12), pink, [0.48, 0, 0.0], [0, 0, Math.PI / 2], [1.2, 1, 1]),\n mesh(cyl(0.25, 0.25, 0.05, 12), pink, [0.62, 0.0, 0], [0, 0, Math.PI / 2], [1.2, 1, 1]),\n mesh(cyl(0.25, 0.25, 0.05, 12), pink, [0.73, 0.0, 0], [0, 0, Math.PI / 2], [1.2, 1, 1]),\n mesh(bx(0.012, 0.07, 0.07), fat, [0.76, 0.1, 0.05]),\n mesh(bx(0.012, 0.07, 0.07), fat, [0.76, -0.1, -0.06]),\n mesh(bx(0.012, 0.05, 0.05), nut, [0.76, 0.0, 0.0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `fresh_fish`.\n */\nexport const freshFish: ItemModelBuilder = ({ T, mesh, bx, G, food, extrude }) => {\n const silver = food(0x9fb0b8)\n const eye = food(0x1c1c1c)\n return G(\n mesh(new T.SphereGeometry(0.5, 12, 6), silver, [0.0, 0, 0], [0, 0, 0], [3.0, 0.6, 1.0]),\n mesh(extrude([[0, 0], [-0.7, 0.4], [-0.7, -0.4]], 0.05, 0.01), food(0x7f939c), [-1.5 + 0.7, 0.025, 0], [Math.PI / 2, 0, 0]),\n mesh(bx(0.8, 0.2, 0.08), food(0xe9eef0), [0.1, -0.12, 0.4]),\n mesh(bx(0.04, 0.2, 0.5), food(0x6c7f88), [0.75, 0.0, 0.0]),\n mesh(new T.SphereGeometry(0.06, 6, 4), eye, [1.2, 0.16, 0.12]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `salted_fish`.\n */\nexport const saltedFish: ItemModelBuilder = ({ mesh, bx, G, food, extrude }) => {\n const outline: [number, number][] = [[-1.22, 0.34], [-0.88, 0.0], [-1.22, -0.34], [-0.6, -0.46], [0.5, -0.47], [1.22, -0.3], [1.22, 0.3], [0.5, 0.47], [-0.6, 0.46]]\n const salt = food(0xf1ede2)\n return G(\n mesh(extrude(outline, 0.24, 0.02), food(0xc9b48a), [0, 0.12, 0], [Math.PI / 2, 0, 0]),\n mesh(bx(2.0, 0.01, 0.1), food(0x9a8458), [0.1, 0.145, 0]),\n mesh(bx(0.4, 0.012, 0.25), salt, [-0.3, 0.145, 0.2]),\n mesh(bx(0.5, 0.012, 0.2), salt, [0.5, 0.145, -0.22]),\n mesh(bx(0.3, 0.012, 0.18), salt, [0.7, 0.145, 0.25]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `banana_bunch`.\n */\nexport const bananaBunch: ItemModelBuilder = ({ mesh, bx, cyl, G, food }) => {\n const yellow = food(0xe5c336)\n const stem = food(0x7d8a3a)\n const tip = food(0x4a3a1a)\n const point = (spread: number, lift: number, u: number): [number, number, number] => [-1.2 + u * 2.62, lift + 0.84 * (u - 0.2) * (u - 0.2), spread * 0.69 * u]\n const banana = (spread: number, lift: number) => [0, 1, 2].map((index) => {\n const from = point(spread, lift, index / 3)\n const to = point(spread, lift, (index + 1) / 3)\n const [dx, dy, dz] = [to[0] - from[0], to[1] - from[1], to[2] - from[2]]\n const elevation = Math.atan2(dy, Math.hypot(dx, dz))\n const mid: [number, number, number] = [(from[0] + to[0]) / 2, (from[1] + to[1]) / 2, (from[2] + to[2]) / 2]\n const material = index === 0 ? stem : yellow\n return mesh(cyl(index === 2 ? 0.08 : 0.15, index === 0 ? 0.1 : 0.15, Math.hypot(dx, dy, dz), 6), material, mid, [0, Math.atan2(-dz, dx), -(Math.PI / 2 - elevation)])\n })\n return G(\n mesh(bx(0.3, 0.3, 0.3), tip, [-1.35, -0.2, 0]),\n ...banana(-1, 0).flat(),\n ...banana(0, 0).flat(),\n ...banana(1, 0).flat(),\n ...banana(-0.5, 0.28).flat(),\n ...banana(0.5, 0.28).flat(),\n )\n}\n","import { asLid } from '../opening'\n\nimport type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `honey_jar`.\n */\nexport const honeyJar: ItemModelBuilder = ({ mesh, cyl, G, glass, metal, paper, food }) => G(\n mesh(cyl(0.395, 0.395, 0.68, 12), glass(0xe3c070, 0.55), [0, -0.16, 0]),\n mesh(cyl(0.37, 0.37, 0.6, 12), food(0xd99a1c), [0, -0.2, 0]),\n mesh(cyl(0.3, 0.395, 0.14, 12), glass(0xe3c070, 0.55), [0, 0.25, 0]),\n asLid(mesh(cyl(0.3, 0.3, 0.18, 12), metal(0x6b4a1c), [0, 0.41, 0])),\n mesh(cyl(0.4, 0.4, 0.34, 12), paper(0xf1e7c8), [0, -0.2, 0]),\n mesh(cyl(0.402, 0.402, 0.05, 12), paper(0x8a5a14), [0, -0.1, 0]),\n mesh(cyl(0.402, 0.402, 0.05, 12), paper(0x8a5a14), [0, -0.3, 0]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `bread`.\n */\nexport const bread: ItemModelBuilder = ({ T, mesh, bx, G, food }) => {\n const score = food(0xe0b070)\n return G(\n mesh(new T.SphereGeometry(0.5, 12, 6), food(0xa86a2c), [0, 0, 0], [0, 0, 0], [3.0, 1.0, 1.0]),\n mesh(bx(0.6, 0.03, 0.09), score, [-0.7, 0.4, 0], [0, 0.7, 0]),\n mesh(bx(0.6, 0.03, 0.09), score, [0, 0.485, 0], [0, 0.7, 0]),\n mesh(bx(0.6, 0.03, 0.09), score, [0.7, 0.4, 0], [0, 0.7, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `cheese`.\n */\nexport const cheese: ItemModelBuilder = ({ mesh, bx, cyl, G, food, extrude }) => {\n const outline: [number, number][] = [[-0.73, 0.0], [0.2, 0.44], [0.55, 0.48], [0.71, 0.3], [0.71, -0.3], [0.55, -0.48], [0.2, -0.44]]\n const hole = food(0xc99a1c)\n return G(\n mesh(extrude(outline, 0.38, 0.01), food(0xf0c64a), [0, 0.19, 0], [Math.PI / 2, 0, 0]),\n mesh(bx(0.04, 0.4, 0.6), food(0xb5482e), [0.73, 0, 0]),\n mesh(cyl(0.07, 0.07, 0.02, 8), hole, [0.1, 0.195, 0.1]),\n mesh(cyl(0.05, 0.05, 0.02, 8), hole, [0.35, 0.195, -0.15]),\n mesh(cyl(0.06, 0.06, 0.02, 8), hole, [-0.2, 0.195, -0.02]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `rapadura`.\n */\nexport const rapadura: ItemModelBuilder = ({ mesh, bx, G, food, paper }) => G(\n mesh(bx(1.9, 0.46, 0.58), food(0x8a5a2b), [0, -0.25, 0]),\n mesh(bx(1.78, 0.04, 0.5), food(0x9b6a36), [0, -0.01, 0]),\n mesh(bx(1.9, 0.46, 0.58), food(0x7d4f25), [0, 0.25, 0]),\n mesh(bx(1.78, 0.04, 0.5), food(0x9b6a36), [0, 0.5, 0]),\n mesh(bx(0.4, 0.96, 0.6), paper(0xc9a26a), [0, 0, 0]),\n mesh(bx(0.42, 0.2, 0.602), paper(0x6b3a1a), [0, 0, 0]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `dog_food`.\n */\nexport const dogFood: ItemModelBuilder = ({ mesh, bx, cyl, G, paper }) => {\n const brown = paper(0x6b3f22)\n return G(\n mesh(bx(1.8, 2.3, 0.69), paper(0xb5461f), [0, -0.15, 0]),\n mesh(bx(1.8, 0.3, 0.4), paper(0x9a3a18), [0, 1.15, 0]),\n mesh(bx(1.8, 0.05, 0.14), paper(0x7a2a10), [0, 1.275, 0]),\n mesh(bx(1.3, 1.3, 0.02), paper(0xf1e7c8), [0, -0.05, 0.35]),\n mesh(cyl(0.3, 0.3, 0.012, 10), brown, [0, -0.25, 0.36], [Math.PI / 2, 0, 0]),\n ...[-0.4, -0.14, 0.14, 0.4].map((x, index) => mesh(cyl(0.09, 0.09, 0.012, 8), brown, [x, 0.2 + (index % 3 === 0 ? 0 : 0.14), 0.36], [Math.PI / 2, 0, 0])),\n mesh(bx(1.3, 0.2, 0.022), paper(0x2f5d3a), [0, -1.0, 0.35]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `salt`.\n */\nexport const salt: ItemModelBuilder = ({ mesh, cyl, G, paper, plastic }) => G(\n mesh(cyl(0.345, 0.345, 1.3, 12), paper(0xeeeeea), [0, -0.15, 0]),\n mesh(cyl(0.25, 0.345, 0.15, 12), paper(0xd6d6d0), [0, 0.575, 0]),\n mesh(cyl(0.12, 0.12, 0.15, 12), plastic(0x2f6aa8), [0, 0.725, 0]),\n mesh(cyl(0.35, 0.35, 0.7, 12), paper(0x2f6aa8), [0, -0.3, 0]),\n mesh(cyl(0.352, 0.352, 0.3, 12), paper(0xeeeeea), [0, -0.3, 0]),\n mesh(cyl(0.35, 0.35, 0.06, 12), paper(0x244a70), [0, -0.78, 0]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `snack_chips`.\n */\nexport const snackChips: ItemModelBuilder = ({ T, mesh, bx, G, paper, plastic, food }) => G(\n mesh(bx(2.0, 2.4, 0.58), plastic(0xd0402a)),\n mesh(bx(2.0, 0.2, 0.12), plastic(0xa8301c), [0, 1.3, 0]),\n mesh(bx(2.0, 0.2, 0.12), plastic(0xa8301c), [0, -1.3, 0]),\n mesh(bx(1.4, 1.2, 0.02), paper(0xf1c230), [0, 0.1, 0.3]),\n mesh(new T.SphereGeometry(0.5, 8, 4), food(0xe3b04a), [0, 0.1, 0.29], [0, 0, 0.4], [0.9, 0.6, 0.04]),\n mesh(bx(1.4, 0.2, 0.022), paper(0x7a1a10), [0, -0.8, 0.3]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `canned_sausages`.\n */\nexport const cannedSausages: ItemModelBuilder = ({ mesh, cyl, bx, G, metal, paper, food }) => G(\n mesh(cyl(0.36, 0.36, 0.81, 12), metal(0xb8bcc2)),\n mesh(cyl(0.365, 0.365, 0.04, 12), metal(0x8d9096), [0, 0.405, 0]),\n mesh(cyl(0.365, 0.365, 0.04, 12), metal(0x8d9096), [0, -0.405, 0]),\n mesh(cyl(0.365, 0.365, 0.5, 12), paper(0xa8322a), [0, 0, 0]),\n mesh(cyl(0.367, 0.367, 0.06, 12), paper(0xf1e7c8), [0, 0.2, 0]),\n mesh(cyl(0.367, 0.367, 0.06, 12), paper(0xf1e7c8), [0, -0.2, 0]),\n mesh(bx(0.4, 0.08, 0.01), food(0xd9a07a), [0, 0.05, 0.36]),\n mesh(bx(0.4, 0.08, 0.01), food(0xc78c66), [0, -0.07, 0.36]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `canned_sardines`.\n */\nexport const cannedSardines: ItemModelBuilder = ({ T, mesh, bx, cyl, G, metal, paper, food }) => {\n const tin = metal(0xb8bcc2)\n return G(\n mesh(bx(1.12, 0.22, 0.65), tin, [0, -0.02, 0]),\n mesh(bx(1.0, 0.04, 0.54), metal(0x9a9ea5), [0, 0.11, 0]),\n mesh(bx(0.7, 0.01, 0.34), paper(0x2f6aa8), [0, 0.125, 0]),\n mesh(new T.SphereGeometry(0.5, 8, 4), food(0xcfd6da), [-0.05, 0.125, 0], [0, 0.2, 0], [0.45, 0.01, 0.12]),\n mesh(cyl(0.08, 0.08, 0.01, 8), metal(0x8d9096), [0.42, 0.125, 0.0]),\n mesh(bx(0.5, 0.02, 0.65), metal(0x8d9096), [0, -0.12, 0]),\n )\n}\n","import { asLid } from '../opening'\n\nimport type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `cooking_oil`.\n */\nexport const cookingOil: ItemModelBuilder = ({ mesh, cyl, G, glass, plastic, paper }) => G(\n mesh(cyl(0.345, 0.345, 1.7, 12), glass(0xe3b830, 0.65), [0, -0.45, 0]),\n mesh(cyl(0.12, 0.345, 0.5, 12), glass(0xe3b830, 0.65), [0, 0.65, 0]),\n mesh(cyl(0.12, 0.12, 0.25, 12), glass(0xe3b830, 0.65), [0, 1.025, 0]),\n asLid(mesh(cyl(0.14, 0.14, 0.15, 12), plastic(0x3f7a2a), [0, 1.225, 0])),\n mesh(cyl(0.35, 0.35, 0.8, 12), paper(0xf1e7c8), [0, -0.5, 0]),\n mesh(cyl(0.352, 0.352, 0.2, 12), paper(0x3f7a2a), [0, -0.5, 0]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `beer_can`.\n */\nexport const beerCan: ItemModelBuilder = ({ mesh, cyl, bx, G, metal, paper }) => {\n const shell = metal(0x235789)\n const foot = mesh(cyl(0.33, 0.29, 0.12, 16), shell, [0, -0.54, 0])\n const body = mesh(cyl(0.33, 0.33, 0.88, 16), shell, [0, -0.04, 0])\n const label = mesh(cyl(0.332, 0.332, 0.56, 16), paper(0xd4af37), [0, -0.02, 0])\n const stripe = mesh(cyl(0.332, 0.332, 0.06, 16), paper(0xf2efe4), [0, 0.3, 0])\n const neck = mesh(cyl(0.27, 0.33, 0.12, 16), shell, [0, 0.46, 0])\n const lid = mesh(cyl(0.285, 0.285, 0.08, 16), metal(0xb0b8bf), [0, 0.552, 0])\n const tab = mesh(bx(0.1, 0.008, 0.18), metal(0x8d949a), [0, 0.596, 0.04])\n return G(foot, body, label, stripe, neck, lid, tab)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `energy_drink`.\n */\nexport const energyDrink: ItemModelBuilder = ({ mesh, cyl, bx, G, metal, paper }) => {\n const shell = metal(0x1a1a1a)\n const foot = mesh(cyl(0.29, 0.25, 0.12, 12), shell, [0, -0.615, 0])\n const body = mesh(cyl(0.29, 0.29, 1.0, 12), shell, [0, -0.055, 0])\n const label = mesh(cyl(0.292, 0.292, 0.8, 12), paper(0x00c853), [0, -0.055, 0])\n const upperBand = mesh(cyl(0.292, 0.292, 0.05, 12), paper(0xf0f0f0), [0, 0.37, 0])\n const lowerBand = mesh(cyl(0.292, 0.292, 0.05, 12), paper(0xf0f0f0), [0, -0.48, 0])\n const neck = mesh(cyl(0.235, 0.29, 0.12, 12), shell, [0, 0.505, 0])\n const lid = mesh(cyl(0.24, 0.24, 0.12, 12), metal(0x999999), [0, 0.615, 0])\n const tab = mesh(bx(0.08, 0.008, 0.14), metal(0x777777), [0, 0.671, 0.05])\n return G(foot, body, label, upperBand, lowerBand, neck, lid, tab)\n}\n","import { asLid } from '../opening'\n\nimport type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `water_jug_5l`.\n */\nexport const waterJug5l: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic, paper, glass }) => {\n const dark = plastic(0x1565c0)\n const body = mesh(bx(1.5, 2.3, 1.5), glass(0x9fd0ee, 0.75), [0, -0.5, 0])\n const shoulder = mesh(bx(1.2, 0.45, 1.2), glass(0x9fd0ee, 0.75), [0, 0.875, 0])\n const neck = mesh(cyl(0.34, 0.34, 0.3, 12), dark, [0, 1.25, 0])\n const cap = asLid(mesh(cyl(0.4, 0.4, 0.25, 12), dark, [0, 1.525, 0]))\n const grip = mesh(bx(0.16, 0.9, 0.3), dark, [1.07, 0.6, 0])\n const upperBar = mesh(bx(0.45, 0.16, 0.3), dark, [0.925, 0.97, 0])\n const lowerBar = mesh(bx(0.45, 0.16, 0.3), dark, [0.925, 0.23, 0])\n const label = mesh(bx(1.0, 0.9, 0.02), paper(0xf4f6f8), [0, -0.5, 0.74])\n const band = mesh(bx(1.0, 0.2, 0.02), paper(0x2f80c8), [0, -0.3, 0.741])\n return G(body, shoulder, neck, cap, grip, upperBar, lowerBar, label, band)\n}\n","import { asLid } from '../opening'\n\nimport type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `sports_drink`.\n */\nexport const sportsDrink: ItemModelBuilder = ({ mesh, cyl, lathe, G, plastic, paper }) => {\n const bottle = mesh(lathe([[0, -0.915], [0.28, -0.915], [0.33, -0.86], [0.33, 0.28], [0.28, 0.5], [0.18, 0.64], [0.17, 0.72], [0, 0.72]], 12), plastic(0x2080d0))\n const label = mesh(cyl(0.332, 0.332, 0.7, 12), paper(0x161b22), [0, -0.12, 0])\n const stripe = mesh(cyl(0.332, 0.332, 0.1, 12), paper(0xf06010), [0, 0.28, 0])\n const collar = mesh(cyl(0.2, 0.2, 0.04, 12), plastic(0xe8e8e8), [0, 0.705, 0])\n const cap = asLid(mesh(cyl(0.19, 0.19, 0.2, 12), plastic(0xf06010), [0, 0.815, 0]))\n return G(bottle, label, stripe, collar, cap)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `milk_carton`.\n */\nexport const milkCarton: ItemModelBuilder = ({ mesh, bx, cyl, extrude, G, paper, plastic }) => {\n const white = paper(0xf3f2ec)\n const body = mesh(bx(0.7, 1.3, 0.7), white, [0, -0.35, 0])\n const gable = mesh(extrude([[-0.35, 0], [0.35, 0], [0.025, 0.5], [-0.025, 0.5]], 0.7, 0), white, [0, 0.3, -0.35])\n const fin = mesh(bx(0.05, 0.2, 0.7), paper(0xd9d8d0), [0, 0.9, 0])\n const frontPanel = mesh(bx(0.5, 0.6, 0.012), paper(0x2f6fc0), [0, -0.3, 0.345])\n const backPanel = mesh(bx(0.5, 0.6, 0.012), paper(0x2f6fc0), [0, -0.3, -0.345])\n const baseStripe = mesh(bx(0.5, 0.08, 0.012), paper(0xf3f2ec), [0, -0.55, 0.347])\n const spout = mesh(cyl(0.07, 0.07, 0.04, 8), plastic(0xd23b3b), [0.2, 0.558, 0], [0, 0, -0.995])\n return G(body, gable, fin, frontPanel, backPanel, baseStripe, spout)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `soda_can`.\n */\nexport const sodaCan: ItemModelBuilder = ({ mesh, cyl, bx, G, metal, paper }) => {\n const shell = metal(0xb8262b)\n const foot = mesh(cyl(0.33, 0.29, 0.12, 16), shell, [0, -0.54, 0])\n const body = mesh(cyl(0.33, 0.33, 0.88, 16), shell, [0, -0.04, 0])\n const wave = mesh(cyl(0.332, 0.332, 0.22, 16), paper(0xf4f1ea), [0, 0.02, 0])\n const neck = mesh(cyl(0.27, 0.33, 0.12, 16), shell, [0, 0.46, 0])\n const lid = mesh(cyl(0.285, 0.285, 0.08, 16), metal(0xb0b8bf), [0, 0.552, 0])\n const tab = mesh(bx(0.1, 0.008, 0.18), metal(0x8d949a), [0, 0.596, 0.04])\n return G(foot, body, wave, neck, lid, tab)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `juice_box`.\n */\nexport const juiceBox: ItemModelBuilder = ({ mesh, bx, cyl, G, paper, plastic }) => {\n const body = mesh(bx(0.52, 0.88, 0.37), paper(0xe08a20), [0, -0.06, 0])\n const fin = mesh(bx(0.52, 0.12, 0.12), paper(0xc9741a), [0, 0.44, 0])\n const label = mesh(bx(0.4, 0.5, 0.02), paper(0xf6f1e4), [0, -0.05, 0.176])\n const fruit = mesh(cyl(0.1, 0.1, 0.02, 10), paper(0xd64a1a), [0, -0.02, 0.175], [Math.PI / 2, 0, 0])\n const stripe = mesh(bx(0.52, 0.08, 0.371), paper(0x6aa84f), [0, -0.38, 0])\n const straw = mesh(cyl(0.012, 0.012, 0.3, 6), plastic(0xf2f2f2), [0, 0.485, 0.06], [0, 0, Math.PI / 2])\n return G(body, fin, label, fruit, stripe, straw)\n}\n","import { asLid } from '../opening'\n\nimport type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `communion_wine`.\n */\nexport const communionWine: ItemModelBuilder = ({ mesh, bx, cyl, lathe, G, glass, paper, metal }) => {\n const bottle = mesh(lathe([[0, -1.5], [0.33, -1.5], [0.38, -1.42], [0.38, 0.4], [0.37, 0.55], [0.2, 0.9], [0.135, 1.05], [0.135, 1.12], [0, 1.12]], 12), glass(0x3a1015, 0.85))\n const label = mesh(cyl(0.382, 0.382, 0.9, 12), paper(0xe3d8b0), [0, -0.4, 0])\n const goldBand = mesh(cyl(0.382, 0.382, 0.05, 12), metal(0xb58830), [0, 0.075, 0])\n const crossUpright = mesh(bx(0.06, 0.26, 0.02), paper(0x7a1f2b), [0, -0.35, 0.375])\n const crossArm = mesh(bx(0.18, 0.06, 0.02), paper(0x7a1f2b), [0, -0.3, 0.375])\n const foil = asLid(mesh(cyl(0.15, 0.15, 0.46, 12), metal(0xb58830), [0, 1.27, 0]))\n return G(bottle, label, goldBand, crossUpright, crossArm, foil)\n}\n","import { asLid } from '../opening'\n\nimport type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `coconut_water`.\n */\nexport const coconutWater: ItemModelBuilder = ({ mesh, bx, cyl, lathe, G, plastic, paper }) => {\n const bottle = mesh(lathe([[0, -0.85], [0.25, -0.85], [0.298, -0.8], [0.298, 0.3], [0.24, 0.52], [0.13, 0.66], [0.12, 0.72], [0, 0.72]], 12), plastic(0xe8efe4))\n const label = mesh(cyl(0.3, 0.3, 0.7, 12), paper(0x3f8f4a), [0, -0.15, 0])\n const nut = mesh(cyl(0.11, 0.11, 0.03, 10), paper(0x6b4a2b), [0, -0.12, 0.285], [Math.PI / 2, 0, 0])\n const leafLeft = mesh(bx(0.2, 0.05, 0.01), paper(0xe6f2d8), [-0.12, 0.08, 0.292], [0, 0, 0.5])\n const leafRight = mesh(bx(0.2, 0.05, 0.01), paper(0xe6f2d8), [0.12, 0.08, 0.292], [0, 0, -0.5])\n const cap = asLid(mesh(cyl(0.14, 0.14, 0.2, 12), plastic(0x3f8f4a), [0, 0.75, 0]))\n return G(bottle, label, nut, leafLeft, leafRight, cap)\n}\n","import { asLid } from '../opening'\n\nimport type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `dirty_water`.\n */\nexport const dirtyWater: ItemModelBuilder = ({ mesh, cyl, lathe, G, plastic, paper, glass, food }) => {\n const bottle = mesh(lathe([[0, -0.915], [0.28, -0.915], [0.33, -0.86], [0.33, 0.28], [0.28, 0.5], [0.18, 0.64], [0.17, 0.72], [0, 0.72]], 12), glass(0xb9c4b8, 0.45))\n const murk = mesh(lathe([[0, -0.89], [0.27, -0.89], [0.315, -0.84], [0.315, 0.1], [0, 0.1]], 12), food(0x6b5a34))\n const sediment = mesh(cyl(0.31, 0.27, 0.12, 8), food(0x4a3d22), [0, -0.82, 0])\n const label = mesh(cyl(0.332, 0.332, 0.22, 12), paper(0xcfc9b4), [0, 0.38, 0])\n const cap = asLid(mesh(cyl(0.19, 0.19, 0.2, 8), plastic(0x5a6068), [0, 0.815, 0]))\n return G(bottle, murk, sediment, label, cap)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `painkillers`.\n */\nexport const painkillers: ItemModelBuilder = ({ mesh, bx, cyl, G, paper, metal, glass }) => {\n const card = mesh(bx(0.6, 0.03, 0.4), metal(0xd0d0d0), [0, -0.085, 0])\n const strip = mesh(bx(0.12, 0.032, 0.4), paper(0xcc2222), [0.24, -0.085, 0])\n const blisterShell = glass(0xeef3f5, 0.7)\n const bumps = [-0.16, 0, 0.16].flatMap((x) => [-0.1, 0.1].map((z) => mesh(cyl(0.06, 0.07, 0.18, 8), blisterShell, [x - 0.06, 0.01, z])))\n return G(card, strip, ...bumps)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `tramadol`.\n */\nexport const tramadol: ItemModelBuilder = ({ mesh, bx, cyl, G, paper, plastic }) => {\n const carton = mesh(bx(0.95, 0.5, 0.15), paper(0xf4f1e8))\n const band = mesh(bx(0.948, 0.12, 0.152), paper(0x1f4f8f), [0, -0.19, 0])\n const label = mesh(bx(0.55, 0.24, 0.01), paper(0xffffff), [-0.12, 0.06, 0.0705])\n const title = mesh(bx(0.4, 0.04, 0.01), paper(0x1f4f8f), [-0.12, 0.1, 0.0715])\n const pill = mesh(cyl(0.07, 0.07, 0.01, 10), plastic(0xe6e0d0), [0.3, 0.06, 0.0705], [Math.PI / 2, 0, 0])\n return G(carton, band, label, title, pill)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `ibuprofen`.\n */\nexport const ibuprofen: ItemModelBuilder = ({ mesh, bx, cyl, G, paper, plastic }) => {\n const carton = mesh(bx(0.95, 0.5, 0.15), paper(0xe9772e))\n const band = mesh(bx(0.948, 0.1, 0.152), paper(0xf6f0e2), [0, 0.2, 0])\n const label = mesh(bx(0.6, 0.24, 0.01), paper(0xfdf8ee), [-0.1, -0.05, 0.0705])\n const title = mesh(bx(0.44, 0.05, 0.01), paper(0xc3541a), [-0.1, -0.0, 0.0715])\n const pill = mesh(cyl(0.07, 0.07, 0.012, 10), plastic(0xf3d9a0), [0.3, -0.05, 0.0705], [Math.PI / 2, 0, 0])\n return G(carton, band, label, title, pill)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `antihistamine`.\n */\nexport const antihistamine: ItemModelBuilder = ({ mesh, bx, cyl, G, paper, plastic }) => {\n const carton = mesh(bx(0.8, 0.5, 0.15), paper(0x7b5ea7))\n const band = mesh(bx(0.798, 0.1, 0.152), paper(0xf0eef6), [0, -0.2, 0])\n const label = mesh(bx(0.5, 0.26, 0.01), paper(0xf7f4fb), [-0.1, 0.05, 0.0705])\n const title = mesh(bx(0.36, 0.05, 0.01), paper(0x7b5ea7), [-0.1, 0.1, 0.0715])\n const pill = mesh(cyl(0.065, 0.065, 0.012, 10), plastic(0xf5f5f5), [0.28, 0.05, 0.0705], [Math.PI / 2, 0, 0])\n return G(carton, band, label, title, pill)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `ceftriaxone`.\n */\nexport const ceftriaxone: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic, glass, metal, paper }) => {\n const tray = mesh(bx(1.0, 0.06, 0.3), plastic(0xdfe6ea), [0, -0.27, 0])\n const vials = [-0.35, 0, 0.35].flatMap((x) => [\n mesh(cyl(0.148, 0.148, 0.3, 8), glass(0xd8ecf2, 0.6), [x, -0.09, 0]),\n mesh(cyl(0.09, 0.148, 0.08, 8), glass(0xd8ecf2, 0.6), [x, 0.1, 0]),\n mesh(cyl(0.09, 0.09, 0.16, 8), metal(0xb9bec4), [x, 0.22, 0]),\n mesh(cyl(0.15, 0.15, 0.14, 8), paper(0xf2f0e6), [x, -0.1, 0]),\n ])\n return G(tray, ...vials)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `clonazepam`.\n */\nexport const clonazepam: ItemModelBuilder = ({ mesh, bx, cyl, G, paper, plastic }) => {\n const carton = mesh(bx(0.9, 0.5, 0.15), paper(0xf2f2f0))\n const band = mesh(bx(0.898, 0.14, 0.152), paper(0x2b8a6e), [0, 0.18, 0])\n const label = mesh(bx(0.55, 0.22, 0.01), paper(0xffffff), [-0.1, -0.07, 0.0705])\n const title = mesh(bx(0.4, 0.04, 0.01), paper(0x2b8a6e), [-0.1, -0.02, 0.0715])\n const pill = mesh(cyl(0.065, 0.065, 0.012, 10), plastic(0x6fb6e8), [0.3, -0.07, 0.0705], [Math.PI / 2, 0, 0])\n return G(carton, band, label, title, pill)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `activated_charcoal`.\n */\nexport const activatedCharcoal: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic, paper }) => {\n const black = plastic(0x1c1c1c)\n const body = mesh(bx(0.6, 0.65, 0.25), black, [0, -0.15, 0])\n const shoulder = mesh(bx(0.44, 0.1, 0.2), black, [0, 0.225, 0])\n const neck = mesh(cyl(0.1, 0.1, 0.1, 10), black, [0, 0.325, 0])\n const cap = mesh(cyl(0.12, 0.12, 0.1, 10), plastic(0xe8e8e8), [0, 0.425, 0])\n const label = mesh(bx(0.5, 0.36, 0.01), paper(0xf2f2ee), [0, -0.15, 0.1205])\n const title = mesh(bx(0.36, 0.06, 0.01), paper(0x1c1c1c), [0, -0.05, 0.1215])\n return G(body, shoulder, neck, cap, label, title)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `adhesive_bandages`.\n */\nexport const adhesiveBandages: ItemModelBuilder = ({ mesh, bx, G, metal, paper }) => {\n const body = mesh(bx(1.0, 0.54, 0.15), metal(0xd9dde0), [0, -0.03, 0])\n const lid = mesh(bx(1.0, 0.06, 0.15), metal(0x2a8ad6), [0, 0.27, 0])\n const label = mesh(bx(0.7, 0.34, 0.01), paper(0xf6f6f2), [0, -0.05, 0.0705])\n const crossUpright = mesh(bx(0.08, 0.24, 0.01), paper(0xd2312d), [0, -0.05, 0.0715])\n const crossArm = mesh(bx(0.24, 0.08, 0.01), paper(0xd2312d), [0, -0.05, 0.0716])\n return G(body, lid, label, crossUpright, crossArm)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `medical_tape`.\n */\nexport const medicalTape: ItemModelBuilder = ({ mesh, cyl, lathe, G, cloth, plastic }) => {\n const roll = mesh(lathe([[0.12, -0.125], [0.248, -0.125], [0.248, 0.125], [0.12, 0.125]], 16), cloth(0xe9e6dc))\n const stripe = mesh(cyl(0.25, 0.25, 0.08, 16), cloth(0x3a78a8), [0, 0, 0])\n const core = mesh(lathe([[0.1, -0.125], [0.12, -0.125], [0.12, 0.125], [0.1, 0.125]], 16), plastic(0xffffff))\n const coreWall = mesh(lathe([[0.1, -0.125], [0.1, 0.125]], 16), plastic(0xf2f2f2))\n return G(roll, stripe, core, coreWall)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `sterile_gauze`.\n */\nexport const sterileGauze: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const packet = mesh(bx(1.0, 1.0, 0.15), paper(0xeef3f5))\n const topSeal = mesh(bx(0.96, 0.08, 0.152), paper(0xc6d4da), [0, 0.46, 0])\n const bottomSeal = mesh(bx(0.96, 0.08, 0.152), paper(0xc6d4da), [0, -0.46, 0])\n const label = mesh(bx(0.6, 0.4, 0.01), paper(0x2f7fc1), [0, -0.05, 0.0705])\n const crossUpright = mesh(bx(0.07, 0.26, 0.01), paper(0xffffff), [0, -0.05, 0.0715])\n const crossArm = mesh(bx(0.26, 0.07, 0.01), paper(0xffffff), [0, -0.05, 0.0716])\n return G(packet, topSeal, bottomSeal, label, crossUpright, crossArm)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `povidone_iodine`.\n */\nexport const povidoneIodine: ItemModelBuilder = ({ mesh, cyl, lathe, G, glass, plastic, paper }) => {\n const bottle = mesh(lathe([[0, -0.55], [0.2, -0.55], [0.225, -0.5], [0.225, 0.15], [0.15, 0.28], [0.1, 0.33], [0.1, 0.34], [0, 0.34]], 12), glass(0x6b3a14, 0.85), [0, 0, 0], [0, 0, 0], [1, 1, 0.79])\n const label = mesh(cyl(0.2255, 0.2255, 0.4, 12), paper(0xf0e6cc), [0, -0.18, 0], [0, 0, 0], [1, 1, 0.79])\n const stripe = mesh(cyl(0.2255, 0.2255, 0.07, 12), paper(0xb5651d), [0, 0.0, 0], [0, 0, 0], [1, 1, 0.79])\n const cap = mesh(cyl(0.11, 0.11, 0.16, 10), plastic(0xf2f2f2), [0, 0.4, 0])\n const nozzle = mesh(cyl(0.03, 0.07, 0.07, 8), plastic(0xd8d8d8), [0, 0.515, 0])\n return G(bottle, label, stripe, cap, nozzle)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `suture_kit`.\n */\nexport const sutureKit: ItemModelBuilder = ({ mesh, bx, torus, G, plastic, metal, paper }) => {\n const lower = mesh(bx(1.5, 0.8, 0.15), plastic(0x2d5a7b), [0, 0, -0.075])\n const lid = mesh(bx(1.5, 0.8, 0.15), plastic(0x3d7aa3), [0, 0, 0.075])\n const latch = mesh(bx(0.2, 0.14, 0.304), metal(0xc2c7cc), [0.62, 0.0, 0])\n const label = mesh(bx(0.7, 0.34, 0.01), paper(0xf4f4f0), [-0.2, -0.1, 0.1455])\n const needle = mesh(torus(0.12, 0.018, 4.2), metal(0xd7dbe0), [-0.2, 0.1, 0.135])\n const thread = mesh(bx(0.5, 0.02, 0.01), paper(0x1c1c1c), [-0.2, -0.1, 0.1465])\n return G(lower, lid, latch, label, needle, thread)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `exam_gloves`.\n */\nexport const examGloves: ItemModelBuilder = ({ mesh, bx, G, plastic, paper }) => {\n const nitrile = plastic(0x3a6ea5)\n const cuff = mesh(bx(0.6, 0.22, 0.1), plastic(0x2c557f), [0, -0.49, 0])\n const palm = mesh(bx(0.7, 0.5, 0.1), nitrile, [0, -0.15, 0])\n const pinky = mesh(bx(0.16, 0.34, 0.1), nitrile, [-0.2625, 0.27, 0])\n const ring = mesh(bx(0.16, 0.44, 0.1), nitrile, [-0.0875, 0.32, 0])\n const middle = mesh(bx(0.16, 0.5, 0.1), nitrile, [0.0875, 0.35, 0])\n const index = mesh(bx(0.16, 0.46, 0.1), nitrile, [0.2625, 0.33, 0])\n const thumb = mesh(bx(0.15, 0.38, 0.1), nitrile, [0.46, 0.0, 0], [0, 0, -1.0])\n const tag = mesh(bx(0.4, 0.1, 0.01), paper(0xf4f4f0), [0, -0.49, 0.0455])\n return G(cuff, palm, pinky, ring, middle, index, thumb, tag)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `n95_mask`.\n */\nexport const n95Mask: ItemModelBuilder = ({ mesh, bx, extrude, G, cloth, metal, paper }) => {\n const white = cloth(0xf1f1ee)\n const strapMaterial = cloth(0xdcdcd6)\n const cup = mesh(extrude([[-0.5, 0.2], [-0.38, 0.53], [0.38, 0.53], [0.5, 0.2], [0.4, -0.42], [0, -0.53], [-0.4, -0.42]], 0.21, 0.02), white, [0, 0, -0.105])\n const fold = mesh(bx(0.9, 0.03, 0.01), paper(0xc9c9c2), [0, 0, 0.12])\n const noseClip = mesh(bx(0.5, 0.03, 0.01), metal(0x8e949a), [0, 0.5, 0.12])\n const strapTopLeft = mesh(bx(0.3, 0.04, 0.03), strapMaterial, [-0.6, 0.15, 0])\n const strapTopRight = mesh(bx(0.3, 0.04, 0.03), strapMaterial, [0.6, 0.15, 0])\n const strapLowLeft = mesh(bx(0.3, 0.04, 0.03), strapMaterial, [-0.6, -0.25, 0])\n const strapLowRight = mesh(bx(0.3, 0.04, 0.03), strapMaterial, [0.6, -0.25, 0])\n return G(cup, fold, noseClip, strapTopLeft, strapTopRight, strapLowLeft, strapLowRight)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `multivitamin`.\n */\nexport const multivitamin: ItemModelBuilder = ({ mesh, cyl, lathe, G, plastic, paper }) => {\n const bottle = mesh(lathe([[0, -0.45], [0.22, -0.45], [0.248, -0.41], [0.248, 0.15], [0.2, 0.24], [0.17, 0.26], [0, 0.26]], 12), plastic(0xc9791a))\n const label = mesh(cyl(0.25, 0.25, 0.42, 12), paper(0xf6f1e2), [0, -0.14, 0])\n const stripe = mesh(cyl(0.25, 0.25, 0.06, 12), paper(0x3f9e55), [0, 0.11, 0])\n const collar = mesh(cyl(0.2, 0.2, 0.03, 12), plastic(0xe8e8e8), [0, 0.265, 0])\n const cap = mesh(cyl(0.19, 0.19, 0.19, 12), plastic(0x3f9e55), [0, 0.355, 0])\n return G(bottle, label, stripe, collar, cap)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `maintenance_medication`.\n */\nexport const maintenanceMedication: ItemModelBuilder = ({ mesh, bx, cyl, lathe, G, plastic, paper }) => {\n const bottle = mesh(lathe([[0, -0.45], [0.19, -0.45], [0.21, -0.42], [0.21, 0.25], [0, 0.25]], 12), plastic(0xd9892b))\n const label = mesh(cyl(0.212, 0.212, 0.45, 12), paper(0xf6f4ee), [0, -0.1, 0])\n const stripe = mesh(cyl(0.212, 0.212, 0.07, 12), paper(0xc23b32), [0, 0.155, 0])\n const dosageBar = mesh(bx(0.04, 0.16, 0.01), paper(0x2a2a2a), [0, -0.1, 0.207])\n const dosageNotch = mesh(bx(0.16, 0.03, 0.01), paper(0x2a2a2a), [0, -0.02, 0.207])\n const cap = mesh(cyl(0.225, 0.225, 0.2, 12), plastic(0xf2f2f2), [0, 0.35, 0])\n return G(bottle, label, stripe, dosageBar, dosageNotch, cap)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `rehydration_salts`.\n */\nexport const rehydrationSalts: ItemModelBuilder = ({ mesh, bx, cyl, G, paper, metal }) => {\n const foil = metal(0xe6eef2)\n const lower = mesh(bx(0.9, 0.5, 0.1), foil, [0, -0.23, 0])\n const stripe = mesh(bx(0.9, 0.14, 0.1), paper(0x2f9fd0), [0, 0.09, 0])\n const upper = mesh(bx(0.9, 0.32, 0.1), foil, [0, 0.32, 0])\n const topCrimp = mesh(bx(0.9, 0.12, 0.05), metal(0xc9d4da), [0, 0.54, 0])\n const bottomCrimp = mesh(bx(0.9, 0.12, 0.05), metal(0xc9d4da), [0, -0.54, 0])\n const label = mesh(bx(0.6, 0.3, 0.01), paper(0xffffff), [0, -0.23, 0.0455])\n const drop = mesh(cyl(0.06, 0.06, 0.01, 8), paper(0xffffff), [0, 0.09, 0.0455], [Math.PI / 2, 0, 0])\n return G(lower, stripe, upper, topCrimp, bottomCrimp, label, drop)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `syringe`.\n */\nexport const syringe: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic, metal, glass }) => {\n const along = [0, 0, Math.PI / 2] as const\n const alongTip = [0, 0, -Math.PI / 2] as const\n const barrel = mesh(cyl(0.075, 0.075, 0.7, 10), glass(0xcfe8f0, 0.55), [-0.1, 0, 0], along)\n const flange = mesh(cyl(0.1, 0.1, 0.025, 12), plastic(0xe8eef0), [-0.45, 0, 0], along)\n const stopper = mesh(cyl(0.07, 0.07, 0.07, 8), plastic(0x2b2b2b), [-0.3, 0, 0], along)\n const rod = mesh(cyl(0.022, 0.022, 0.5, 6), plastic(0xe8eef0), [-0.475, 0, 0], along)\n const thumbRest = mesh(cyl(0.09, 0.09, 0.025, 10), plastic(0xe8eef0), [-0.7375, 0, 0], along)\n const hub = mesh(cyl(0.025, 0.06, 0.1, 8), plastic(0xf0f0f0), [0.3, 0, 0], alongTip)\n const needle = mesh(cyl(0.012, 0.012, 0.4, 6), metal(0xc9ced3), [0.55, 0, 0], along)\n const marks = [-0.3, -0.1, 0.1].map((x) => mesh(bx(0.012, 0.15, 0.15), plastic(0x2a6fb5), [x, 0, 0]))\n return G(barrel, flange, stopper, rod, thumbRest, hub, needle, ...marks)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `antivenom`.\n */\nexport const antivenom: ItemModelBuilder = ({ mesh, bx, G, plastic, metal, paper }) => {\n const body = mesh(bx(1.5, 0.5, 0.5), plastic(0xe8ecef), [0, -0.2, 0])\n const lid = mesh(bx(1.5, 0.25, 0.5), plastic(0xc8352b), [0, 0.175, 0])\n const postLeft = mesh(bx(0.06, 0.15, 0.08), plastic(0x8f2620), [-0.25, 0.375, 0])\n const postRight = mesh(bx(0.06, 0.15, 0.08), plastic(0x8f2620), [0.25, 0.375, 0])\n const handle = mesh(bx(0.56, 0.05, 0.08), plastic(0x8f2620), [0, 0.425, 0])\n const latchLeft = mesh(bx(0.12, 0.22, 0.504), metal(0xb7bcc2), [-0.5, 0.05, 0])\n const latchRight = mesh(bx(0.12, 0.22, 0.504), metal(0xb7bcc2), [0.5, 0.05, 0])\n const label = mesh(bx(0.34, 0.3, 0.01), paper(0xfdfdfb), [0, -0.2, 0.2455])\n const crossUpright = mesh(bx(0.07, 0.22, 0.01), paper(0xc8352b), [0, -0.2, 0.2465])\n const crossArm = mesh(bx(0.22, 0.07, 0.01), paper(0xc8352b), [0, -0.2, 0.2466])\n return G(body, lid, postLeft, postRight, handle, latchLeft, latchRight, label, crossUpright, crossArm)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `saline_iv_bag`.\n */\nexport const salineIvBag: ItemModelBuilder = ({ mesh, bx, cyl, extrude, G, plastic, paper, glass, metal }) => {\n const bag = mesh(extrude([[-0.58, -0.8], [-0.5, -0.98], [0.5, -0.98], [0.58, -0.8], [0.58, 0.8], [0.5, 0.98], [-0.5, 0.98], [-0.58, 0.8]], 0.41, 0.02), glass(0xd7eef4, 0.5), [0, 0, -0.205])\n const header = mesh(bx(1.0, 0.25, 0.08), plastic(0xe4eef1), [0, 1.125, 0])\n const hangHole = mesh(bx(0.3, 0.1, 0.084), plastic(0x3a4a52), [0, 1.14, 0])\n const label = mesh(bx(0.8, 0.6, 0.02), paper(0xf6f9fa), [0, 0.1, 0.2135])\n const band = mesh(bx(0.82, 0.12, 0.02), paper(0x2f80c8), [0, 0.25, 0.2145])\n const adminPort = mesh(cyl(0.12, 0.09, 0.25, 8), plastic(0x2f80c8), [-0.25, -1.125, 0])\n const injectionPort = mesh(cyl(0.1, 0.07, 0.25, 8), metal(0x3a3a3a), [0.25, -1.125, 0])\n return G(bag, header, hangHole, label, band, adminPort, injectionPort)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `splint`.\n */\nexport const splint: ItemModelBuilder = ({ mesh, bx, extrude, G, plastic, metal }) => {\n const foam = mesh(extrude([[-2.28, -0.53], [2.28, -0.53], [2.28, 0.53], [-2.28, 0.53]], 0.05, 0.02), plastic(0xee6611), [0, 0, -0.025])\n const core = mesh(bx(4.2, 0.5, 0.01), metal(0x2070b0), [0, 0, 0.0455])\n const strapLeft = mesh(bx(0.35, 1.1, 0.1), plastic(0x3a3f45), [-1.4, 0, 0])\n const strapRight = mesh(bx(0.35, 1.1, 0.1), plastic(0x3a3f45), [1.4, 0, 0])\n return G(foam, core, strapLeft, strapRight)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `thermometer`.\n */\nexport const thermometer: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic, metal, glass }) => {\n const along = [0, 0, -Math.PI / 2] as const\n const body = mesh(bx(0.8, 0.19, 0.3), plastic(0xf2f4f5), [-0.2, 0, 0])\n const screen = mesh(bx(0.34, 0.01, 0.16), glass(0x9fc7a4, 0.9), [-0.3, 0.098, 0])\n const button = mesh(cyl(0.05, 0.05, 0.01, 10), plastic(0x2a8ad6), [0.0, 0.098, 0])\n const collar = mesh(cyl(0.07, 0.07, 0.04, 10), plastic(0xd4d9dc), [0.22, 0, 0], along)\n const probe = mesh(cyl(0.04, 0.06, 0.36, 10), metal(0xb7bcc2), [0.42, 0, 0], along)\n return G(body, screen, button, collar, probe)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `alcohol_70`.\n */\nexport const alcohol70: ItemModelBuilder = ({ mesh, cyl, lathe, G, glass, plastic, paper }) => {\n const slim = [1, 1, 0.714] as const\n const bottle = mesh(lathe([[0, -1], [0.31, -1], [0.35, -0.94], [0.35, 0.2], [0.25, 0.55], [0.12, 0.68], [0.12, 0.78], [0, 0.78]], 12), glass(0xe8f2f5, 0.6), [0, 0, 0], [0, 0, 0], slim)\n const label = mesh(cyl(0.351, 0.351, 0.8, 12), paper(0xf4f4f0), [0, -0.35, 0], [0, 0, 0], slim)\n const stripe = mesh(cyl(0.351, 0.351, 0.2, 12), paper(0xc23b32), [0, -0.1, 0], [0, 0, 0], slim)\n const cap = mesh(cyl(0.15, 0.15, 0.14, 10), plastic(0xf2f2f2), [0, 0.85, 0])\n const nozzle = mesh(cyl(0.04, 0.07, 0.08, 8), plastic(0xd8d8d8), [0, 0.96, 0])\n return G(bottle, label, stripe, cap, nozzle)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `can_opener`.\n */\nexport const canOpener: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => {\n const steel = metal(0xa9adb2)\n const grip = plastic(0x2f5d8a)\n const rotateAcross = [Math.PI / 2, 0, 0] as const\n return G(\n mesh(bx(9, 1, 2.2), steel, [1.5, -1.5, 0]),\n mesh(bx(5, 1.6, 2.5), grip, [-4.5, -1.2, 0]),\n mesh(bx(8, 1, 2.2), steel, [-3, 1.5, 0]),\n mesh(bx(5, 1, 2.5), grip, [-4.5, 1.5, 0]),\n mesh(bx(3, 2.4, 1.5), steel, [5.5, 0, 0]),\n mesh(cyl(1.2, 1.2, 0.4, 8), steel, [5.5, -0.8, 0.85], rotateAcross),\n mesh(cyl(0.4, 0.4, 2.4, 8), metal(0x6b6f74), [2.6, 0, 0], rotateAcross),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `pliers`.\n */\nexport const pliers: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => {\n const steel = metal(0x7b7f84)\n const grip = plastic(0xc8541c)\n return G(\n mesh(bx(9, 3, 2), grip, [-5.5, 0, 2.5]),\n mesh(bx(9, 3, 2), grip, [-5.5, 0, -2.5]),\n mesh(bx(2, 1.2, 1.4), steel, [0, 0, 1.2]),\n mesh(bx(2, 1.2, 1.4), steel, [0, 0, -1.2]),\n mesh(bx(3, 1.6, 5), steel, [2.5, 0, 0]),\n mesh(cyl(0.9, 0.9, 3, 8), metal(0x4d5054), [2.5, 0, 0]),\n mesh(bx(6, 1.2, 2.2), steel, [7, 0, 1.4]),\n mesh(bx(6, 1.2, 2.2), steel, [7, 0, -1.4]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `bolt_cutters`.\n */\nexport const boltCutters: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => {\n const steel = metal(0x4a4e53)\n const grip = plastic(0xb82a1f)\n const alongX = [0, 0, Math.PI / 2] as const\n return G(\n mesh(cyl(1.2, 1.2, 36, 8), steel, [-12, 0, 3], alongX),\n mesh(cyl(1.2, 1.2, 36, 8), steel, [-12, 0, -3], alongX),\n mesh(cyl(1.5, 1.5, 14, 8), grip, [-23, 0, 3], alongX),\n mesh(cyl(1.5, 1.5, 14, 8), grip, [-23, 0, -3], alongX),\n mesh(bx(8, 3, 8), steel, [8, 0, 0]),\n mesh(bx(4, 6, 15), steel, [14, 0, 0]),\n mesh(cyl(1.5, 1.5, 6, 8), metal(0x8d9196), [14, 0, 0]),\n mesh(bx(14, 5.5, 3), metal(0x6f7378), [23, 0, 6]),\n mesh(bx(14, 5.5, 3), metal(0x6f7378), [23, 0, -6]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `bucket`.\n */\nexport const bucket: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic, metal }) => {\n const body = plastic(0x2c5f9e)\n const wire = metal(0x8a8d91)\n return G(\n mesh(cyl(13.6, 11.6, 23, 16), body, [0, -2, 0]),\n mesh(cyl(14, 14, 1.6, 16), plastic(0x234d82), [0, 8.7, 0]),\n mesh(cyl(11.8, 11.8, 1, 16), plastic(0x234d82), [0, -13, 0]),\n mesh(bx(0.6, 4, 0.6), wire, [13, 11.5, 0]),\n mesh(bx(0.6, 4, 0.6), wire, [-13, 11.5, 0]),\n mesh(bx(26.6, 0.5, 0.6), wire, [0, 13.25, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `binoculars`.\n */\nexport const binoculars: ItemModelBuilder = ({ mesh, bx, cyl, G, M, plastic, metal }) => {\n const shell = plastic(0x2a2d30)\n const trim = metal(0x6a6e73)\n const lens = M(0x6a8fa3, 'glass', { metalness: 0.2, roughness: 0.2 })\n const barrel = (x: number) => [\n mesh(cyl(3.8, 3.8, 8, 12), shell, [x, -0.5, 0]),\n mesh(cyl(3, 3, 3.5, 12), trim, [x, -5.75, 0]),\n mesh(cyl(6, 4.6, 4, 12), shell, [x, 5.5, 0], [0, 0, 0], [0.8, 1, 1]),\n mesh(cyl(5.4, 5.4, 0.2, 8), lens, [x, 7.4, 0], [0, 0, 0], [0.8, 1, 1]),\n ]\n return G(...barrel(-4.2), ...barrel(4.2), mesh(bx(2.4, 6, 3), trim), mesh(cyl(1.3, 1.3, 3, 8), metal(0x3c3f43), [0, 0.5, 0]))\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `matches`.\n */\nexport const matches: ItemModelBuilder = ({ mesh, bx, cyl, G, paper, wood, food }) => {\n const stick = wood(0xd9bb84)\n const head = food(0xb03a2a)\n const matchAt = (x: number) => [mesh(cyl(0.12, 0.12, 3.2, 6), stick, [x, 0.6, 0], [Math.PI / 2, 0, 0]), mesh(bx(0.3, 0.3, 0.4), head, [x, 0.6, 1.5])]\n return G(\n mesh(bx(5, 1.2, 3.4), paper(0xcdb07a)),\n mesh(bx(2.8, 1.5, 3.5), paper(0x9c3b2e), [1.1, 0, 0]),\n mesh(bx(2.4, 0.1, 1.2), paper(0x4a3f38), [1.1, 0.7, 0]),\n ...matchAt(-2.1),\n ...matchAt(-1.7),\n ...matchAt(-1.3),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `pocket_knife`.\n */\nexport const pocketKnife: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => {\n const steel = metal(0xb5b9be)\n return G(\n mesh(bx(7.5, 2.2, 3.2), plastic(0xb02a22), [-1.75, 0, 0]),\n mesh(bx(0.5, 2, 3), steel, [1.75, 0, 0]),\n mesh(bx(0.5, 2.1, 3.1), steel, [-5.25, 0, 0]),\n mesh(cyl(0.45, 0.45, 3.2, 8), metal(0x6b6f74), [1.2, 0, 0], [Math.PI / 2, 0, 0]),\n mesh(bx(3.6, 0.3, 1.5), steel, [3.7, 0, 0]),\n mesh(bx(3.6, 0.15, 0.4), metal(0x8c9096), [3.7, 0.2, -0.55]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `screwdriver`.\n */\nexport const screwdriver: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => {\n const alongX = [0, 0, Math.PI / 2] as const\n const ring = plastic(0x1f2022)\n return G(\n mesh(cyl(1.9, 1.9, 8, 8), plastic(0xd4601c), [-7, 0, 0], alongX),\n mesh(cyl(2, 2, 0.5, 8), ring, [-10, 0, 0], alongX),\n mesh(cyl(2, 2, 0.5, 8), ring, [-8, 0, 0], alongX),\n mesh(cyl(2, 2, 0.5, 8), ring, [-6, 0, 0], alongX),\n mesh(cyl(1.2, 1.2, 2, 8), metal(0x9a9ea3), [-2, 0, 0], alongX),\n mesh(cyl(0.45, 0.45, 11, 8), metal(0x8d9196), [4.5, 0, 0], alongX),\n mesh(bx(1, 0.7, 0.12), metal(0x6f7378), [10.5, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `adjustable_wrench`.\n */\nexport const adjustableWrench: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => {\n const steel = metal(0x8a8e93)\n return G(\n mesh(bx(17, 1.6, 2.2), steel, [-4, 0, 0]),\n mesh(cyl(0.55, 0.55, 1.65, 8), plastic(0x2a2c2e), [-11, 0, 0]),\n mesh(bx(4, 2, 6), steel, [6.5, 0, 0]),\n mesh(bx(4, 2, 2), steel, [10.5, 0, -2]),\n mesh(bx(4, 2, 1.8), steel, [10.5, 0, 2.1]),\n mesh(cyl(0.8, 0.8, 6, 8), metal(0x55595d), [6.5, 0, 0], [Math.PI / 2, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `hoe`.\n */\nexport const hoe: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, wood }) => {\n const steel = metal(0x7d8186)\n return G(\n mesh(cyl(1.3, 1.3, 122, 8), wood(0x9a7448), [-6.5, 1.7, 0], [0, 0, Math.PI / 2]),\n mesh(bx(8, 2.6, 3), steel, [58.5, 1.7, 0]),\n mesh(bx(5, 2.2, 2.6), steel, [65, 0.4, 0]),\n mesh(bx(0.8, 6, 17), steel, [67.1, 0, 0]),\n mesh(bx(1.6, 1, 17), metal(0xa4a8ad), [66.7, -2.5, 0]),\n mesh(bx(1.6, 1, 10), metal(0x5d6166), [65.9, 0.5, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `fire_extinguisher`.\n */\nexport const fireExtinguisher: ItemModelBuilder = ({ mesh, bx, cyl, G, M, metal, plastic, paper }) => {\n const red = metal(0xb3261e)\n const brass = metal(0x9a8a4a)\n const hose = plastic(0x1f2022)\n return G(\n mesh(cyl(7, 7, 34, 12), red, [0, -7, 0]),\n mesh(cyl(8, 8, 2, 12), hose, [0, -23, 0]),\n mesh(cyl(7.1, 7.1, 10, 12), paper(0xe8e4d8), [0, -8, 0]),\n mesh(cyl(2.8, 7, 5, 12), red, [0, 12.5, 0]),\n mesh(cyl(2.2, 2.2, 4, 8), brass, [0, 17, 0]),\n mesh(bx(6, 4, 4), brass, [0, 21, 0]),\n mesh(bx(8, 1, 2.4), red, [0, 23.5, 0]),\n mesh(cyl(0.7, 0.7, 5, 8), hose, [5.5, 20, 0], [0, 0, Math.PI / 2]),\n mesh(cyl(0.7, 0.7, 16, 8), hose, [7.3, 12, 0]),\n mesh(cyl(0.9, 0.9, 1.5, 6), metal(0x3c3f43), [7.3, 3.2, 0]),\n mesh(cyl(1.4, 1.4, 0.8, 8), M(0xe8e4d8, 'metal', { metalness: 0.3, roughness: 0.4 }), [-1.5, 21, 2.2], [Math.PI / 2, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `duct_tape`.\n */\nexport const ductTape: ItemModelBuilder = ({ mesh, bx, lathe, G, metal, paper }) => {\n const ring = (inner: number, outer: number, half: number) => lathe([[inner, -half], [outer, -half], [outer, half], [inner, half], [inner, -half]], 16)\n return G(\n mesh(ring(2.8, 5, 2.5), metal(0x8b8f93)),\n mesh(ring(2.4, 2.8, 2.3), paper(0xa88a5c)),\n mesh(bx(0.2, 4.6, 2.4), metal(0xa4a8ac), [4.9, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `camp_stove`.\n */\nexport const campStove: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => {\n const steel = metal(0x4f5358)\n const grate = metal(0x2c2e30)\n const post = (x: number, z: number) => mesh(bx(0.8, 3, 0.8), grate, [x, 2.8, z])\n return G(\n mesh(bx(18, 3.6, 11), steel, [0, -3.2, 0]),\n mesh(cyl(3.6, 3.6, 1.8, 12), metal(0x8a8e93), [0, -0.5, 0]),\n mesh(cyl(2.4, 3, 1, 12), metal(0x2c2e30), [0, 0.9, 0]),\n mesh(cyl(1.1, 1.1, 1, 8), plastic(0xb5321f), [6, -3.2, 5], [Math.PI / 2, 0, 0]),\n post(6.8, 4), post(-6.8, 4), post(6.8, -4), post(-6.8, -4),\n mesh(bx(14, 0.8, 0.8), grate, [0, 4.6, 4]),\n mesh(bx(14, 0.8, 0.8), grate, [0, 4.6, -4]),\n mesh(bx(0.8, 0.8, 9), grate, [6.8, 4.6, 0]),\n mesh(bx(0.8, 0.8, 9), grate, [-6.8, 4.6, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `lighter`.\n */\nexport const lighter: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => G(\n mesh(bx(2.46, 5.4, 1.16), plastic(0x2f6f4e), [0, -1.3, 0]),\n mesh(bx(2.5, 1.4, 1.2), plastic(0xe6e0d0), [0, -2.5, 0]),\n mesh(bx(2.4, 2.2, 1.1), metal(0xb0b4b9), [0, 2.5, 0]),\n mesh(cyl(0.6, 0.6, 0.9, 8), metal(0x55595d), [-0.5, 3.3, 0], [Math.PI / 2, 0, 0]),\n mesh(bx(0.5, 0.4, 0.4), metal(0x8d9196), [0.5, 3.8, 0]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `lockpick_kit`.\n */\nexport const lockpickKit: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, cloth }) => {\n const leather = cloth(0x5b3d28)\n const pick = metal(0xaeb2b7)\n return G(\n mesh(bx(10, 6, 1.7), leather, [0, -0.5, 0]),\n mesh(bx(10, 3.2, 2), cloth(0x6b4830), [0, 0.9, 0]),\n mesh(cyl(0.45, 0.45, 0.2, 8), metal(0xb08a3c), [0, -0.7, 0.9], [Math.PI / 2, 0, 0]),\n mesh(bx(0.3, 2.2, 0.3), pick, [-2.5, 2.4, 0]),\n mesh(bx(0.3, 2.2, 0.3), pick, [0, 2.4, 0]),\n mesh(bx(0.3, 2.2, 0.3), pick, [2.5, 2.4, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `sewing_kit`.\n */\nexport const sewingKit: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic, cloth, wood }) => {\n const spool = (x: number, color: number) => [mesh(cyl(0.75, 0.75, 3, 8), cloth(color), [x, 1, 0.4]), mesh(cyl(0.95, 0.95, 0.3, 8), wood(0xc9a46a), [x, 2.35, 0.4])]\n return G(\n mesh(bx(9, 2, 3), plastic(0x3a5a78), [0, -1.5, 0]),\n mesh(bx(8.4, 0.3, 2.4), cloth(0xa83a3a), [0, -0.4, 0.1]),\n mesh(bx(9, 5, 0.4), plastic(0x2f4a63), [0, 0, -1.3]),\n ...spool(-3, 0xc93a3a),\n ...spool(0, 0x3a6fc9),\n ...spool(3, 0xd8b43a),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `car_jack`.\n */\nexport const carJack: ItemModelBuilder = ({ mesh, bx, cyl, G, metal }) => {\n const steel = metal(0x5f6469)\n const dark = metal(0x3e4247)\n const arm = (x: number, y: number, angle: number, z: number) => mesh(bx(12.65, 1.2, 1.6), steel, [x, y, z], [0, 0, angle])\n const arms = [3.8, -3.8].flatMap((z) => [arm(-5.9, 2, 0.3217, z), arm(-5.9, -2, -0.3217, z), arm(5.9, 2, -0.3217, z), arm(5.9, -2, 0.3217, z)])\n return G(\n mesh(bx(8, 1, 11), dark, [0, -5, 0]),\n mesh(bx(8, 1, 11), dark, [0, 5, 0]),\n ...arms,\n mesh(cyl(0.6, 0.6, 30, 8), metal(0x8d9196), [0, 0, 0], [0, 0, Math.PI / 2]),\n mesh(bx(1.6, 2.4, 3), dark, [-11.8, 0, 0]),\n mesh(bx(1.6, 2.4, 3), dark, [11.8, 0, 0]),\n mesh(bx(1, 0.8, 5), metal(0xb5321f), [14.5, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `mechanic_toolbox`.\n */\nexport const mechanicToolbox: ItemModelBuilder = ({ mesh, bx, G, metal, plastic }) => {\n const red = metal(0xa8281f)\n const steel = metal(0x8d9196)\n const latch = (x: number) => mesh(bx(2.6, 6, 0.3), steel, [x, 2, 9.85])\n return G(\n mesh(bx(40, 12, 19.4), red, [0, -4, 0]),\n mesh(bx(40, 1.2, 19.6), metal(0x2c2e30), [0, -9.4, 0]),\n mesh(bx(40, 5, 19.4), red, [0, 4.5, 0]),\n mesh(bx(40, 0.5, 19.6), metal(0x2c2e30), [0, 2, 0]),\n mesh(bx(1.2, 2, 1.8), plastic(0x1f2022), [-7.5, 8, 0]),\n mesh(bx(1.2, 2, 1.8), plastic(0x1f2022), [7.5, 8, 0]),\n mesh(bx(16.2, 1, 1.8), plastic(0x1f2022), [0, 9.5, 0]),\n latch(-11), latch(11),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `gas_torch`.\n */\nexport const gasTorch: ItemModelBuilder = ({ mesh, cyl, G, metal, plastic }) => {\n const brass = metal(0xa88a3c)\n const alongX = [0, 0, Math.PI / 2] as const\n return G(\n mesh(cyl(5, 5, 22, 12), metal(0xe3b82a), [0, -10, 0]),\n mesh(cyl(7.5, 7.5, 1.5, 16), metal(0x3c3f43), [0, -20.25, 0]),\n mesh(cyl(2.2, 5, 2.5, 12), metal(0xe3b82a), [0, 2.25, 0]),\n mesh(cyl(2.4, 2.4, 3, 8), brass, [0, 5, 0]),\n mesh(cyl(1, 1, 5, 8), plastic(0x1f2022), [4.5, 5, 0], alongX),\n mesh(cyl(1.6, 1.6, 1.2, 8), plastic(0xb5321f), [7, 5, 0], alongX),\n mesh(cyl(1.4, 1.4, 12, 8), brass, [0, 12.5, 0]),\n mesh(cyl(2.8, 1.4, 2.5, 8), metal(0x55595d), [0, 19.75, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `inverter_welder`.\n */\nexport const inverterWelder: ItemModelBuilder = ({ mesh, bx, cyl, G, M, metal, plastic }) => {\n const front = [Math.PI / 2, 0, 0] as const\n const dark = plastic(0x1f2022)\n return G(\n mesh(bx(30, 19, 12.8), metal(0xc2561c), [0, -1.5, 0]),\n mesh(bx(27, 15, 0.15), dark, [0, -1.5, 6.375]),\n mesh(bx(1.8, 2, 1.8), dark, [-8, 9, 0]),\n mesh(bx(1.8, 2, 1.8), dark, [8, 9, 0]),\n mesh(bx(18, 1, 1.8), dark, [0, 10.5, 0]),\n mesh(bx(6, 2.6, 0.12), M(0x2e5d3a, 'glass', { emissive: 0x1a6b3a, emissiveIntensity: 0.5 }), [-7, 3.5, 6.44]),\n mesh(cyl(1.4, 1.4, 1.2, 8), metal(0xb8bcc1), [-8, -2.5, 5.9], front),\n mesh(cyl(1.4, 1.4, 1.2, 8), metal(0xb8bcc1), [-3, -2.5, 5.9], front),\n mesh(cyl(1.2, 1.2, 1.2, 8), plastic(0xb5321f), [8.5, -7, 5.9], front),\n mesh(cyl(1.2, 1.2, 1.2, 8), plastic(0x15161a), [11.5, -7, 5.9], front),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `pot`.\n */\nexport const pot: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => {\n const steel = metal(0x9fa3a8)\n return G(\n mesh(cyl(12.2, 11.4, 12.5, 16), steel, [0, -1.25, 0]),\n mesh(cyl(12.5, 12.5, 0.8, 16), metal(0x8a8e93), [0, 4.6, 0]),\n mesh(cyl(12.2, 12.2, 0.7, 16), steel, [0, 5.35, 0]),\n mesh(cyl(4, 11, 1.1, 16), metal(0x8a8e93), [0, 6.25, 0]),\n mesh(cyl(1.3, 1, 0.7, 8), plastic(0x1f2022), [0, 7.15, 0]),\n mesh(bx(3.4, 1.2, 2.4), plastic(0x1f2022), [10.8, 3, 0]),\n mesh(bx(3.4, 1.2, 2.4), plastic(0x1f2022), [-10.8, 3, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `cordless_drill`.\n */\nexport const cordlessDrill: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => {\n const body = plastic(0x2f7a45)\n const alongX = [0, 0, Math.PI / 2] as const\n const dark = plastic(0x1f2022)\n return G(\n mesh(cyl(3.2, 3.5, 2, 12), dark, [-10, 6.5, 0], alongX),\n mesh(cyl(3.5, 3.5, 10, 12), body, [-4, 6.5, 0], alongX),\n mesh(cyl(2.8, 3.3, 3, 12), dark, [2.5, 6.5, 0], alongX),\n mesh(cyl(2.3, 2, 4, 12), metal(0x9a9ea3), [6, 6.5, 0], alongX),\n mesh(cyl(0.5, 0.5, 3, 8), metal(0x6f7378), [9.5, 6.5, 0], alongX),\n mesh(bx(4, 8, 5), dark, [-3.5, -0.5, 0]),\n mesh(bx(0.8, 2.2, 1.4), plastic(0xb5321f), [-1.1, 1, 0]),\n mesh(bx(9, 5.5, 6), body, [-5.5, -7.25, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `flint_striker`.\n */\nexport const flintStriker: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, wood }) => {\n const alongX = [0, 0, Math.PI / 2] as const\n return G(\n mesh(cyl(1, 1, 5, 8), wood(0x6b4a2c), [-3, 0, 0], alongX, [1, 1, 0.75]),\n mesh(cyl(0.8, 0.8, 0.5, 8), metal(0x9a9ea3), [-5.25, 0, 0], alongX, [1, 1, 0.75]),\n mesh(cyl(0.9, 0.9, 0.6, 8), metal(0x9a9ea3), [-0.2, 0, 0], alongX, [1, 1, 0.75]),\n mesh(cyl(0.5, 0.5, 5.6, 8), metal(0x4a4d51), [2.8, 0.1, 0], alongX),\n mesh(bx(4, 0.2, 1.1), metal(0xb3b7bc), [3.4, -0.6, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `sharpening_stone`.\n */\nexport const sharpeningStone: ItemModelBuilder = ({ mesh, bx, G, wood, plastic, paper }) => G(\n mesh(bx(19.2, 2, 2.5), wood(0x7a5632), [0, -1.5, 0]),\n mesh(bx(0.4, 2, 2.5), plastic(0x1f2022), [-9.8, -1.5, 0]),\n mesh(bx(0.4, 2, 2.5), plastic(0x1f2022), [9.8, -1.5, 0]),\n mesh(bx(9.4, 3, 2.3), paper(0x8c8f8a), [-4.7, 1, 0]),\n mesh(bx(9.4, 3, 2.3), paper(0xc9c3b0), [4.7, 1, 0]),\n)\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `shovel`.\n */\nexport const shovel: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, wood }) => {\n const steel = metal(0x7d8186)\n return G(\n mesh(cyl(1.7, 1.7, 86, 8), wood(0x9a7448), [-12, 1.8, 0], [0, 0, Math.PI / 2]),\n mesh(cyl(1.5, 1.5, 12, 8), wood(0x8a643c), [-53.8, 1.8, 0], [Math.PI / 2, 0, 0]),\n mesh(bx(10, 3.6, 3.6), steel, [30, -0.6, 0]),\n mesh(bx(32, 0.9, 3.6), steel, [39, -2.35, 0]),\n mesh(bx(27, 0.7, 22), steel, [41.5, -3.15, 0]),\n mesh(bx(3, 0.8, 22), metal(0xa4a8ad), [53.5, -3.1, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `hacksaw`.\n */\nexport const hacksaw: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => {\n const frame = metal(0x3f4348)\n return G(\n mesh(bx(10, 3, 4), plastic(0xc4521b), [-16, 0, 0]),\n mesh(bx(1.2, 1.4, 12), frame, [-11.4, 0, 0]),\n mesh(bx(1.2, 1.4, 12), frame, [19.8, 0, 0]),\n mesh(bx(33, 1.4, 1.2), frame, [4.5, 0, 5.4]),\n mesh(bx(31, 0.4, 0.8), metal(0xb5b9be), [4.5, 0, -5.4]),\n mesh(cyl(0.8, 0.8, 1.8, 8), metal(0x8d9196), [20.1, 0, 0], [0, 0, Math.PI / 2]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `handsaw`.\n */\nexport const handsaw: ItemModelBuilder = ({ mesh, bx, extrude, G, metal, wood }) => {\n const grip = wood(0x7a4f2c)\n return G(\n mesh(bx(11, 3.5, 2.2), grip, [-19.5, 0, 5.4]),\n mesh(bx(11, 3.5, 2.2), grip, [-19.5, 0, -5.4]),\n mesh(bx(2.2, 3.5, 13), grip, [-23.9, 0, 0]),\n mesh(bx(2.4, 3.5, 13), grip, [-15.2, 0, 0]),\n mesh(extrude([[-14, 6.5], [25, 6.5], [25, 2], [-14, -6.5]], 0.3, 0.01), metal(0xaeb2b7), [0, 0.15, 0], [Math.PI / 2, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `scissors`.\n */\nexport const scissors: ItemModelBuilder = ({ mesh, bx, cyl, lathe, G, metal, plastic }) => {\n const steel = metal(0xb5b9be)\n const grip = plastic(0xb5321f)\n const ring = lathe([[1.1, -0.75], [1.9, -0.75], [1.9, 0.75], [1.1, 0.75], [1.1, -0.75]], 8)\n return G(\n mesh(ring, grip, [-7.1, 0, 1.6]),\n mesh(ring, grip, [-7.1, 0, -1.6]),\n mesh(bx(4.4, 0.6, 0.9), steel, [-3.4, 0.35, -0.8]),\n mesh(bx(4.4, 0.6, 0.9), steel, [-3.4, -0.35, 0.8]),\n mesh(bx(6, 0.6, 1.6), steel, [1.8, 0.35, 0.3]),\n mesh(bx(6, 0.6, 1.6), steel, [1.8, -0.35, -0.3]),\n mesh(bx(3, 0.6, 0.8), steel, [7.5, 0.35, 0.2]),\n mesh(bx(3, 0.6, 0.8), steel, [7.5, -0.35, -0.2]),\n mesh(cyl(0.5, 0.5, 1.5, 8), metal(0x6f7378), [-1, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `recurve_bow`.\n */\nexport const recurveBow: ItemModelBuilder = ({ mesh, bx, G, wood, cloth }) => {\n const bar = (x1: number, y1: number, x2: number, y2: number, thick: number, depth: number) =>\n [bx(Math.hypot(x2 - x1, y2 - y1), thick, depth), [(x1 + x2) / 2, (y1 + y2) / 2, 0], [0, 0, Math.atan2(y2 - y1, x2 - x1)]] as const\n const limbMaterial = wood(0x6b4a2c)\n const stringMaterial = cloth(0xe3ddc8)\n const limbs = [-1, 1].flatMap((side) => [\n bar(side * 0.4, 0.6, side * 2.4, 0.35, 0.3, 0.36),\n bar(side * 2.4, 0.35, side * 4.4, -0.2, 0.26, 0.34),\n bar(side * 4.4, -0.2, side * 6.0, -0.8, 0.22, 0.32),\n bar(side * 6.0, -0.8, side * 6.45, -0.6, 0.2, 0.3),\n ])\n const strings = [bar(-6.4, -0.6, 0, -0.95, 0.06, 0.06), bar(0, -0.95, 6.4, -0.6, 0.06, 0.06)]\n return G(\n mesh(bx(0.9, 1.3, 0.46), wood(0x4a301b), [0, 0.35, 0]),\n mesh(bx(0.92, 0.5, 0.5), cloth(0x2b2b2b), [0, 0.1, 0]),\n ...limbs.map(([geometry, position, rotation]) => mesh(geometry, limbMaterial, [...position], [...rotation])),\n ...strings.map(([geometry, position, rotation]) => mesh(geometry, stringMaterial, [...position], [...rotation])),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `crossbow`.\n */\nexport const crossbow: ItemModelBuilder = ({ mesh, bx, G, wood, metal, cloth }) => {\n const stock = wood(0x4a2f1a)\n const prod = metal(0x2f3236)\n const stringMaterial = cloth(0xe3ddc8)\n return G(\n mesh(bx(7, 0.5, 0.5), stock, [0, -0.35, 0]),\n mesh(bx(1.4, 0.9, 0.5), stock, [-2.8, -0.15, 0]),\n mesh(bx(5.4, 0.16, 0.3), wood(0x5d3d22), [0.3, -0.02, 0]),\n mesh(bx(0.8, 0.7, 0.6), metal(0x3a3d40), [2.9, 0, 0]),\n mesh(bx(0.4, 0.5, 4.0), prod, [2.8, 0.35, 2.0], [0, -0.12, 0]),\n mesh(bx(0.4, 0.5, 4.0), prod, [2.8, 0.35, -2.0], [0, 0.12, 0]),\n mesh(bx(0.05, 0.05, 4.07), stringMaterial, [1.98, 0.35, 1.95], [0, 0.289, 0]),\n mesh(bx(0.05, 0.05, 4.07), stringMaterial, [1.98, 0.35, -1.95], [0, -0.289, 0]),\n mesh(bx(3.6, 0.08, 0.08), wood(0xcdb68a), [1.2, 0.1, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `iron_pipe`.\n */\nexport const ironPipe: ItemModelBuilder = ({ mesh, cyl, G, metal }) => {\n const R = Math.PI / 2\n const rust = metal(0x7a4a2c)\n const collar = metal(0x4a4e53)\n const bore = metal(0x1c1d1f)\n return G(\n mesh(cyl(0.155, 0.155, 7.4, 8), metal(0x5b6066), [0, 0, 0], [0, 0, R]),\n mesh(cyl(0.177, 0.177, 0.6, 8), collar, [3.7, 0, 0], [0, 0, R]),\n mesh(cyl(0.177, 0.177, 0.6, 8), collar, [-3.7, 0, 0], [0, 0, R]),\n mesh(cyl(0.165, 0.165, 0.35, 8), rust, [-1.1, 0, 0], [0, 0, R]),\n mesh(cyl(0.165, 0.165, 0.35, 8), rust, [1.9, 0, 0], [0, 0, R]),\n mesh(cyl(0.11, 0.11, 0.02, 8), bore, [3.995, 0, 0], [0, 0, R]),\n mesh(cyl(0.11, 0.11, 0.02, 8), bore, [-3.995, 0, 0], [0, 0, R]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `meat_cleaver`.\n */\nexport const meatCleaver: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, wood }) => {\n const steel = metal(0xa9adb0)\n const rivet = metal(0xb8913a)\n return G(\n mesh(bx(2.15, 0.07, 1.2), steel, [-0.575, 0, 0]),\n mesh(bx(2.15, 0.14, 0.2), metal(0x8c9094), [-0.575, 0, -0.5]),\n mesh(bx(2.15, 0.03, 0.14), metal(0xd4d7da), [-0.575, 0, 0.53]),\n mesh(cyl(0.1, 0.1, 0.08, 8), metal(0x2a2c2e), [-1.25, 0, -0.1]),\n mesh(bx(1.2, 0.3, 0.28), wood(0x3b2a20), [1.05, 0, -0.3]),\n mesh(bx(0.12, 0.2, 0.4), metal(0x6f7377), [0.5, 0, -0.3]),\n mesh(cyl(0.04, 0.04, 0.3, 8), rivet, [0.8, 0, -0.3]),\n mesh(cyl(0.04, 0.04, 0.3, 8), rivet, [1.3, 0, -0.3]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `slingshot`.\n */\nexport const slingshot: ItemModelBuilder = ({ mesh, cyl, bx, G, wood, cloth }) => {\n const rod = (x1: number, y1: number, x2: number, y2: number, radius: number) =>\n [cyl(radius, radius, Math.hypot(x2 - x1, y2 - y1), 8), [(x1 + x2) / 2, (y1 + y2) / 2, 0], [0, 0, Math.atan2(-(x2 - x1), y2 - y1)]] as const\n const frame = wood(0x6b4a2c)\n const band = cloth(0x1f1f1f)\n const arms = [-1, 1].map((side) => rod(0, -0.15, side * 0.5675, 0.70, 0.1))\n const bands = [-1, 1].map((side) => rod(side * 0.5675, 0.70, side * 0.12, 0.25, 0.03))\n return G(\n mesh(cyl(0.12, 0.1, 0.65, 8), frame, [0, -0.425, 0]),\n mesh(cyl(0.126, 0.126, 0.3, 8), cloth(0x7a2f1f), [0, -0.5, 0]),\n ...arms.map(([geometry, position, rotation]) => mesh(geometry, frame, [...position], [...rotation])),\n ...bands.map(([geometry, position, rotation]) => mesh(geometry, band, [...position], [...rotation])),\n mesh(bx(0.26, 0.2, 0.05), cloth(0x8a5a35), [0, 0.2, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `knife`.\n */\nexport const knife: ItemModelBuilder = ({ mesh, bx, cyl, extrude, G, metal, wood }) => {\n const R = Math.PI / 2\n const blade = extrude([[-1.25, 0.1], [-0.75, -0.2], [0.2, -0.2], [0.2, 0.2], [-0.9, 0.2]], 0.06, 0.002)\n const rivet = metal(0xb8913a)\n return G(\n mesh(blade, metal(0xb4b8bb), [0, 0.03, 0], [R, 0, 0]),\n mesh(bx(0.1, 0.24, 0.38), metal(0x6f7377), [0.2, 0, 0]),\n mesh(bx(0.94, 0.294, 0.3), wood(0x5a3a22), [0.72, 0, 0]),\n mesh(bx(0.06, 0.28, 0.28), metal(0x6f7377), [1.22, 0, 0]),\n mesh(cyl(0.035, 0.035, 0.3, 8), rivet, [0.55, 0, 0]),\n mesh(cyl(0.035, 0.035, 0.3, 8), rivet, [0.95, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `tactical_knife`.\n */\nexport const tacticalKnife: ItemModelBuilder = ({ mesh, bx, cyl, extrude, G, metal, plastic }) => {\n const R = Math.PI / 2\n const blade = extrude([[-1.3, 0.05], [-0.9, -0.225], [0.15, -0.225], [0.15, 0.225], [-0.7, 0.225], [-1.05, 0.15]], 0.05, 0.002)\n const grip = plastic(0x1b1c1d)\n const bolt = metal(0x8d9095)\n return G(\n mesh(blade, metal(0x3a3d40), [0, 0.025, 0], [R, 0, 0]),\n mesh(bx(0.1, 0.26, 0.42), metal(0x55595d), [0.2, 0, 0]),\n mesh(bx(0.4, 0.27, 0.32), grip, [0.45, 0, 0]),\n mesh(bx(0.4, 0.23, 0.3), plastic(0x2a2c2e), [0.85, 0, 0]),\n mesh(bx(0.25, 0.27, 0.34), grip, [1.175, 0, 0]),\n mesh(cyl(0.04, 0.04, 0.282, 8), bolt, [0.4, 0, 0]),\n mesh(cyl(0.04, 0.04, 0.282, 8), bolt, [1.15, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `arrows_and_bolts`.\n */\nexport const arrowsAndBolts: ItemModelBuilder = ({ T, mesh, bx, cyl, G, metal, wood, cloth, plastic }) => {\n const R = Math.PI / 2\n const vane = cloth(0xb03a2e)\n const binding = cloth(0x2b2b2b)\n return G(\n mesh(cyl(0.04, 0.04, 6.45, 8), wood(0xc9ab74), [-0.225, 0, 0], [0, 0, R]),\n mesh(new T.ConeGeometry(0.125, 0.55, 4), metal(0x8d9095), [3.225, 0, 0], [0, 0, -R], [1, 1, 0.35]),\n mesh(bx(0.9, 0.02, 0.4), vane, [-2.9, 0, 0]),\n mesh(bx(0.9, 0.25, 0.02), cloth(0xe6e0d0), [-2.9, 0, 0]),\n mesh(cyl(0.05, 0.05, 0.1, 8), plastic(0xe6a23a), [-3.45, 0, 0], [0, 0, R]),\n mesh(cyl(0.055, 0.055, 0.25, 8), binding, [-2.2, 0, 0], [0, 0, R]),\n mesh(cyl(0.055, 0.055, 0.25, 8), binding, [2.85, 0, 0], [0, 0, R]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `sickle`.\n */\nexport const sickle: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, wood, cloth }) => {\n const R = Math.PI / 2\n const steel = metal(0xa5a9ad)\n const blade = (x1: number, z1: number, x2: number, z2: number, width: number) =>\n mesh(bx(Math.hypot(x2 - x1, z2 - z1), 0.06, width), steel, [(x1 + x2) / 2, 0, (z1 + z2) / 2], [0, Math.atan2(-(z2 - z1), x2 - x1), 0])\n return G(\n mesh(cyl(0.15, 0.17, 1.5, 8), wood(0x7a5a38), [-1.25, 0, -1.575], [0, 0, R]),\n mesh(cyl(0.176, 0.176, 0.5, 8), cloth(0x3b2a20), [-1.7, 0, -1.575], [0, 0, R]),\n mesh(cyl(0.176, 0.176, 0.2, 8), metal(0x6f7377), [-0.6, 0, -1.575], [0, 0, R]),\n blade(-0.5, -1.575, 0.3, -1.5, 0.18),\n blade(0.3, -1.5, 1.2, -1.1, 0.24),\n blade(1.2, -1.1, 1.75, -0.35, 0.28),\n blade(1.75, -0.35, 1.88, 0.5, 0.26),\n blade(1.88, 0.5, 1.5, 1.2, 0.2),\n blade(1.5, 1.2, 0.9, 1.7, 0.12),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `cast_iron_skillet`.\n */\nexport const castIronSkillet: ItemModelBuilder = ({ mesh, lathe, cyl, G, metal }) => {\n const R = Math.PI / 2\n const iron = metal(0x2b2c2e)\n const pan = lathe([[0, -0.25], [0.95, -0.25], [1.25, 0.25], [1.1, 0.25], [0.92, -0.1], [0, -0.1]], 16)\n return G(\n mesh(pan, iron, [-0.9, 0, 0]),\n mesh(cyl(0.9, 0.9, 0.01, 16), metal(0x1c1d1f), [-0.9, -0.095, 0]),\n mesh(cyl(0.14, 0.1, 1.95, 8), iron, [1.175, 0.1, 0], [0, 0, R]),\n mesh(cyl(0.06, 0.06, 0.22, 8), metal(0x111213), [2.0, 0.1, 0]),\n mesh(cyl(0.1, 0.1, 0.16, 8), iron, [-2.0, 0.12, 0], [0, 0, R]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `improvised_spear`.\n */\nexport const improvisedSpear: ItemModelBuilder = ({ T, mesh, cyl, G, metal, wood, cloth }) => {\n const R = Math.PI / 2\n const wrap = cloth(0x4a3b2a)\n return G(\n mesh(cyl(0.1, 0.1, 13.6, 8), wood(0x7a5a38), [-1.2, 0, 0], [0, 0, R]),\n mesh(new T.ConeGeometry(0.175, 2.4, 4), metal(0x8d9095), [6.8, 0, 0], [0, 0, -R], [1, 1, 0.4]),\n mesh(cyl(0.175, 0.175, 0.8, 8), cloth(0x6b5a3e), [5.4, 0, 0], [0, 0, R]),\n mesh(cyl(0.14, 0.14, 0.7, 8), wrap, [-4.5, 0, 0], [0, 0, R]),\n mesh(cyl(0.14, 0.14, 0.7, 8), wrap, [-3.5, 0, 0], [0, 0, R]),\n mesh(cyl(0.12, 0.12, 0.3, 8), metal(0x6f7377), [4.4, 0, 0], [0, 0, R]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `hatchet`.\n */\nexport const hatchet: ItemModelBuilder = ({ mesh, cyl, bx, extrude, G, metal, wood, cloth }) => {\n const R = Math.PI / 2\n const head = metal(0x5c6065)\n const blade = extrude([[0.7, -0.25], [1.75, -0.65], [1.75, 0.65], [0.7, 0.25]], 0.28, 0.002)\n return G(\n mesh(cyl(0.14, 0.09, 3.0, 8), wood(0x8a643c), [-0.25, 0, 0], [0, 0, R]),\n mesh(cyl(0.16, 0.16, 0.2, 8), wood(0x6f4f2e), [-1.65, 0, 0], [0, 0, R]),\n mesh(cyl(0.145, 0.145, 1.0, 8), cloth(0x2b2b2b), [-1.15, 0, 0], [0, 0, R]),\n mesh(bx(0.5, 0.5, 0.45), head, [1.0, 0, 0]),\n mesh(blade, head, [0, 0.14, 0], [R, 0, 0]),\n mesh(bx(0.08, 0.12, 1.3), metal(0xc4c8cb), [1.71, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `sledgehammer`.\n */\nexport const sledgehammer: ItemModelBuilder = ({ mesh, cyl, bx, G, metal, wood, cloth }) => {\n const R = Math.PI / 2\n const steel = metal(0x55595d)\n return G(\n mesh(cyl(0.2, 0.13, 8.7, 8), wood(0x8a643c), [-0.15, 0, 0], [0, 0, R]),\n mesh(cyl(0.205, 0.205, 2.0, 8), cloth(0x22251f), [-3.2, 0, 0], [0, 0, R]),\n mesh(cyl(0.21, 0.21, 0.3, 8), wood(0x6f4f2e), [-4.35, 0, 0], [0, 0, R]),\n mesh(bx(0.9, 1.2, 1.4), steel, [4.0, 0, 0]),\n mesh(cyl(0.5, 0.5, 0.56, 8), metal(0x3a3d40), [4.0, 0, 0.97], [R, 0, 0]),\n mesh(cyl(0.5, 0.5, 0.56, 8), metal(0x3a3d40), [4.0, 0, -0.97], [R, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `chainsaw`.\n */\nexport const chainsaw: ItemModelBuilder = ({ mesh, bx, cyl, G, metal, plastic }) => {\n const orange = plastic(0xd9731c)\n const dark = plastic(0x2f3133)\n return G(\n mesh(bx(2.1, 1.2, 1.5), orange, [-1.2, -0.4, 0]),\n mesh(bx(1.3, 0.3, 1.1), dark, [-1.4, -1.15, 0]),\n mesh(bx(0.28, 0.85, 0.3), dark, [-2.1, 0.625, 0]),\n mesh(bx(0.28, 0.85, 0.3), dark, [-0.5, 0.625, 0]),\n mesh(bx(1.9, 0.25, 0.3), dark, [-1.3, 1.175, 0]),\n mesh(bx(0.2, 0.45, 2.3), dark, [-0.1, 0.45, 0]),\n mesh(cyl(0.38, 0.38, 0.12, 8), dark, [-1.2, 0.26, 0]),\n mesh(bx(0.8, 0.5, 0.3), metal(0x6f7377), [-1.5, -0.35, 0.9]),\n mesh(bx(2.2, 0.46, 0.14), metal(0xa9adb0), [1.0, -0.45, 0]),\n mesh(bx(2.35, 0.6, 0.2), metal(0x2a2c2e), [1.075, -0.45, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `pickaxe`.\n */\nexport const pickaxe: ItemModelBuilder = ({ T, mesh, cyl, bx, G, metal, wood, cloth }) => {\n const R = Math.PI / 2\n const iron = metal(0x55595d)\n const arm = (side: number) => [\n mesh(cyl(0.13, 0.2, 0.8, 8), iron, [4.1, 0, side * 0.65], [side * R, 0, 0]),\n mesh(new T.ConeGeometry(0.13, 0.7, 8), metal(0x6a6e72), [4.08, 0, side * 1.4], [side * R, 0, 0.18]),\n ]\n return G(\n mesh(cyl(0.17, 0.15, 8.6, 8), wood(0x8a643c), [-0.2, 0, 0], [0, 0, R]),\n mesh(cyl(0.19, 0.19, 2.0, 8), cloth(0x2b2b2b), [-3.4, 0, 0], [0, 0, R]),\n mesh(cyl(0.2, 0.2, 0.3, 8), wood(0x6f4f2e), [-4.35, 0, 0], [0, 0, R]),\n mesh(bx(0.8, 0.4, 0.5), iron, [4.1, 0, 0]),\n mesh(cyl(0.2, 0.2, 0.3, 8), metal(0x3a3d40), [3.45, 0, 0], [0, 0, R]),\n ...arm(1),\n ...arm(-1),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `baseball_bat`.\n */\nexport const baseballBat: ItemModelBuilder = ({ mesh, lathe, cyl, G, wood, cloth }) => {\n const R = Math.PI / 2\n const profile: Array<[number, number]> = [[0, -4.3], [0.19, -4.3], [0.25, -4.2], [0.22, -4.05], [0.14, -3.95], [0.14, -3.0], [0.17, -1.6], [0.25, 0.2], [0.3, 1.8], [0.345, 3.0], [0.345, 4.0], [0.31, 4.25], [0, 4.3]]\n const band = cloth(0x8f1f1f)\n return G(\n mesh(lathe(profile, 16), wood(0xc9a56b), [0, 0, 0], [0, 0, -R]),\n mesh(cyl(0.185, 0.185, 2.2, 8), cloth(0x1b1c1d), [-2.8, 0, 0], [0, 0, R]),\n mesh(cyl(0.352, 0.352, 0.12, 16), band, [3.2, 0, 0], [0, 0, R]),\n mesh(cyl(0.352, 0.352, 0.12, 16), band, [3.55, 0, 0], [0, 0, R]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `police_baton`.\n */\nexport const policeBaton: ItemModelBuilder = ({ mesh, cyl, G, plastic, metal }) => {\n const R = Math.PI / 2\n const black = plastic(0x1b1c1d)\n return G(\n mesh(cyl(0.22, 0.22, 5, 8), black, [0, 0, 0], [0, 0, R]),\n mesh(cyl(0.225, 0.225, 0.3, 8), metal(0x3a3d40), [2.35, 0, 0], [0, 0, R]),\n mesh(cyl(0.225, 0.225, 0.3, 8), metal(0x3a3d40), [-2.35, 0, 0], [0, 0, R]),\n mesh(cyl(0.12, 0.12, 0.6, 8), black, [-1.35, -0.36, 0]),\n mesh(cyl(0.16, 0.16, 0.115, 8), plastic(0x2a2c2e), [-1.35, -0.7175, 0]),\n mesh(cyl(0.13, 0.13, 0.06, 8), plastic(0x3a3d40), [-1.35, -0.2, 0]),\n mesh(cyl(0.13, 0.13, 0.06, 8), plastic(0x3a3d40), [-1.35, -0.32, 0]),\n mesh(cyl(0.13, 0.13, 0.06, 8), plastic(0x3a3d40), [-1.35, -0.44, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `wire_roll`.\n */\nexport const wireRoll: ItemModelBuilder = ({ mesh, lathe, cyl, G, metal, paper }) => {\n const coil = lathe([[0.32, -0.25], [0.66, -0.25], [0.7, -0.2], [0.7, 0.2], [0.66, 0.25], [0.32, 0.25], [0.32, -0.25]], 12)\n const tube = lathe([[0.26, -0.25], [0.32, -0.25], [0.32, 0.25], [0.26, 0.25], [0.26, -0.25]], 12)\n return G(\n mesh(coil, metal(0x8d9096)),\n mesh(tube, paper(0x9a7b4f)),\n mesh(cyl(0.702, 0.702, 0.05, 12), metal(0x5c6065), [0, -0.1, 0]),\n mesh(cyl(0.702, 0.702, 0.05, 12), metal(0x5c6065), [0, 0.1, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `barbed_wire`.\n */\nexport const barbedWire: ItemModelBuilder = ({ mesh, bx, lathe, G, metal }) => {\n const ring = (outer: number, y0: number, y1: number) => lathe([[1.25, y0], [outer, y0], [outer, y1], [1.25, y1], [1.25, y0]], 8)\n const wire = metal(0x6b6f73)\n const barb = metal(0x9a9ea3)\n return G(\n mesh(ring(1.5, -0.6, -0.2), wire),\n mesh(ring(1.46, -0.2, 0.2), metal(0x585c62)),\n mesh(ring(1.5, 0.2, 0.6), wire),\n mesh(bx(0.06, 1.2, 0.2), metal(0x3a3d40), [1.47, 0, 0]),\n mesh(bx(0.06, 1.2, 0.2), metal(0x3a3d40), [-1.47, 0, 0]),\n mesh(bx(0.08, 0.08, 0.18), barb, [1.42, 0.4, 0.5]),\n mesh(bx(0.08, 0.08, 0.18), barb, [-1.42, 0.4, -0.5]),\n mesh(bx(0.18, 0.08, 0.08), barb, [0.5, -0.4, 1.42]),\n mesh(bx(0.18, 0.08, 0.08), barb, [-0.5, -0.4, -1.42]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `glass_shards`.\n */\nexport const glassShards: ItemModelBuilder = ({ T, mesh, extrude, G, glass }) => {\n const R = Math.PI / 2\n const pane = glass(0xbfe3df, 0.55)\n const deep = glass(0x7fb5b0, 0.7)\n const base = extrude([[-0.6, -0.1], [0.45, -0.5], [0.6, 0.2], [-0.1, 0.5]], 0.04, 0.002)\n const chip = extrude([[0, 0], [0.25, 0.05], [0.1, 0.22]], 0.03, 0.002)\n return G(\n mesh(base, pane, [0, 0, 0], [R, 0, 0]),\n mesh(chip, deep, [0.2, 0, -0.35], [R, 0, 0.4]),\n mesh(new T.ConeGeometry(0.14, 0.46, 3), pane, [-0.2, 0.23, 0.1], [0, 0.3, 0.12]),\n mesh(new T.ConeGeometry(0.1, 0.34, 3), deep, [0.25, 0.17, -0.1], [0.15, 0, -0.2]),\n mesh(new T.ConeGeometry(0.08, 0.26, 3), pane, [0.05, 0.13, 0.3], [-0.2, 0.5, 0.15]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `sheet_metal`.\n */\nexport const sheetMetal: ItemModelBuilder = ({ mesh, bx, cyl, G, metal }) => {\n const zinc = metal(0x9aa0a6)\n const edge = metal(0x7d838a)\n const hole = metal(0x1c1d1f)\n const corners: Array<[number, number]> = [[2.5, 1.8], [-2.5, 1.8], [2.5, -1.8], [-2.5, -1.8]]\n return G(\n mesh(bx(6, 0.02, 4.5), zinc, [0, -0.005, 0]),\n mesh(bx(6, 0.01, 0.16), edge, [0, 0.01, 2.17]),\n mesh(bx(6, 0.01, 0.16), edge, [0, 0.01, -2.17]),\n mesh(bx(0.16, 0.01, 4.18), edge, [2.92, 0.01, 0]),\n mesh(bx(0.16, 0.01, 4.18), edge, [-2.92, 0.01, 0]),\n mesh(bx(1.2, 0.01, 0.8), metal(0x7a4a2c), [-0.8, 0.01, -0.4]),\n ...corners.map(([x, z]) => mesh(cyl(0.12, 0.12, 0.01, 8), hole, [x, 0.01, z])),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `cement_bag`.\n */\nexport const cementBag: ItemModelBuilder = ({ mesh, bx, G, paper, cloth }) => {\n return G(\n mesh(bx(5.0, 0.7, 3.0), paper(0xb9b4a3)),\n mesh(bx(4.5, 1.0, 2.6), paper(0xc9c4b3)),\n mesh(bx(2.4, 0.01, 1.5), paper(0xe8e2d0), [0, 0.505, 0]),\n mesh(bx(2.4, 0.011, 0.25), paper(0x2f5d8a), [0, 0.5055, 0]),\n mesh(bx(0.12, 0.5, 2.8), cloth(0x8c8672), [2.44, 0, 0]),\n mesh(bx(0.12, 0.5, 2.8), cloth(0x8c8672), [-2.44, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `epoxy_glue`.\n */\nexport const epoxyGlue: ItemModelBuilder = ({ T, mesh, cyl, bx, G, glass, plastic }) => {\n const R = Math.PI / 2\n const barrel = glass(0xdfe8ec, 0.5)\n const orange = plastic(0xe07a1f)\n const blue = plastic(0x2f6bb5)\n return G(\n mesh(cyl(0.15, 0.15, 0.6, 8), barrel, [0, 0.15, 0], [0, 0, R]),\n mesh(cyl(0.15, 0.15, 0.6, 8), barrel, [0, -0.15, 0], [0, 0, R]),\n mesh(cyl(0.11, 0.11, 0.5, 8), plastic(0xf2d27a), [0, 0.15, 0], [0, 0, R]),\n mesh(cyl(0.11, 0.11, 0.5, 8), plastic(0xb9c6d4), [0, -0.15, 0], [0, 0, R]),\n mesh(cyl(0.05, 0.05, 0.16, 8), orange, [-0.38, 0.15, 0], [0, 0, R]),\n mesh(cyl(0.05, 0.05, 0.16, 8), blue, [-0.38, -0.15, 0], [0, 0, R]),\n mesh(bx(0.04, 0.58, 0.28), plastic(0xe8e8e8), [-0.48, 0, 0]),\n mesh(bx(0.03, 0.58, 0.3), plastic(0xe8e8e8), [-0.285, 0, 0]),\n mesh(new T.ConeGeometry(0.15, 0.2, 8), plastic(0xc9ccd0), [0.4, 0, 0], [0, 0, -R]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `electronic_components`.\n */\nexport const electronicComponents: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic, metal }) => {\n const R = Math.PI / 2\n const chip = plastic(0x18191b)\n const gold = metal(0xb8913a)\n const silver = metal(0xb4b8bb)\n return G(\n mesh(bx(1.0, 0.04, 0.8), plastic(0x2c6b3a), [0, -0.08, 0]),\n mesh(bx(0.22, 0.06, 0.14), chip, [-0.1, -0.03, -0.1]),\n mesh(bx(0.2, 0.02, 0.19), silver, [-0.1, -0.05, -0.1]),\n mesh(bx(0.3, 0.06, 0.18), chip, [0.2, -0.03, 0.2]),\n mesh(bx(0.28, 0.02, 0.27), silver, [0.2, -0.05, 0.2]),\n mesh(cyl(0.05, 0.05, 0.16, 8), plastic(0x2f4f8f), [0.35, 0.02, -0.25]),\n mesh(cyl(0.04, 0.04, 0.14, 8), plastic(0x8f3a2f), [0.2, 0.01, -0.3]),\n mesh(cyl(0.025, 0.025, 0.14, 8), plastic(0xc9a56b), [-0.3, -0.035, 0.2], [0, 0, R]),\n mesh(cyl(0.027, 0.027, 0.02, 6), plastic(0x8f3a2f), [-0.34, -0.035, 0.2], [0, 0, R]),\n mesh(cyl(0.027, 0.027, 0.02, 6), plastic(0x2f4f8f), [-0.26, -0.035, 0.2], [0, 0, R]),\n mesh(bx(0.3, 0.05, 0.06), chip, [-0.3, -0.035, 0.33]),\n ...[-0.4, -0.35, -0.3, -0.25, -0.2].map((x) => mesh(bx(0.03, 0.12, 0.03), gold, [x, 0, 0.33])),\n mesh(bx(0.14, 0.1, 0.16), silver, [0.43, -0.01, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `rope`.\n */\nexport const rope: ItemModelBuilder = ({ mesh, lathe, bx, G, cloth }) => {\n const ring = (innerRadius: number, outerRadius: number, y0: number, y1: number, color: number) =>\n mesh(lathe([[innerRadius, y0], [outerRadius, y0], [outerRadius, y1], [innerRadius, y1], [innerRadius, y0]], 12), cloth(color))\n const tie = cloth(0x6b5a3e)\n return G(\n ring(0.42, 0.75, -0.4, -0.14, 0xb59b63),\n ring(0.46, 0.72, -0.14, 0.12, 0xa68c55),\n ring(0.42, 0.75, 0.12, 0.4, 0xb59b63),\n mesh(bx(0.2, 0.8, 0.06), tie, [0, 0, 0.72]),\n mesh(bx(0.2, 0.8, 0.06), tie, [0, 0, -0.72]),\n mesh(bx(0.06, 0.8, 0.2), tie, [0.72, 0, 0]),\n mesh(bx(0.06, 0.8, 0.2), tie, [-0.72, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `copper_wire`.\n */\nexport const copperWire: ItemModelBuilder = ({ mesh, lathe, cyl, G, metal, plastic }) => {\n const R = Math.PI / 2\n const copper = metal(0xb8693a)\n return G(\n mesh(lathe([[0.18, -0.11], [0.38, -0.11], [0.38, 0.11], [0.18, 0.11], [0.18, -0.11]], 16), copper),\n mesh(cyl(0.4, 0.4, 0.04, 16), plastic(0x2a2c2e), [0, 0.131, 0]),\n mesh(cyl(0.4, 0.4, 0.04, 16), plastic(0x2a2c2e), [0, -0.131, 0]),\n mesh(cyl(0.015, 0.015, 0.35, 6), metal(0xd08a55), [0, 0, 0.385], [0, 0, R]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `pet_bottle`.\n */\nexport const petBottle: ItemModelBuilder = ({ M, mesh, lathe, cyl, G, plastic, paper }) => {\n const body = lathe([[0, -1.65], [0.46, -1.65], [0.527, -1.5], [0.527, 0.55], [0.45, 0.85], [0.2, 1.2], [0.19, 1.37]], 12)\n return G(\n mesh(body, M(0xcfeaf2, 'plastic', { roughness: 0.3, transparent: true, opacity: 0.65 })),\n mesh(cyl(0.53, 0.53, 1.2, 12), paper(0xcc2222), [0, -0.5, 0]),\n mesh(cyl(0.215, 0.215, 0.3, 12), plastic(0x1565c0), [0, 1.5, 0]),\n mesh(cyl(0.22, 0.22, 0.04, 12), plastic(0xcfeaf2), [0, 1.33, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `glass_bottle`.\n */\nexport const glassBottle: ItemModelBuilder = ({ mesh, lathe, cyl, G, glass, paper, metal }) => {\n const body = lathe([[0, -1.3], [0.3, -1.3], [0.372, -1.2], [0.372, 0.1], [0.33, 0.45], [0.15, 0.8], [0.12, 1.1], [0.13, 1.25]], 12)\n return G(\n mesh(body, glass(0x2f6b3f, 0.8)),\n mesh(cyl(0.375, 0.375, 0.8, 12), paper(0xe3d9b8), [0, -0.5, 0]),\n mesh(cyl(0.15, 0.15, 0.1, 8), glass(0x2f6b3f, 0.85), [0, 1.2, 0]),\n mesh(cyl(0.145, 0.145, 0.06, 12), metal(0xb8913a), [0, 1.27, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `empty_can`.\n */\nexport const emptyCan: ItemModelBuilder = ({ mesh, lathe, cyl, bx, G, metal, paper }) => {\n const body = lathe([[0, -0.6], [0.27, -0.6], [0.3, -0.55], [0.33, -0.45], [0.33, 0.42], [0.29, 0.55], [0.285, 0.6]], 12)\n return G(\n mesh(body, metal(0xc9ccd0)),\n mesh(cyl(0.332, 0.332, 0.5, 12), paper(0xb5342a), [0, -0.05, 0]),\n mesh(cyl(0.25, 0.25, 0.01, 12), metal(0x222222), [0, 0.55, 0]),\n mesh(bx(0.14, 0.01, 0.24), metal(0x9a9ea3), [0, 0.602, 0.05]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `firewood`.\n */\nexport const firewood: ItemModelBuilder = ({ mesh, cyl, G, wood }) => {\n const R = Math.PI / 2\n const log = (radius: number, y: number, z: number, bark: number) => [\n mesh(cyl(radius, radius, 3.98, 8), wood(bark), [0, y, z], [0, 0, R]),\n mesh(cyl(radius * 0.92, radius * 0.92, 0.02, 8), wood(0xd2b07a), [1.99, y, z], [0, 0, R]),\n mesh(cyl(radius * 0.92, radius * 0.92, 0.02, 8), wood(0xd2b07a), [-1.99, y, z], [0, 0, R]),\n ]\n return G(...log(0.4, -0.2, 0.4, 0x5a3d24), ...log(0.4, -0.2, -0.4, 0x6b4a2c), ...log(0.3, 0.3, 0, 0x4f3520))\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `tarp`.\n */\nexport const tarp: ItemModelBuilder = ({ mesh, bx, cyl, G, cloth, metal }) => {\n const blue = cloth(0x2f5f8f)\n const deep = cloth(0x2a557f)\n const rope = cloth(0xcbb98a)\n const corners: Array<[number, number]> = [[1.55, 1.05], [-1.55, 1.05], [1.55, -1.05], [-1.55, -1.05]]\n return G(\n mesh(bx(3.5, 0.24, 2.5), blue, [0, -0.38, 0]),\n mesh(bx(3.4, 0.25, 2.44), deep, [0, -0.135, 0]),\n mesh(bx(3.46, 0.25, 2.4), blue, [0, 0.115, 0]),\n mesh(bx(3.38, 0.24, 2.46), deep, [0, 0.37, 0]),\n mesh(bx(0.12, 1.002, 2.502), rope, [0.9, 0, 0]),\n mesh(bx(0.12, 1.002, 2.502), rope, [-0.9, 0, 0]),\n ...corners.map(([x, z]) => mesh(cyl(0.09, 0.09, 0.02, 8), metal(0xb4b8bb), [x, 0.49, z])),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `screws`.\n */\nexport const screws: ItemModelBuilder = ({ T, mesh, cyl, bx, G, metal }) => {\n const R = Math.PI / 2\n const steel = metal(0xa9adb0)\n const dark = metal(0x2a2c2e)\n return G(\n mesh(cyl(0.25, 0.25, 0.12, 8), steel, [0.39, 0, 0], [0, 0, R]),\n mesh(bx(0.01, 0.3, 0.05), dark, [0.445, 0, 0]),\n mesh(bx(0.01, 0.05, 0.3), dark, [0.445, 0, 0]),\n mesh(cyl(0.08, 0.08, 0.58, 8), steel, [0.04, 0, 0], [0, 0, R]),\n mesh(new T.ConeGeometry(0.08, 0.2, 8), steel, [-0.35, 0, 0], [0, 0, R]),\n ...[-0.15, 0.05, 0.2].map((x) => mesh(cyl(0.1, 0.1, 0.04, 8), metal(0x8d9096), [x, 0, 0], [0, 0, R])),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `nails`.\n */\nexport const nails: ItemModelBuilder = ({ T, mesh, cyl, G, metal }) => {\n const R = Math.PI / 2\n const steel = metal(0x8d9096)\n const nail = (y: number, z: number, direction: number) => [\n mesh(cyl(0.1, 0.1, 0.04, 8), steel, [direction * 0.63, y, z], [0, 0, R]),\n mesh(cyl(0.035, 0.035, 1.1, 6), steel, [direction * 0.06, y, z], [0, 0, R]),\n mesh(new T.ConeGeometry(0.035, 0.16, 6), steel, [-direction * 0.57, y, z], [0, 0, direction * R]),\n ]\n return G(...nail(-0.2, -0.15, 1), ...nail(-0.2, 0.15, -1), ...nail(0.2, -0.15, -1), ...nail(0.2, 0.15, 1))\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `raffia_sack`.\n */\nexport const raffiaSack: ItemModelBuilder = ({ mesh, bx, G, cloth }) => {\n return G(\n mesh(bx(3.98, 0.18, 2.94), cloth(0xd9cfa8)),\n mesh(bx(4.0, 0.2, 0.14), cloth(0xb8ad84), [0, 0, 1.43]),\n mesh(bx(4.0, 0.2, 0.14), cloth(0xb8ad84), [0, 0, -1.43]),\n mesh(bx(0.12, 0.2, 2.7), cloth(0x3b6ea5), [1.0, 0, 0]),\n mesh(bx(0.12, 0.2, 2.7), cloth(0x3b6ea5), [-1.0, 0, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `scrap_metal`.\n */\nexport const scrapMetal: ItemModelBuilder = ({ mesh, bx, cyl, G, metal }) => {\n const R = Math.PI / 2\n return G(\n mesh(bx(2.0, 0.08, 1.1), metal(0x6e5a4a), [0, -0.36, -0.15]),\n mesh(bx(0.9, 0.5, 0.7), metal(0x7a4a2c), [0.55, -0.07, 0.15]),\n mesh(cyl(0.17, 0.17, 1.5, 8), metal(0x7a7f84), [-0.5, -0.15, 0], [R, 0, 0]),\n mesh(bx(1.2, 0.07, 0.9), metal(0x8a8f94), [0.1, 0.2, 0.05], [0, 0.4, 0.15]),\n mesh(cyl(0.32, 0.32, 0.1, 10), metal(0x4b4f54), [-0.4, 0.35, 0.15]),\n mesh(cyl(0.1, 0.1, 0.11, 6), metal(0x1c1d1f), [-0.4, 0.35, 0.15]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `bricks`.\n */\nexport const bricks: ItemModelBuilder = ({ mesh, bx, G, M }) => {\n const clay = M(0xa5532f, 'wood', { roughness: 0.95 })\n const clayDark = M(0x974a2b, 'wood', { roughness: 0.95 })\n const mortar = M(0xb9b2a4, 'wood', { roughness: 0.95 })\n return G(\n mesh(bx(1.4, 0.9, 2.9), clay, [-0.25, -0.45, 0]),\n mesh(bx(1.4, 0.9, 2.9), clayDark, [0.25, 0.45, 0]),\n mesh(bx(0.35, 0.02, 1.4), M(0x6e3320, 'wood', { roughness: 0.95 }), [-0.7, 0.005, 0]),\n mesh(bx(0.02, 0.5, 1.2), mortar, [0.951, 0.45, 0.2]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `rag`.\n */\nexport const rag: ItemModelBuilder = ({ mesh, bx, G, cloth }) => {\n const base = cloth(0xa8473a)\n const fringe = cloth(0xc47d6f)\n return G(\n mesh(bx(2.0, 0.1, 1.8), base, [0, -0.076, 0]),\n mesh(bx(1.7, 0.09, 1.5), cloth(0x9a3f33), [0.1, 0.02, 0], [0, 0.1, 0]),\n mesh(bx(1.5, 0.056, 1.2), cloth(0xb4574a), [0, 0.093, 0]),\n mesh(bx(0.2, 0.02, 1.7), fringe, [1.0, -0.076, 0]),\n mesh(bx(0.2, 0.02, 1.7), fringe, [-1.0, -0.076, 0]),\n mesh(bx(0.3, 0.006, 1.1), cloth(0x6b2a22), [0, 0.123, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `rebar`.\n */\nexport const rebar: ItemModelBuilder = ({ mesh, lathe, cyl, bx, G, metal }) => {\n const R = Math.PI / 2\n const profile: Array<[number, number]> = [\n [0, -6.33], [0.065, -6.33], [0.065, -5.57], [0.08, -5.55], [0.08, -5.45], [0.065, -5.43], [0.065, -4.57], [0.08, -4.55], [0.08, -4.45], [0.065, -4.43], [0.065, -3.57], [0.08, -3.55], [0.08, -3.45], [0.065, -3.43], [0.065, -2.57], [0.08, -2.55], [0.08, -2.45], [0.065, -2.43], [0.065, -1.57], [0.08, -1.55], [0.08, -1.45], [0.065, -1.43], [0.065, -0.57], [0.08, -0.55], [0.08, -0.45], [0.065, -0.43], [0.065, 0.43], [0.08, 0.45], [0.08, 0.55], [0.065, 0.57], [0.065, 1.43], [0.08, 1.45], [0.08, 1.55], [0.065, 1.57], [0.065, 2.43], [0.08, 2.45], [0.08, 2.55], [0.065, 2.57], [0.065, 3.43], [0.08, 3.45], [0.08, 3.55], [0.065, 3.57], [0.065, 4.43], [0.08, 4.45], [0.08, 4.55], [0.065, 4.57], [0.065, 5.43], [0.08, 5.45], [0.08, 5.55], [0.065, 5.57], [0.065, 6.33], [0, 6.33],\n ]\n return G(\n mesh(lathe(profile, 8), metal(0x585c62), [0, 0, 0], [0, 0, R]),\n mesh(bx(12.4, 0.03, 0.03), metal(0x484c52), [0, 0, 0.065]),\n mesh(cyl(0.062, 0.062, 0.04, 8), metal(0x9a9ea3), [6.33, 0, 0], [0, 0, R]),\n mesh(cyl(0.062, 0.062, 0.04, 8), metal(0x9a9ea3), [-6.33, 0, 0], [0, 0, R]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n * It draws in the units of the builder; `data/models.json` gives the scale to metres of the item `lubricant_spray`.\n */\nexport const lubricantSpray: ItemModelBuilder = ({ mesh, lathe, cyl, bx, G, metal, plastic, paper }) => {\n const body = lathe([[0, -0.85], [0.22, -0.85], [0.25, -0.8], [0.25, 0.35], [0.2, 0.55], [0.12, 0.65]], 12)\n const black = plastic(0x1b1c1d)\n return G(\n mesh(body, metal(0xb4b8bb)),\n mesh(cyl(0.252, 0.252, 0.6, 12), paper(0xd9a21f), [0, -0.2, 0]),\n mesh(cyl(0.08, 0.08, 0.12, 8), metal(0x6f7377), [0, 0.7, 0]),\n mesh(cyl(0.12, 0.12, 0.1, 12), black, [0, 0.8, 0]),\n mesh(bx(0.06, 0.05, 0.12), black, [0, 0.8, 0.14]),\n mesh(cyl(0.1, 0.1, 0.1, 12), plastic(0xd0342c), [0, 0.54, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const armyCamouflageUniform: ItemModelBuilder = ({ mesh, bx, G, cloth }) => {\n const base = cloth(0x59623f)\n const dark = cloth(0x363d28)\n const tan = cloth(0x8a7f55)\n return G(\n mesh(bx(0.24, 0.08, 0.32), base, [0, 0.04, 0]),\n mesh(bx(0.08, 0.07, 0.2), base, [-0.16, 0.035, -0.06]),\n mesh(bx(0.08, 0.07, 0.2), base, [0.16, 0.035, -0.06]),\n mesh(bx(0.08, 0.074, 0.024), dark, [-0.16, 0.037, 0.05]),\n mesh(bx(0.08, 0.074, 0.024), dark, [0.16, 0.037, 0.05]),\n mesh(bx(0.08, 0.01, 0.045), dark, [-0.04, 0.09, -0.135]),\n mesh(bx(0.08, 0.01, 0.045), dark, [0.04, 0.09, -0.135]),\n mesh(bx(0.09, 0.081, 0.09), dark, [-0.06, 0.04, -0.03]),\n mesh(bx(0.1, 0.081, 0.07), tan, [0.07, 0.04, 0.05]),\n mesh(bx(0.07, 0.081, 0.08), dark, [0.04, 0.04, -0.09]),\n mesh(bx(0.1, 0.081, 0.06), tan, [-0.05, 0.04, 0.11]),\n mesh(bx(0.06, 0.1, 0.06), tan, [-0.07, 0.05, -0.1]),\n mesh(bx(0.05, 0.1, 0.07), dark, [0.08, 0.05, -0.12]),\n mesh(bx(0.05, 0.085, 0.05), tan, [0.0, 0.0425, 0.13]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const backpack: ItemModelBuilder = ({ mesh, bx, G, cloth, plastic }) => {\n const main = cloth(0x2f4a6b)\n const trim = cloth(0x1e2a3a)\n return G(\n mesh(bx(0.3, 0.28, 0.12), main, [0, 0.14, -0.02]),\n mesh(bx(0.24, 0.14, 0.06), trim, [0, 0.1, 0.07]),\n mesh(bx(0.05, 0.22, 0.02), trim, [-0.08, 0.13, -0.09]),\n mesh(bx(0.05, 0.22, 0.02), trim, [0.08, 0.13, -0.09]),\n mesh(bx(0.07, 0.02, 0.02), trim, [0, 0.29, -0.02]),\n mesh(bx(0.2, 0.012, 0.125), plastic(0x15181c), [0, 0.2, -0.02]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const ballisticVest: ItemModelBuilder = ({ mesh, bx, G, cloth, metal, plastic }) => {\n const shell = cloth(0x4b5439)\n const strap = cloth(0x3a4130)\n const plate = plastic(0x2a2d2a)\n const buckle = metal(0x8a8d90)\n return G(\n mesh(bx(0.34, 0.045, 0.34), shell, [0, 0.0225, 0.055]),\n mesh(bx(0.08, 0.022, 0.1), strap, [-0.1, 0.011, -0.175]),\n mesh(bx(0.08, 0.022, 0.1), strap, [0.1, 0.011, -0.175]),\n mesh(bx(0.03, 0.04, 0.22), strap, [-0.185, 0.02, 0.1]),\n mesh(bx(0.03, 0.04, 0.22), strap, [0.185, 0.02, 0.1]),\n mesh(bx(0.24, 0.025, 0.24), plate, [0, 0.0575, 0.03]),\n mesh(bx(0.07, 0.02, 0.05), strap, [-0.1, 0.055, 0.19]),\n mesh(bx(0.07, 0.02, 0.05), strap, [0, 0.055, 0.19]),\n mesh(bx(0.07, 0.02, 0.05), strap, [0.1, 0.055, 0.19]),\n mesh(bx(0.03, 0.01, 0.02), buckle, [-0.1, 0.027, -0.215]),\n mesh(bx(0.03, 0.01, 0.02), buckle, [0.1, 0.027, -0.215]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const battery9V: ItemModelBuilder = ({ mesh, cyl, bx, G, metal, plastic }) =>\n G(\n mesh(bx(0.026, 0.043, 0.018), plastic(0x1f2124), [0, 0.0215, 0]),\n mesh(bx(0.0262, 0.012, 0.0182), metal(0xb4b7ba), [0, 0.037, 0]),\n mesh(cyl(0.0045, 0.0045, 0.006, 8), metal(0xc8cacc), [0.006, 0.046, 0]),\n mesh(cyl(0.0035, 0.0035, 0.006, 8), metal(0xc8cacc), [-0.006, 0.046, 0]),\n )\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const beanSeeds: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const width = 0.1\n const height = 0.15\n const depth = 0.02\n const group = G()\n group.add(mesh(bx(width, height, depth * 0.5), paper(0xe8dfc8)))\n group.add(mesh(bx(width * 0.9, height * 0.85, depth * 0.9), paper(0xefe7d3), [0, -height * 0.03, 0]))\n group.add(mesh(bx(width, height * 0.08, depth * 0.3), paper(0xcfc4a8), [0, height * 0.46, 0]))\n ;[1, -1].forEach((side) => group.add(mesh(bx(width * 0.7, height * 0.4, depth * 0.1), paper(0x8a5a3a), [0, -height * 0.05, side * depth * 0.45])))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const beekeeperSuit: ItemModelBuilder = ({ mesh, bx, cyl, G, cloth, metal }) => {\n const white = cloth(0xe3e1d6)\n const grey = cloth(0xb9b7ac)\n const straw = cloth(0xc9b27a)\n const veil = cloth(0x2e2f2c)\n return G(\n mesh(bx(0.2, 0.07, 0.33), white, [0, 0.035, 0]),\n mesh(bx(0.1, 0.06, 0.22), white, [-0.15, 0.03, -0.055]),\n mesh(bx(0.1, 0.06, 0.22), white, [0.15, 0.03, -0.055]),\n mesh(bx(0.1, 0.064, 0.025), grey, [-0.15, 0.032, 0.0675]),\n mesh(bx(0.1, 0.064, 0.025), grey, [0.15, 0.032, 0.0675]),\n mesh(bx(0.2, 0.072, 0.02), grey, [0, 0.036, 0.04]),\n mesh(bx(0.2, 0.072, 0.025), grey, [0, 0.036, 0.1525]),\n mesh(bx(0.012, 0.0702, 0.3), metal(0x9a9da0), [0, 0.0351, 0.01]),\n mesh(cyl(0.078, 0.078, 0.01, 14), straw, [0, 0.075, -0.085]),\n mesh(cyl(0.04, 0.045, 0.02, 12), straw, [0, 0.09, -0.085]),\n mesh(cyl(0.062, 0.062, 0.006, 12), veil, [0, 0.067, -0.085]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const candles: ItemModelBuilder = ({ mesh, cyl, G, cloth, plastic }) =>\n G(\n mesh(cyl(0.03, 0.03, 0.11, 16), plastic(0xe9e2cc), [0, 0.055, 0]),\n mesh(cyl(0.023, 0.023, 0.002, 16), plastic(0xcfc7ad), [0, 0.109, 0]),\n mesh(cyl(0.0015, 0.0015, 0.011, 4), cloth(0x2a2420), [0, 0.1145, 0]),\n )\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const carAlarmRemote: ItemModelBuilder = ({ mesh, bx, torus, G, plastic, metal }) => {\n const button = plastic(0x6f747a)\n return G(\n mesh(bx(0.04, 0.062, 0.01), plastic(0x1c1e21), [0, 0.031, -0.0005]),\n mesh(bx(0.014, 0.012, 0.002), button, [0, 0.048, 0.0055]),\n mesh(bx(0.014, 0.012, 0.002), button, [-0.01, 0.028, 0.0055]),\n mesh(bx(0.014, 0.012, 0.002), plastic(0xa3322a), [0.01, 0.028, 0.0055]),\n mesh(torus(0.0045, 0.0012), metal(0xb4b7ba), [0, 0.0645, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const carBattery12V: ItemModelBuilder = ({ mesh, cyl, bx, G, metal, plastic, paper }) => {\n const shell = plastic(0x23262a)\n return G(\n mesh(bx(0.24, 0.15, 0.17), shell, [0, 0.075, 0]),\n mesh(bx(0.2, 0.01, 0.04), plastic(0x3a3e44), [0, 0.155, -0.04]),\n mesh(bx(0.18, 0.07, 0.005), paper(0xcfc9b4), [0, 0.07, 0.085]),\n mesh(cyl(0.014, 0.014, 0.04, 8), metal(0x8d9096), [-0.08, 0.17, 0.05]),\n mesh(cyl(0.014, 0.014, 0.04, 8), metal(0x8d9096), [0.08, 0.17, 0.05]),\n mesh(bx(0.1, 0.025, 0.02), shell, [0, 0.1625, -0.07]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const carKey: ItemModelBuilder = ({ mesh, bx, G, metal, plastic }) => {\n const fob = plastic(0x1f2124)\n const button = plastic(0x8a8d90)\n const blade = metal(0xb5b8bb)\n const eyelet = metal(0x6f7275)\n return G(\n mesh(bx(0.038, 0.045, 0.0136), fob, [-0.011, 0.0225, 0]),\n mesh(bx(0.014, 0.008, 0.015), button, [-0.011, 0.034, 0]),\n mesh(bx(0.014, 0.008, 0.015), button, [-0.011, 0.0225, 0]),\n mesh(bx(0.014, 0.008, 0.015), button, [-0.011, 0.011, 0]),\n mesh(bx(0.006, 0.012, 0.0146), eyelet, [-0.027, 0.0385, 0]),\n mesh(bx(0.004, 0.016, 0.006), eyelet, [0.0095, 0.0225, 0]),\n mesh(bx(0.02, 0.012, 0.003), blade, [0.02, 0.0225, 0]),\n mesh(bx(0.004, 0.004, 0.003), blade, [0.016, 0.0145, 0]),\n mesh(bx(0.004, 0.004, 0.003), blade, [0.024, 0.0145, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const cash: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const bills = paper(0x6f8f62)\n const group = G()\n group.add(mesh(bx(0.0625, 0.01, 0.065), bills, [-0.04625, 0.005, 0]))\n group.add(mesh(bx(0.03, 0.01, 0.065), paper(0xd8cfa8), [0, 0.005, 0]))\n group.add(mesh(bx(0.0625, 0.01, 0.065), bills, [0.04625, 0.005, 0]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const cassavaCuttings: ItemModelBuilder = ({ mesh, cyl, G, wood }) => {\n const stick = wood(0x9b7b55)\n const group = G()\n const rows: ReadonlyArray<readonly [number, readonly number[]]> = [[0.02, [-0.04, 0, 0.04]], [0.06, [-0.02, 0.02]], [0.1, [-0.04, 0, 0.04]]]\n rows.forEach(([y, zs]) => zs.forEach((z) => group.add(mesh(cyl(0.02, 0.02, 0.7, 8), stick, [0, y, z], [0, 0, Math.PI / 2]))))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const cbRadio: ItemModelBuilder = ({ M, mesh, cyl, bx, G, metal, plastic }) => {\n const quarter = Math.PI / 2\n const group = G(\n mesh(bx(0.22, 0.006, 0.194), metal(0x1f2124), [0, 0.003, -0.003]),\n mesh(bx(0.25, 0.068, 0.194), metal(0x35383b), [0, 0.04, -0.003]),\n mesh(bx(0.06, 0.02, 0.002), M(0xd9a441, 'glass', { emissive: 0x6a4a10, emissiveIntensity: 0.6 }), [0.06, 0.052, 0.095]),\n mesh(cyl(0.016, 0.016, 0.006, 10), plastic(0x15171a), [-0.08, 0.04, 0.097], [quarter, 0, 0]),\n mesh(cyl(0.016, 0.016, 0.006, 10), plastic(0x15171a), [-0.03, 0.04, 0.097], [quarter, 0, 0]),\n mesh(cyl(0.008, 0.008, 0.006, 8), metal(0x8d9094), [0.09, 0.025, 0.097], [quarter, 0, 0]),\n )\n for (const z of [-0.07, -0.045, -0.02]) group.add(mesh(bx(0.2, 0.006, 0.01), metal(0x1f2124), [0, 0.077, z]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const cellKey: ItemModelBuilder = ({ mesh, bx, cyl, G, metal }) => {\n const iron = metal(0x3b3b3d)\n const parts = [\n mesh(cyl(0.0035, 0.0035, 0.075, 8), iron, [0.0075, 0.015, 0], [0, 0, Math.PI / 2]),\n mesh(cyl(0.006, 0.006, 0.008, 8), iron, [-0.03, 0.015, 0], [Math.PI / 2, 0, 0]),\n mesh(bx(0.014, 0.012, 0.007), iron, [0.053, 0.009, 0]),\n mesh(bx(0.004, 0.005, 0.007), iron, [0.0485, 0.0025, 0]),\n mesh(bx(0.004, 0.005, 0.007), iron, [0.0575, 0.0025, 0]),\n ]\n const segments = 8\n for (let index = 0; index < segments; index++) {\n const angle = (2 * Math.PI * index) / segments\n parts.push(mesh(bx(0.0105, 0.005, 0.008), iron, [-0.045 + 0.0125 * Math.cos(angle), 0.015 + 0.0125 * Math.sin(angle), 0], [0, 0, angle + Math.PI / 2]))\n }\n return G(...parts)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const charcoalBag: ItemModelBuilder = ({ mesh, bx, G, paper, plastic }) => {\n const sack = paper(0x6b5a45)\n return G(\n mesh(bx(0.3, 0.1, 0.34), sack, [0, 0.05, 0]),\n mesh(bx(0.26, 0.12, 0.03), sack, [0, 0.06, 0.185]),\n mesh(bx(0.26, 0.12, 0.03), sack, [0, 0.06, -0.185]),\n mesh(bx(0.24, 0.02, 0.3), sack, [0, 0.11, 0]),\n mesh(bx(0.2, 0.004, 0.16), plastic(0x24262a), [0, 0.118, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const cigarettes: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const group = G()\n group.add(mesh(bx(0.055, 0.045, 0.022), paper(0xe8e4da), [0, 0.0225, 0]))\n group.add(mesh(bx(0.055, 0.012, 0.022), paper(0xb08a3a), [0, 0.051, 0]))\n group.add(mesh(bx(0.055, 0.031, 0.022), paper(0xa23b2e), [0, 0.0725, 0]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const cityMap: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const group = G()\n group.add(mesh(bx(0.11, 0.003, 0.25), paper(0xc9b98f), [0, 0.0015, 0]))\n group.add(mesh(bx(0.108, 0.004, 0.24), paper(0xe4dcc2), [0, 0.005, 0]))\n group.add(mesh(bx(0.11, 0.003, 0.18), paper(0xc9b98f), [0, 0.0085, 0.035]))\n group.add(mesh(bx(0.11, 0.003, 0.07), paper(0xa23b2e), [0, 0.0085, -0.09]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const combatBoots: ItemModelBuilder = ({ mesh, bx, cyl, G, cloth, plastic }) => {\n const leather = cloth(0x1f1e1c)\n const sole = plastic(0x111111)\n const lace = cloth(0x3a3835)\n const boot = (z: number) => [\n mesh(bx(0.3, 0.02, 0.105), sole, [0, 0.01, z]),\n mesh(bx(0.07, 0.016, 0.105), sole, [-0.105, 0.028, z]),\n mesh(bx(0.2, 0.06, 0.095), leather, [0.04, 0.05, z]),\n mesh(cyl(0.0475, 0.0475, 0.06, 8), leather, [0.1025, 0.05, z]),\n mesh(cyl(0.045, 0.05, 0.18, 8), leather, [-0.085, 0.11, z]),\n mesh(bx(0.012, 0.004, 0.07), lace, [0.0, 0.082, z]),\n mesh(bx(0.012, 0.004, 0.07), lace, [0.035, 0.082, z]),\n ]\n return G(...boot(-0.0575), ...boot(0.0575))\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const coolerBox: ItemModelBuilder = ({ mesh, bx, G, plastic }) => {\n const body = plastic(0x2f5d8a)\n const lid = plastic(0xe6e6e0)\n return G(\n mesh(bx(0.32, 0.19, 0.23), body, [0, 0.095, 0]),\n mesh(bx(0.32, 0.05, 0.23), lid, [0, 0.215, 0]),\n mesh(bx(0.14, 0.01, 0.04), lid, [0, 0.245, 0]),\n mesh(bx(0.06, 0.05, 0.01), lid, [-0.1, 0.18, 0.11]),\n mesh(bx(0.06, 0.05, 0.01), lid, [0.1, 0.18, 0.11]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const cornSeeds: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const width = 0.1\n const height = 0.15\n const depth = 0.02\n const group = G()\n group.add(mesh(bx(width, height, depth * 0.5), paper(0xe8dfc8)))\n group.add(mesh(bx(width * 0.9, height * 0.85, depth * 0.9), paper(0xefe7d3), [0, -height * 0.03, 0]))\n group.add(mesh(bx(width, height * 0.08, depth * 0.3), paper(0xcfc4a8), [0, height * 0.46, 0]))\n ;[1, -1].forEach((side) => group.add(mesh(bx(width * 0.7, height * 0.4, depth * 0.1), paper(0xe0b830), [0, -height * 0.05, side * depth * 0.45])))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const crossbodyBag: ItemModelBuilder = ({ mesh, bx, G, cloth, metal }) => {\n const body = cloth(0x3b3f45)\n const strap = cloth(0x25272b)\n return G(\n mesh(bx(0.25, 0.17, 0.07), body, [0, 0.085, -0.005]),\n mesh(bx(0.25, 0.1, 0.01), strap, [0, 0.12, 0.035]),\n mesh(bx(0.03, 0.03, 0.01), metal(0xb0b2b5), [0, 0.085, 0.035]),\n mesh(bx(0.012, 0.03, 0.012), strap, [-0.11, 0.185, 0]),\n mesh(bx(0.012, 0.03, 0.012), strap, [0.11, 0.185, 0]),\n mesh(bx(0.22, 0.012, 0.012), strap, [0, 0.194, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const deliveryBag: ItemModelBuilder = ({ mesh, bx, G, cloth, plastic }) => {\n const shell = cloth(0x8f3b2a)\n const trim = cloth(0x2b2b2d)\n return G(\n mesh(bx(0.48, 0.38, 0.4), shell, [0, 0.19, -0.01]),\n mesh(bx(0.48, 0.04, 0.4), trim, [0, 0.4, -0.01]),\n mesh(bx(0.36, 0.2, 0.02), trim, [0, 0.14, 0.2]),\n mesh(bx(0.24, 0.03, 0.06), trim, [0, 0.435, -0.01]),\n mesh(bx(0.05, 0.03, 0.01), plastic(0xbdbdb5), [0, 0.37, 0.2]),\n mesh(bx(0.02, 0.38, 0.4), trim, [-0.1, 0.19, -0.01]),\n mesh(bx(0.02, 0.38, 0.4), trim, [0.1, 0.19, -0.01]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const denimJacket: ItemModelBuilder = ({ mesh, bx, G, cloth, metal }) => {\n const denim = cloth(0x3f5a85)\n const dark = cloth(0x33496d)\n const stitch = cloth(0xc9a45c)\n const button = metal(0xa9a49a)\n return G(\n mesh(bx(0.26, 0.07, 0.3), denim, [0, 0.035, 0]),\n mesh(bx(0.07, 0.06, 0.18), dark, [-0.165, 0.03, -0.06]),\n mesh(bx(0.07, 0.06, 0.18), dark, [0.165, 0.03, -0.06]),\n mesh(bx(0.07, 0.066, 0.02), denim, [-0.165, 0.033, 0.04]),\n mesh(bx(0.07, 0.066, 0.02), denim, [0.165, 0.033, 0.04]),\n mesh(bx(0.075, 0.01, 0.045), dark, [-0.04, 0.075, -0.13]),\n mesh(bx(0.075, 0.01, 0.045), dark, [0.04, 0.075, -0.13]),\n mesh(bx(0.012, 0.0702, 0.26), stitch, [0, 0.0351, 0.02]),\n mesh(bx(0.05, 0.005, 0.045), dark, [-0.075, 0.0725, -0.04]),\n mesh(bx(0.05, 0.005, 0.045), dark, [0.075, 0.0725, -0.04]),\n mesh(bx(0.008, 0.0745, 0.008), button, [0, 0.03725, -0.04]),\n mesh(bx(0.008, 0.0745, 0.008), button, [0, 0.03725, 0.03]),\n mesh(bx(0.008, 0.0745, 0.008), button, [0, 0.03725, 0.1]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const diesel: ItemModelBuilder = ({ mesh, cyl, G, plastic, paper }) => {\n const bottle = plastic(0xb89a3c)\n const cap = plastic(0x1c1d1f)\n return G(\n mesh(cyl(0.045, 0.045, 0.19, 12), bottle, [0, 0.095, 0]),\n mesh(cyl(0.0455, 0.0455, 0.07, 12), paper(0xd9d4c4), [0, 0.095, 0]),\n mesh(cyl(0.014, 0.045, 0.04, 12), bottle, [0, 0.21, 0]),\n mesh(cyl(0.014, 0.014, 0.01, 8), bottle, [0, 0.235, 0]),\n mesh(cyl(0.018, 0.018, 0.02, 8), cap, [0, 0.25, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const diyMagazine: ItemModelBuilder = ({ mesh, bx, G, paper }) =>\n G(\n mesh(bx(0.21, 0.28, 0.0078), paper(0xe9e6dc), [0, 0.14, 0]),\n mesh(bx(0.21, 0.28, 0.0001), paper(0xd9a441), [0, 0.14, 0.0039]),\n mesh(bx(0.21, 0.28, 0.0001), paper(0xd9a441), [0, 0.14, -0.0039]),\n mesh(bx(0.19, 0.04, 0.0002), paper(0x2f3f52), [0, 0.255, 0.004]),\n mesh(bx(0.15, 0.13, 0.0002), paper(0x8a6a45), [0, 0.13, 0.004]),\n mesh(bx(0.19, 0.012, 0.0002), paper(0xa3322a), [0, 0.04, 0.004]),\n mesh(bx(0.003, 0.28, 0.0008), paper(0x1f2124), [-0.0975, 0.14, 0]),\n )\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const dogTag: ItemModelBuilder = ({ mesh, cyl, bx, torus, G, metal }) => {\n const steel = metal(0xa7abb0)\n const group = G()\n group.add(mesh(bx(0.03, 0.003, 0.02), steel, [0, 0.0015, 0]))\n group.add(mesh(cyl(0.015, 0.015, 0.003, 8), steel, [0, 0.0015, 0.01]))\n group.add(mesh(cyl(0.015, 0.015, 0.003, 8), steel, [0, 0.0015, -0.01]))\n group.add(mesh(torus(0.0065, 0.0015), metal(0x6c6f75), [0, 0.0015, 0.0175], [Math.PI / 2, 0, 0]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const electricFenceEnergizer: ItemModelBuilder = ({ M, mesh, cyl, bx, G, metal, plastic }) => {\n const quarter = Math.PI / 2\n const shell = plastic(0x34523b)\n const dark = plastic(0x1f2421)\n return G(\n mesh(bx(0.25, 0.17, 0.146), shell, [0, 0.1, 0]),\n mesh(bx(0.09, 0.06, 0.004), dark, [-0.04, 0.11, 0.075]),\n mesh(bx(0.06, 0.03, 0.004), M(0x9fd18b, 'glass', { emissive: 0x2f5a2a, emissiveIntensity: 0.5 }), [-0.04, 0.12, 0.0752]),\n mesh(cyl(0.016, 0.016, 0.004, 12), dark, [0.07, 0.115, 0.075], [quarter, 0, 0]),\n mesh(cyl(0.006, 0.006, 0.004, 8), M(0xb3261e, 'plastic', { emissive: 0x5a0f0c, emissiveIntensity: 0.6 }), [0.07, 0.07, 0.075], [quarter, 0, 0]),\n mesh(bx(0.13, 0.01, 0.016), metal(0x6d7073), [0, 0.195, 0]),\n mesh(bx(0.01, 0.005, 0.01), metal(0x6d7073), [-0.06, 0.1875, 0]),\n mesh(bx(0.01, 0.005, 0.01), metal(0x6d7073), [0.06, 0.1875, 0]),\n mesh(cyl(0.008, 0.008, 0.015, 8), metal(0xb4b7ba), [-0.07, 0.0075, 0]),\n mesh(cyl(0.008, 0.008, 0.015, 8), metal(0xb4b7ba), [0, 0.0075, 0]),\n mesh(cyl(0.008, 0.008, 0.015, 8), metal(0xb4b7ba), [0.07, 0.0075, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const extensionCord: ItemModelBuilder = ({ mesh, cyl, bx, G, plastic }) => {\n const flange = plastic(0x3a3b3c)\n const plugBody = plastic(0xd8d4c8)\n return G(\n mesh(cyl(0.115, 0.115, 0.008, 14), flange, [0, 0.004, 0]),\n mesh(cyl(0.115, 0.115, 0.008, 14), flange, [0, 0.076, 0]),\n mesh(cyl(0.1, 0.1, 0.064, 14), plastic(0xc7691a), [0, 0.04, 0]),\n mesh(bx(0.012, 0.03, 0.025), plugBody, [0.108, 0.04, 0.02]),\n mesh(bx(0.012, 0.03, 0.04), plugBody, [-0.108, 0.04, -0.02]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const fannyPack: ItemModelBuilder = ({ mesh, bx, G, cloth, plastic }) => {\n const main = cloth(0x3a3d42)\n const trim = cloth(0x25272b)\n return G(\n mesh(bx(0.17, 0.1, 0.1), main, [0, 0.05, -0.01]),\n mesh(bx(0.15, 0.06, 0.02), trim, [0, 0.05, 0.05]),\n mesh(bx(0.04, 0.03, 0.012), trim, [-0.105, 0.05, -0.054]),\n mesh(bx(0.04, 0.03, 0.012), trim, [0.105, 0.05, -0.054]),\n mesh(bx(0.03, 0.03, 0.015), plastic(0x15181c), [0.0, 0.07, 0.05]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const farmersAlmanac: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const cover = paper(0x3f5a3a)\n return G(\n mesh(bx(0.1445, 0.206, 0.0116), paper(0xe4dcc6), [0.00025, 0.105, 0]),\n mesh(bx(0.15, 0.21, 0.0014), cover, [0, 0.105, 0.0065]),\n mesh(bx(0.15, 0.21, 0.0014), cover, [0, 0.105, -0.0065]),\n mesh(bx(0.003, 0.21, 0.015), cover, [-0.0735, 0.105, 0]),\n mesh(bx(0.09, 0.04, 0.0004), paper(0xe4dcc6), [0.005, 0.16, 0.0074]),\n mesh(bx(0.1, 0.004, 0.0004), paper(0xc9b36a), [0.005, 0.1, 0.0074]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const fertilizerBag: ItemModelBuilder = ({ mesh, bx, G, cloth, paper }) => {\n const sack = cloth(0xb5a47a)\n const group = G()\n group.add(mesh(bx(0.45, 0.11, 0.3), sack, [0, 0.055, 0]))\n group.add(mesh(bx(0.4, 0.01, 0.26), sack, [0, 0.115, 0]))\n group.add(mesh(bx(0.018, 0.11, 0.3), cloth(0x8f8161), [-0.216, 0.055, 0]))\n group.add(mesh(bx(0.018, 0.11, 0.3), cloth(0x8f8161), [0.216, 0.055, 0]))\n group.add(mesh(bx(0.2, 0.01, 0.12), paper(0x4f7a45), [0, 0.125, 0]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const firefighterSuit: ItemModelBuilder = ({ mesh, bx, G, cloth, plastic }) => {\n const shell = cloth(0x6b5a34)\n const dark = cloth(0x4d4025)\n const reflective = plastic(0xcfd2c8)\n return G(\n mesh(bx(0.26, 0.09, 0.4), shell, [-0.14, 0.045, 0]),\n mesh(bx(0.26, 0.09, 0.4), shell, [0.14, 0.045, 0]),\n mesh(bx(0.24, 0.092, 0.03), reflective, [-0.14, 0.046, 0.12]),\n mesh(bx(0.24, 0.092, 0.03), reflective, [0.14, 0.046, 0.12]),\n mesh(bx(0.1, 0.092, 0.1), dark, [-0.14, 0.046, -0.04]),\n mesh(bx(0.1, 0.092, 0.1), dark, [0.14, 0.046, -0.04]),\n mesh(bx(0.34, 0.09, 0.38), shell, [0, 0.135, 0]),\n mesh(bx(0.1, 0.08, 0.3), shell, [-0.225, 0.13, -0.04]),\n mesh(bx(0.1, 0.08, 0.3), shell, [0.225, 0.13, -0.04]),\n mesh(bx(0.1, 0.084, 0.03), dark, [-0.225, 0.132, 0.095]),\n mesh(bx(0.1, 0.084, 0.03), dark, [0.225, 0.132, 0.095]),\n mesh(bx(0.342, 0.092, 0.03), reflective, [0, 0.135, 0.12]),\n mesh(bx(0.342, 0.092, 0.03), reflective, [0, 0.135, 0.04]),\n mesh(bx(0.1, 0.084, 0.03), reflective, [-0.225, 0.132, 0.03]),\n mesh(bx(0.1, 0.084, 0.03), reflective, [0.225, 0.132, 0.03]),\n mesh(bx(0.1, 0.02, 0.05), dark, [-0.045, 0.19, -0.16]),\n mesh(bx(0.1, 0.02, 0.05), dark, [0.045, 0.19, -0.16]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const fishingNet: ItemModelBuilder = ({ mesh, bx, G, cloth }) => {\n const cord = cloth(0x6f7a5a)\n const group = G()\n ;[0.003, 0.147].forEach((y) => {\n ;[-0.147, -0.05, 0.05, 0.147].forEach((z) => group.add(mesh(bx(0.35, 0.006, 0.006), cord, [0, y, z])))\n ;[-0.172, -0.086, 0, 0.086, 0.172].forEach((x) => group.add(mesh(bx(0.006, 0.006, 0.3), cord, [x, y, 0])))\n })\n ;[-0.172, 0.172].forEach((x) => [-0.147, 0.147].forEach((z) => group.add(mesh(bx(0.006, 0.15, 0.006), cord, [x, 0.075, z]))))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const fishingRod: ItemModelBuilder = ({ mesh, cyl, bx, G, plastic, wood, metal }) => {\n const group = G()\n group.add(mesh(cyl(0.02, 0.02, 0.25, 8), wood(0xc2a06a), [-0.775, 0, 0], [0, 0, Math.PI / 2]))\n group.add(mesh(cyl(0.004, 0.009, 1.55, 8), plastic(0x2f3a35), [0.125, 0, 0], [0, 0, -Math.PI / 2]))\n group.add(mesh(cyl(0.017, 0.017, 0.012, 12), metal(0x8d9096), [-0.62, 0, 0], [Math.PI / 2, 0, 0]))\n ;[-0.2, 0.2, 0.55, 0.78].forEach((x) => group.add(mesh(bx(0.004, 0.014, 0.004), metal(0x8d9096), [x, 0.01, 0])))\n group.add(mesh(bx(0.012, 0.012, 0.012), metal(0x8d9096), [0.894, 0, 0]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const fishingTackleBox: ItemModelBuilder = ({ mesh, bx, G, plastic, metal }) => {\n const group = G()\n group.add(mesh(bx(0.3, 0.07, 0.18), plastic(0x3f6b4a), [0, 0.035, 0]))\n group.add(mesh(bx(0.3, 0.025, 0.18), plastic(0x4d7f5a), [0, 0.0825, 0]))\n group.add(mesh(bx(0.12, 0.005, 0.02), plastic(0x2c2c2c), [0, 0.0975, 0]))\n group.add(mesh(bx(0.03, 0.04, 0.004), metal(0x9a9da2), [-0.08, 0.07, 0.088]))\n group.add(mesh(bx(0.03, 0.04, 0.004), metal(0x9a9da2), [0.08, 0.07, 0.088]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const flipFlops: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic }) => {\n const sole = plastic(0x365d73)\n const strap = plastic(0x1f2326)\n const sandal = (z: number) => [\n mesh(cyl(0.5, 0.5, 0.02, 12), sole, [0.06, 0.01, z], [0, 0, 0], [0.17, 1, 0.105]),\n mesh(cyl(0.5, 0.5, 0.02, 12), sole, [-0.075, 0.01, z], [0, 0, 0], [0.14, 1, 0.09]),\n mesh(bx(0.06, 0.02, 0.07), sole, [-0.01, 0.01, z]),\n mesh(cyl(0.006, 0.006, 0.02, 6), strap, [0.1, 0.02, z]),\n mesh(bx(0.1, 0.008, 0.012), strap, [0.055, 0.024, z + 0.0225], [0, 0.4636, 0]),\n mesh(bx(0.1, 0.008, 0.012), strap, [0.055, 0.024, z - 0.0225], [0, -0.4636, 0]),\n ]\n return G(...sandal(-0.0625), ...sandal(0.0625))\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const foldingSolarPanel: ItemModelBuilder = ({ mesh, cyl, bx, G, cloth, glass, metal, plastic }) => {\n const group = G(\n mesh(bx(0.396, 0.296, 0.04), cloth(0x30343a), [0, 0.15, 0]),\n mesh(bx(0.38, 0.28, 0.004), glass(0x1d3557, 0.95), [0, 0.15, 0.023]),\n mesh(bx(0.15, 0.1, 0.01), cloth(0x252a2f), [0, 0.12, -0.02]),\n mesh(bx(0.002, 0.28, 0.0006), plastic(0x8d9aa8), [0, 0.15, 0.0253]),\n mesh(bx(0.002, 0.28, 0.0006), plastic(0x8d9aa8), [-0.095, 0.15, 0.0253]),\n mesh(bx(0.002, 0.28, 0.0006), plastic(0x8d9aa8), [0.095, 0.15, 0.0253]),\n )\n for (const [x, y] of [[-0.18, 0.03], [0.18, 0.03], [-0.18, 0.27], [0.18, 0.27]] as const) group.add(mesh(cyl(0.008, 0.008, 0.002, 6), metal(0xb4b7ba), [x, y, 0.024], [Math.PI / 2, 0, 0]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const gasCartridge: ItemModelBuilder = ({ mesh, cyl, G, metal, paper }) => {\n const can = metal(0x3b5f8a)\n return G(\n mesh(cyl(0.055, 0.055, 0.12, 12), can, [0, 0.06, 0]),\n mesh(cyl(0.0555, 0.0555, 0.04, 12), paper(0xd8d2c0), [0, 0.06, 0]),\n mesh(cyl(0.025, 0.055, 0.03, 12), can, [0, 0.135, 0]),\n mesh(cyl(0.02, 0.02, 0.015, 8), metal(0x8d9096), [0, 0.1575, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const gasoline: ItemModelBuilder = ({ mesh, cyl, G, plastic, paper }) => {\n const bottle = plastic(0xc9c6b8)\n const cap = plastic(0xa3322a)\n return G(\n mesh(cyl(0.045, 0.045, 0.19, 12), bottle, [0, 0.095, 0]),\n mesh(cyl(0.0455, 0.0455, 0.07, 12), paper(0xa3322a), [0, 0.095, 0]),\n mesh(cyl(0.014, 0.045, 0.04, 12), bottle, [0, 0.21, 0]),\n mesh(cyl(0.014, 0.014, 0.01, 8), bottle, [0, 0.235, 0]),\n mesh(cyl(0.018, 0.018, 0.02, 8), cap, [0, 0.25, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const generatorKey: ItemModelBuilder = ({ mesh, bx, G, metal, plastic }) => {\n const steel = metal(0x9a9da0)\n const groove = metal(0x55585b)\n const cover = plastic(0xa8322a)\n const parts = [\n mesh(bx(0.05, 0.012, 0.006), steel, [0.015, 0.016, 0]),\n mesh(bx(0.044, 0.002, 0.006), groove, [0.017, 0.016, 0]),\n mesh(bx(0.005, 0.006, 0.006), steel, [0.0, 0.0075, 0]),\n mesh(bx(0.005, 0.006, 0.006), steel, [0.009, 0.0075, 0]),\n mesh(bx(0.005, 0.006, 0.006), steel, [0.018, 0.0075, 0]),\n mesh(bx(0.005, 0.006, 0.006), steel, [0.033, 0.0075, 0]),\n mesh(bx(0.014, 0.01, 0.006), cover, [-0.008, 0.016, 0]),\n ]\n const segments = 8\n for (let index = 0; index < segments; index++) {\n const angle = (2 * Math.PI * index) / segments\n parts.push(mesh(bx(0.0092, 0.005, 0.006), cover, [-0.025 + 0.0125 * Math.cos(angle), 0.015 + 0.0125 * Math.sin(angle), 0], [0, 0, angle + Math.PI / 2]))\n }\n return G(...parts)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const hardHat: ItemModelBuilder = ({ mesh, bx, cyl, lathe, G, plastic, cloth }) => {\n const shell = plastic(0xf2b705)\n const strap = cloth(0x2b2b2b)\n return G(\n mesh(lathe([[0, 0], [0.128, 0], [0.128, 0.04], [0.118, 0.085], [0.087, 0.12], [0.041, 0.138], [0, 0.14]], 14), shell, [0, 0, -0.022]),\n mesh(cyl(0.128, 0.128, 0.012, 14), shell, [0, 0.006, -0.022]),\n mesh(bx(0.22, 0.012, 0.062), shell, [0, 0.006, 0.119]),\n mesh(bx(0.032, 0.012, 0.19), shell, [0, 0.144, -0.022]),\n mesh(bx(0.08, 0.03, 0.02), strap, [0, 0.015, -0.14]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const headlamp: ItemModelBuilder = ({ M, mesh, cyl, bx, G, cloth, plastic }) => {\n const quarter = Math.PI / 2\n const strap = cloth(0x1d2a35)\n return G(\n mesh(bx(0.05, 0.045, 0.024), plastic(0x2b2f33), [0, 0.0225, 0.002]),\n mesh(cyl(0.017, 0.017, 0.011, 12), M(0xfff1c0, 'glass', { emissive: 0xffe08a, emissiveIntensity: 0.6 }), [0, 0.0225, 0.0195], [quarter, 0, 0]),\n mesh(bx(0.012, 0.015, 0.04), strap, [0, 0.0525, -0.005]),\n mesh(bx(0.02, 0.014, 0.004), strap, [-0.035, 0.0225, -0.005]),\n mesh(bx(0.02, 0.014, 0.004), strap, [0.035, 0.0225, -0.005]),\n mesh(bx(0.004, 0.014, 0.02), strap, [-0.043, 0.0225, -0.015]),\n mesh(bx(0.004, 0.014, 0.02), strap, [0.043, 0.0225, -0.015]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const hoodie: ItemModelBuilder = ({ mesh, bx, cyl, G, cloth }) => {\n const fabric = cloth(0x5b6068)\n const rib = cloth(0x484c53)\n const cord = cloth(0xd8d8d0)\n return G(\n mesh(bx(0.25, 0.06, 0.28), fabric, [0, 0.03, 0]),\n mesh(bx(0.065, 0.05, 0.19), fabric, [-0.1575, 0.025, -0.045]),\n mesh(bx(0.065, 0.05, 0.19), fabric, [0.1575, 0.025, -0.045]),\n mesh(bx(0.06, 0.054, 0.025), rib, [-0.1575, 0.027, 0.0675]),\n mesh(bx(0.06, 0.054, 0.025), rib, [0.1575, 0.027, 0.0675]),\n mesh(bx(0.25, 0.062, 0.03), rib, [0, 0.031, 0.125]),\n mesh(cyl(0.062, 0.062, 0.02, 12), fabric, [0, 0.07, -0.075]),\n mesh(bx(0.15, 0.02, 0.055), rib, [0, 0.07, 0.06]),\n mesh(bx(0.006, 0.02, 0.05), cord, [-0.02, 0.07, -0.01]),\n mesh(bx(0.006, 0.02, 0.05), cord, [0.02, 0.07, -0.01]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const janitorKeys: ItemModelBuilder = ({ mesh, bx, G, metal }) => {\n const steel = metal(0xa0a3a6)\n const brass = metal(0xb08a2e)\n const iron = metal(0x6a6d70)\n const parts = []\n const ringSegments = 10\n for (let index = 0; index < ringSegments; index++) {\n const angle = (2 * Math.PI * index) / ringSegments\n parts.push(mesh(bx(0.0105, 0.004, 0.004), steel, [0.0145 * Math.cos(angle), 0.0835 + 0.0145 * Math.sin(angle), 0], [0, 0, angle + Math.PI / 2]))\n }\n const keys = [\n { angle: -0.75, depth: -0.008, material: iron },\n { angle: -0.37, depth: -0.004, material: brass },\n { angle: 0, depth: 0, material: steel },\n { angle: 0.37, depth: 0.004, material: brass },\n { angle: 0.75, depth: 0.008, material: iron },\n ]\n for (const { angle, depth, material } of keys) {\n const key = G(\n mesh(bx(0.014, 0.014, 0.004), material, [0, 0, 0]),\n mesh(bx(0.006, 0.06, 0.004), material, [0, -0.037, 0]),\n mesh(bx(0.01, 0.006, 0.004), material, [0.004, -0.062, 0]),\n mesh(bx(0.01, 0.004, 0.004), material, [0.004, -0.052, 0]),\n )\n key.position.set(0.0165 * Math.sin(angle), 0.0835 - 0.0165 * Math.cos(angle), depth)\n key.rotation.z = angle\n parts.push(key)\n }\n return G(...parts)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const jeans: ItemModelBuilder = ({ mesh, bx, G, cloth, metal }) => {\n const denim = cloth(0x3d5683)\n const band = cloth(0x2f4469)\n const stitch = cloth(0xc9a45c)\n return G(\n mesh(bx(0.31, 0.054, 0.105), denim, [0.025, 0.027, -0.0575]),\n mesh(bx(0.31, 0.054, 0.105), denim, [0.025, 0.027, 0.0575]),\n mesh(bx(0.04, 0.06, 0.22), band, [-0.15, 0.03, 0]),\n mesh(bx(0.05, 0.006, 0.06), band, [-0.03, 0.057, -0.0575]),\n mesh(bx(0.05, 0.006, 0.06), band, [-0.03, 0.057, 0.0575]),\n mesh(bx(0.3, 0.0545, 0.003), stitch, [0.03, 0.02725, 0]),\n mesh(bx(0.012, 0.06, 0.012), metal(0xb0b3b6), [-0.15, 0.03, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const kaleAndLettuceSeeds: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const width = 0.09\n const height = 0.13\n const depth = 0.015\n const group = G()\n group.add(mesh(bx(width, height, depth * 0.5), paper(0xe8dfc8)))\n group.add(mesh(bx(width * 0.9, height * 0.85, depth * 0.9), paper(0xefe7d3), [0, -height * 0.03, 0]))\n group.add(mesh(bx(width, height * 0.08, depth * 0.3), paper(0xcfc4a8), [0, height * 0.46, 0]))\n ;[1, -1].forEach((side) => group.add(mesh(bx(width * 0.7, height * 0.4, depth * 0.1), paper(0x5f9a4a), [0, -height * 0.05, side * depth * 0.45])))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const kerosene: ItemModelBuilder = ({ mesh, cyl, G, plastic, paper }) => {\n const bottle = plastic(0xc9c6b8)\n const cap = plastic(0x2f5d8a)\n return G(\n mesh(cyl(0.045, 0.045, 0.19, 12), bottle, [0, 0.095, 0]),\n mesh(cyl(0.0455, 0.0455, 0.07, 12), paper(0x2f5d8a), [0, 0.095, 0]),\n mesh(cyl(0.014, 0.045, 0.04, 12), bottle, [0, 0.21, 0]),\n mesh(cyl(0.014, 0.014, 0.01, 8), bottle, [0, 0.235, 0]),\n mesh(cyl(0.018, 0.018, 0.02, 8), cap, [0, 0.25, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const laptop: ItemModelBuilder = ({ mesh, cyl, bx, G, metal, plastic }) =>\n G(\n mesh(bx(0.36, 0.012, 0.25), metal(0x8d9094), [0, 0.006, 0]),\n mesh(bx(0.358, 0.012, 0.248), metal(0x2c2f33), [0, 0.019, 0]),\n mesh(cyl(0.006, 0.006, 0.2, 8), plastic(0x1c1c1c), [0, 0.0125, -0.12], [0, 0, Math.PI / 2]),\n mesh(bx(0.05, 0.0002, 0.03), metal(0xb4b7ba), [0, 0.0251, 0]),\n )\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const leatherMotorcycleJacket: ItemModelBuilder = ({ mesh, bx, G, cloth, metal }) => {\n const leather = cloth(0x1f1d1c)\n const worn = cloth(0x2c2927)\n const zip = metal(0x9a9da0)\n const pad = cloth(0x3a3633)\n return G(\n mesh(bx(0.29, 0.08, 0.35), leather, [0, 0.04, 0]),\n mesh(bx(0.08, 0.07, 0.24), leather, [-0.185, 0.035, -0.055]),\n mesh(bx(0.08, 0.07, 0.24), leather, [0.185, 0.035, -0.055]),\n mesh(bx(0.08, 0.074, 0.03), worn, [-0.185, 0.037, 0.075]),\n mesh(bx(0.08, 0.074, 0.03), worn, [0.185, 0.037, 0.075]),\n mesh(bx(0.08, 0.09, 0.07), pad, [-0.185, 0.045, -0.12]),\n mesh(bx(0.08, 0.09, 0.07), pad, [0.185, 0.045, -0.12]),\n mesh(bx(0.09, 0.012, 0.06), worn, [-0.05, 0.086, -0.15]),\n mesh(bx(0.09, 0.012, 0.06), worn, [0.05, 0.086, -0.15]),\n mesh(bx(0.012, 0.0802, 0.3), zip, [0.015, 0.0401, 0.025]),\n mesh(bx(0.06, 0.006, 0.01), zip, [-0.07, 0.083, 0.0]),\n mesh(bx(0.06, 0.006, 0.01), zip, [0.07, 0.083, 0.0]),\n mesh(bx(0.1, 0.1, 0.03), worn, [0, 0.05, 0.16]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const leatherMotorcyclePants: ItemModelBuilder = ({ mesh, bx, G, cloth, metal }) => {\n const leather = cloth(0x1f1d1c)\n const pad = cloth(0x302d2b)\n const zip = metal(0x9a9da0)\n return G(\n mesh(bx(0.36, 0.08, 0.145), leather, [0.02, 0.04, -0.0775]),\n mesh(bx(0.36, 0.08, 0.145), leather, [0.02, 0.04, 0.0775]),\n mesh(bx(0.04, 0.09, 0.3), pad, [-0.18, 0.045, 0]),\n mesh(bx(0.07, 0.01, 0.1), pad, [0.0, 0.085, -0.0775]),\n mesh(bx(0.07, 0.01, 0.1), pad, [0.0, 0.085, 0.0775]),\n mesh(bx(0.012, 0.0902, 0.012), zip, [-0.18, 0.0451, 0]),\n mesh(bx(0.04, 0.0802, 0.14), pad, [0.17, 0.0401, -0.0775]),\n mesh(bx(0.04, 0.0802, 0.14), pad, [0.17, 0.0401, 0.0775]),\n mesh(bx(0.2, 0.0825, 0.004), zip, [0.07, 0.04125, -0.0035]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const leatherWorkGloves: ItemModelBuilder = ({ mesh, bx, G, cloth }) => {\n const leather = cloth(0xb08a52)\n const cuff = cloth(0x8a6a3c)\n const finger = (x: number, length: number, z: number) => mesh(bx(length, 0.02, 0.022), leather, [x + length / 2, 0.01, z])\n return G(\n mesh(bx(0.055, 0.03, 0.12), cuff, [-0.0975, 0.015, 0]),\n mesh(bx(0.1, 0.022, 0.1), leather, [-0.02, 0.011, 0]),\n finger(0.03, 0.09, -0.039),\n finger(0.03, 0.095, -0.013),\n finger(0.03, 0.09, 0.013),\n finger(0.03, 0.075, 0.039),\n mesh(bx(0.05, 0.02, 0.026), leather, [-0.01, 0.01, 0.036], [0, -0.5, 0]),\n mesh(bx(0.03, 0.024, 0.1), cuff, [-0.0575, 0.012, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const ledCampLantern: ItemModelBuilder = ({ M, mesh, cyl, bx, G, metal, plastic }) => {\n const body = plastic(0x3b4a3a)\n return G(\n mesh(cyl(0.055, 0.055, 0.03, 16), body, [0, 0.015, 0]),\n mesh(cyl(0.045, 0.045, 0.12, 16), M(0xfff1c0, 'glass', { emissive: 0xffe08a, emissiveIntensity: 0.5, transparent: true, opacity: 0.85 }), [0, 0.09, 0]),\n mesh(cyl(0.05, 0.055, 0.025, 16), body, [0, 0.1625, 0]),\n mesh(bx(0.008, 0.025, 0.008), metal(0x8d9094), [-0.045, 0.1875, 0]),\n mesh(bx(0.008, 0.025, 0.008), metal(0x8d9094), [0.045, 0.1875, 0]),\n mesh(bx(0.098, 0.008, 0.008), metal(0x8d9094), [0, 0.196, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const magazineArmGuard: ItemModelBuilder = ({ mesh, bx, G, paper, cloth }) => {\n const covers = [paper(0xb8b2a2), paper(0x8c9aa6), paper(0xa88a6e), paper(0x8c9aa6), paper(0xb8b2a2)]\n const tape = cloth(0x3a4130)\n const parts = []\n const count = covers.length\n for (let index = 0; index < count; index++) {\n const phi = -1.0 + (2.0 * index) / (count - 1)\n const radiusZ = 0.0657\n const radiusY = 0.05\n const y = 0.0295 + radiusY * Math.cos(phi) - radiusY * Math.cos(1.0)\n const z = radiusZ * Math.sin(phi)\n const angle = Math.atan2(radiusY * Math.sin(phi), radiusZ * Math.cos(phi))\n parts.push(mesh(bx(0.3, 0.008, 0.052), covers[index]!, [0, y, z], [angle, 0, 0]))\n for (const x of [-0.075, 0.075]) parts.push(mesh(bx(0.025, 0.008, 0.052), tape, [x, y + 0.006, z], [angle, 0, 0]))\n }\n return G(...parts)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const magazinesAndComics: ItemModelBuilder = ({ mesh, bx, G, paper }) =>\n G(\n mesh(bx(0.17, 0.26, 0.0092), paper(0xe4dcc6), [0, 0.13, 0]),\n mesh(bx(0.17, 0.26, 0.0002), paper(0xb23a2e), [0, 0.13, 0.0048]),\n mesh(bx(0.17, 0.26, 0.0002), paper(0xb23a2e), [0, 0.13, -0.0048]),\n mesh(bx(0.15, 0.04, 0.0002), paper(0xf0d36a), [0, 0.235, 0.005]),\n mesh(bx(0.14, 0.14, 0.0002), paper(0x3b6ea0), [0, 0.12, 0.005]),\n mesh(bx(0.07, 0.07, 0.0002), paper(0xf0d36a), [-0.03, 0.12, 0.0051]),\n )\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const masterKey: ItemModelBuilder = ({ mesh, bx, G, metal }) => {\n const nickel = metal(0xc7c9cc)\n const parts = [\n mesh(bx(0.057, 0.014, 0.006), nickel, [0.0165, 0.0175, 0]),\n mesh(bx(0.005, 0.02, 0.006), nickel, [-0.011, 0.0175, 0]),\n ]\n for (let tooth = 0; tooth < 6; tooth++) parts.push(mesh(bx(0.004, 0.007, 0.006), nickel, [0.0 + tooth * 0.0085, 0.0075 + (tooth % 2) * 0.002, 0]))\n const segments = 8\n for (let index = 0; index < segments; index++) {\n const angle = (2 * Math.PI * index) / segments\n parts.push(mesh(bx(0.0115, 0.006, 0.006), nickel, [-0.0275 + 0.0145 * Math.cos(angle), 0.0175 + 0.0145 * Math.sin(angle), 0], [0, 0, angle + Math.PI / 2]))\n }\n return G(...parts)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const mechanicCoveralls: ItemModelBuilder = ({ mesh, bx, G, cloth, metal }) => {\n const fabric = cloth(0x3c5a78)\n const dark = cloth(0x2f4760)\n const zip = metal(0x9a9da0)\n return G(\n mesh(bx(0.18, 0.07, 0.14), fabric, [0, 0.035, -0.08]),\n mesh(bx(0.09, 0.07, 0.15), fabric, [-0.0465, 0.035, 0.075]),\n mesh(bx(0.09, 0.07, 0.15), fabric, [0.0465, 0.035, 0.075]),\n mesh(bx(0.11, 0.06, 0.1), fabric, [-0.145, 0.03, -0.1]),\n mesh(bx(0.11, 0.06, 0.1), fabric, [0.145, 0.03, -0.1]),\n mesh(bx(0.03, 0.064, 0.1), dark, [-0.185, 0.032, -0.1]),\n mesh(bx(0.03, 0.064, 0.1), dark, [0.185, 0.032, -0.1]),\n mesh(bx(0.18, 0.074, 0.025), dark, [0, 0.037, 0.1375]),\n mesh(bx(0.07, 0.08, 0.04), dark, [0, 0.04, -0.13]),\n mesh(bx(0.012, 0.0802, 0.2), zip, [0, 0.0401, -0.05]),\n mesh(bx(0.05, 0.08, 0.04), dark, [-0.05, 0.04, -0.07]),\n mesh(bx(0.05, 0.09, 0.03), dark, [0.05, 0.045, -0.02]),\n mesh(bx(0.14, 0.071, 0.012), dark, [0, 0.0355, 0.0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const militaryBackpack: ItemModelBuilder = ({ mesh, cyl, bx, G, cloth, plastic }) => {\n const main = cloth(0x4a4f35)\n const dark = cloth(0x33372a)\n return G(\n mesh(bx(0.33, 0.5, 0.18), main, [0, 0.25, -0.04]),\n mesh(bx(0.35, 0.1, 0.25), dark, [0, 0.55, -0.025]),\n mesh(bx(0.12, 0.2, 0.08), dark, [-0.11, 0.3, 0.09]),\n mesh(bx(0.12, 0.2, 0.08), dark, [0.11, 0.3, 0.09]),\n mesh(cyl(0.07, 0.07, 0.3, 8), cloth(0x5a5d40), [0, 0.07, 0.08], [0, 0, Math.PI / 2]),\n mesh(bx(0.06, 0.4, 0.02), dark, [-0.09, 0.28, -0.14]),\n mesh(bx(0.06, 0.4, 0.02), dark, [0.09, 0.28, -0.14]),\n mesh(bx(0.04, 0.03, 0.02), plastic(0x1c1d1f), [0, 0.52, 0.1]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const militaryRadio: ItemModelBuilder = ({ M, mesh, cyl, bx, G, metal, plastic }) => {\n const quarter = Math.PI / 2\n const dark = plastic(0x1c1e1a)\n const group = G(\n mesh(bx(0.3, 0.14, 0.238), metal(0x4b5230), [0, 0.07, -0.006]),\n mesh(bx(0.08, 0.03, 0.002), M(0xa8d88f, 'glass', { emissive: 0x2f5a2a, emissiveIntensity: 0.5 }), [0.05, 0.1, 0.114]),\n mesh(cyl(0.02, 0.02, 0.016, 10), dark, [-0.08, 0.148, 0.04]),\n mesh(cyl(0.02, 0.02, 0.016, 10), dark, [-0.02, 0.148, 0.04]),\n mesh(cyl(0.018, 0.018, 0.018, 10), metal(0x2a2c2e), [0.1, 0.149, -0.08]),\n mesh(cyl(0.005, 0.008, 0.042, 6), metal(0x2a2c2e), [0.1, 0.179, -0.08]),\n mesh(bx(0.008, 0.015, 0.01), metal(0x2a2c2e), [-0.05, 0.1475, -0.06]),\n mesh(bx(0.008, 0.015, 0.01), metal(0x2a2c2e), [0.05, 0.1475, -0.06]),\n mesh(bx(0.108, 0.008, 0.01), metal(0x2a2c2e), [0, 0.155, -0.06]),\n )\n for (const x of [-0.08, 0, 0.08]) group.add(mesh(cyl(0.015, 0.015, 0.012, 8), metal(0x2a2c2e), [x, 0.045, 0.119], [quarter, 0, 0]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const mobilePhone: ItemModelBuilder = ({ M, mesh, bx, G, plastic, glass }) =>\n G(\n mesh(bx(0.077, 0.16, 0.0082), plastic(0x23262b), [0, 0.08, 0]),\n mesh(bx(0.07, 0.15, 0.0004), glass(0x0c1118, 0.95), [0, 0.08, 0.0043]),\n mesh(bx(0.026, 0.026, 0.0004), plastic(0x15171a), [-0.02, 0.14, -0.0043]),\n mesh(bx(0.016, 0.002, 0.0004), M(0x3b4048, 'plastic'), [0, 0.153, 0.0043]),\n )\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const motorOil: ItemModelBuilder = ({ mesh, cyl, bx, G, plastic, paper }) => {\n const bottle = plastic(0x2a2d31)\n return G(\n mesh(bx(0.09, 0.19, 0.068), bottle, [-0.005, 0.095, 0]),\n mesh(bx(0.07, 0.08, 0.002), paper(0xd9a441), [-0.005, 0.09, 0.035]),\n mesh(cyl(0.02, 0.033, 0.04, 8), bottle, [-0.005, 0.21, 0]),\n mesh(cyl(0.02, 0.02, 0.03, 8), plastic(0xd9a441), [-0.005, 0.245, 0]),\n mesh(bx(0.01, 0.12, 0.03), bottle, [0.045, 0.11, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const nightVisionGoggles: ItemModelBuilder = ({ M, mesh, cyl, bx, G, metal, plastic }) => {\n const quarter = Math.PI / 2\n const shell = plastic(0x2e332b)\n const lens = M(0x1f3a24, 'glass', { emissive: 0x2f7a45, emissiveIntensity: 0.5 })\n const group = G(\n mesh(bx(0.12, 0.045, 0.05), shell, [0, 0.05, -0.005]),\n mesh(bx(0.08, 0.014, 0.06), shell, [0, 0.007, -0.005]),\n mesh(bx(0.04, 0.016, 0.05), metal(0x2a2c2e), [0, 0.092, -0.005]),\n )\n for (const x of [-0.039, 0.039]) {\n group.add(mesh(cyl(0.036, 0.036, 0.05, 12), shell, [x, 0.05, 0.03], [quarter, 0, 0]))\n group.add(mesh(cyl(0.028, 0.028, 0.002, 10), lens, [x, 0.05, 0.054], [quarter, 0, 0]))\n group.add(mesh(cyl(0.03, 0.03, 0.03, 10), plastic(0x15171a), [x, 0.05, -0.04], [quarter, 0, 0]))\n }\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const note: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const group = G()\n group.add(mesh(bx(0.15, 0.001, 0.1), paper(0xe9e2cf), [0, 0.0005, 0]))\n group.add(mesh(bx(0.14, 0.001, 0.09), paper(0xf3eedd), [0, 0.0015, 0.002]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const paddedCoat: ItemModelBuilder = ({ mesh, bx, cyl, G, cloth, metal }) => {\n const shell = cloth(0x3a4a3e)\n const rib = cloth(0x2b362f)\n const zip = metal(0x9a9da0)\n const parts = [\n mesh(bx(0.3, 0.12, 0.35), shell, [0, 0.06, 0]),\n mesh(bx(0.075, 0.1, 0.24), shell, [-0.1875, 0.05, -0.055]),\n mesh(bx(0.075, 0.1, 0.24), shell, [0.1875, 0.05, -0.055]),\n mesh(bx(0.075, 0.104, 0.03), rib, [-0.1875, 0.052, 0.075]),\n mesh(bx(0.075, 0.104, 0.03), rib, [0.1875, 0.052, 0.075]),\n mesh(cyl(0.07, 0.07, 0.03, 12), shell, [0, 0.135, -0.1]),\n mesh(bx(0.012, 0.1202, 0.34), zip, [0, 0.0601, 0.005]),\n ]\n for (const z of [-0.12, -0.04, 0.04, 0.12]) parts.push(mesh(bx(0.29, 0.03, 0.014), rib, [0, 0.135, z]))\n return G(...parts)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const padlockKey: ItemModelBuilder = ({ mesh, bx, G, metal }) => {\n const body = metal(0x8a8d90)\n const shackle = metal(0xc0c3c6)\n const slot = metal(0x1f2022)\n const parts = [\n mesh(bx(0.05, 0.05, 0.0225), body, [0, 0.025, 0]),\n mesh(bx(0.05, 0.006, 0.0225), body, [0, 0.003, 0]),\n mesh(bx(0.006, 0.014, 0.025), slot, [0, 0.022, 0]),\n mesh(bx(0.006, 0.026, 0.008), shackle, [-0.014, 0.063, 0]),\n mesh(bx(0.006, 0.026, 0.008), shackle, [0.014, 0.063, 0]),\n ]\n const segments = 6\n for (let index = 0; index < segments; index++) {\n const angle = (Math.PI * (index + 0.5)) / segments\n parts.push(mesh(bx(0.0105, 0.006, 0.008), shackle, [0.014 * Math.cos(angle), 0.063 + 0.014 * Math.sin(angle), 0], [0, 0, angle + Math.PI / 2]))\n }\n return G(...parts)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const photo: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const group = G()\n group.add(mesh(bx(0.102, 0.001, 0.152), paper(0xf1eee4), [0, 0.0005, 0]))\n group.add(mesh(bx(0.088, 0.001, 0.115), paper(0x7a8a8c), [0, 0.0015, -0.01]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const portableGenerator: ItemModelBuilder = ({ M, mesh, cyl, bx, G, metal, plastic }) => {\n const quarter = Math.PI / 2\n const frame = metal(0x3a3c3e)\n const group = G(\n mesh(bx(0.5, 0.02, 0.02), frame, [0, 0.01, 0.205]),\n mesh(bx(0.5, 0.02, 0.02), frame, [0, 0.01, -0.205]),\n mesh(bx(0.02, 0.02, 0.43), frame, [0.24, 0.01, 0]),\n mesh(bx(0.02, 0.02, 0.43), frame, [-0.24, 0.01, 0]),\n mesh(bx(0.5, 0.02, 0.02), frame, [0, 0.41, 0.205]),\n mesh(bx(0.5, 0.02, 0.02), frame, [0, 0.41, -0.205]),\n mesh(bx(0.02, 0.02, 0.43), frame, [0.24, 0.41, 0]),\n mesh(bx(0.02, 0.02, 0.43), frame, [-0.24, 0.41, 0]),\n mesh(bx(0.2, 0.2, 0.26), metal(0x6e7173), [-0.12, 0.13, 0]),\n mesh(cyl(0.11, 0.11, 0.18, 14), metal(0x3f5a73), [0.14, 0.15, 0], [0, 0, quarter]),\n mesh(bx(0.34, 0.1, 0.28), plastic(0x9c2f23), [0, 0.35, 0]),\n mesh(cyl(0.025, 0.025, 0.02, 8), plastic(0x1c1c1c), [-0.1, 0.41, 0]),\n mesh(bx(0.2, 0.12, 0.01), plastic(0x222426), [0.13, 0.2, 0.21]),\n mesh(bx(0.04, 0.04, 0.0045), M(0x777a7d, 'plastic'), [0.09, 0.2, 0.2162]),\n mesh(bx(0.04, 0.04, 0.0045), M(0x777a7d, 'plastic'), [0.17, 0.2, 0.2162]),\n mesh(cyl(0.035, 0.035, 0.16, 10), metal(0x5b4a3c), [-0.12, 0.1, -0.17], [0, 0, quarter]),\n )\n for (const [x, z] of [[-0.24, -0.205], [0.24, -0.205], [-0.24, 0.205], [0.24, 0.205]] as const) group.add(mesh(bx(0.02, 0.4, 0.02), frame, [x, 0.21, z]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const powerBank: ItemModelBuilder = ({ M, mesh, bx, G, plastic }) => {\n const led = M(0x8be3a0, 'plastic', { emissive: 0x2f7a45, emissiveIntensity: 0.6 })\n return G(\n mesh(bx(0.15, 0.07, 0.015), plastic(0x2d3138), [0, 0.035, 0]),\n mesh(bx(0.07, 0.024, 0.001), plastic(0x4a5058), [-0.025, 0.035, 0.0078]),\n mesh(bx(0.02, 0.008, 0.001), plastic(0x0f1012), [0.058, 0.058, 0.0078]),\n mesh(bx(0.012, 0.004, 0.001), led, [0.028, 0.02, 0.0078]),\n mesh(bx(0.012, 0.004, 0.001), led, [0.044, 0.02, 0.0078]),\n mesh(bx(0.012, 0.004, 0.001), led, [0.06, 0.02, 0.0078]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const pumpkinSeeds: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const width = 0.09\n const height = 0.13\n const depth = 0.015\n const group = G()\n group.add(mesh(bx(width, height, depth * 0.5), paper(0xe8dfc8)))\n group.add(mesh(bx(width * 0.9, height * 0.85, depth * 0.9), paper(0xefe7d3), [0, -height * 0.03, 0]))\n group.add(mesh(bx(width, height * 0.08, depth * 0.3), paper(0xcfc4a8), [0, height * 0.46, 0]))\n ;[1, -1].forEach((side) => group.add(mesh(bx(width * 0.7, height * 0.4, depth * 0.1), paper(0xd9822b), [0, -height * 0.05, side * depth * 0.45])))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const raincoat: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic, metal }) => {\n const sheet = plastic(0xd2a91c)\n const trim = plastic(0xa8851a)\n return G(\n mesh(bx(0.2, 0.03, 0.25), sheet, [0, 0.015, 0]),\n mesh(bx(0.05, 0.026, 0.17), sheet, [-0.125, 0.013, -0.04]),\n mesh(bx(0.05, 0.026, 0.17), sheet, [0.125, 0.013, -0.04]),\n mesh(bx(0.05, 0.03, 0.012), trim, [-0.125, 0.015, 0.05]),\n mesh(bx(0.05, 0.03, 0.012), trim, [0.125, 0.015, 0.05]),\n mesh(cyl(0.055, 0.055, 0.01, 12), trim, [0, 0.035, -0.07]),\n mesh(bx(0.014, 0.01, 0.17), trim, [0, 0.035, 0.04]),\n mesh(cyl(0.006, 0.006, 0.012, 6), metal(0x8a8d90), [0, 0.034, 0.0]),\n mesh(cyl(0.006, 0.006, 0.012, 6), metal(0x8a8d90), [0, 0.034, 0.06]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const roadMap: ItemModelBuilder = ({ mesh, bx, G, paper }) => {\n const group = G()\n group.add(mesh(bx(0.11, 0.003, 0.25), paper(0x4f7a8a), [0, 0.0015, 0]))\n group.add(mesh(bx(0.108, 0.004, 0.24), paper(0xe4dcc2), [0, 0.005, 0]))\n group.add(mesh(bx(0.11, 0.003, 0.18), paper(0x4f7a8a), [0, 0.0085, 0.035]))\n group.add(mesh(bx(0.11, 0.003, 0.07), paper(0xe0b830), [0, 0.0085, -0.09]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const rollingSuitcase: ItemModelBuilder = ({ mesh, cyl, bx, G, plastic }) => {\n const shell = plastic(0x3d4a5c)\n const trim = plastic(0x1f2226)\n const parts = [\n mesh(bx(0.4, 0.55, 0.25), shell, [0, 0.325, 0]),\n mesh(bx(0.012, 0.5, 0.25), trim, [-0.1, 0.325, 0]),\n mesh(bx(0.012, 0.5, 0.25), trim, [0.1, 0.325, 0]),\n mesh(bx(0.012, 0.04, 0.012), trim, [-0.06, 0.62, 0]),\n mesh(bx(0.012, 0.04, 0.012), trim, [0.06, 0.62, 0]),\n mesh(bx(0.15, 0.02, 0.03), trim, [0, 0.64, 0]),\n mesh(bx(0.12, 0.03, 0.04), trim, [0, 0.55, -0.1]),\n ]\n for (const x of [-0.15, 0.15]) for (const z of [-0.09, 0.09]) parts.push(mesh(cyl(0.025, 0.025, 0.02, 8), trim, [x, 0.025, z], [0, 0, Math.PI / 2]))\n return G(...parts)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const rubberBoots: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic }) => {\n const rubber = plastic(0x3d5a3a)\n const sole = plastic(0x1d1d1d)\n const rim = plastic(0x2f4a2e)\n const boot = (z: number) => [\n mesh(bx(0.3, 0.025, 0.105), sole, [0, 0.0125, z]),\n mesh(bx(0.07, 0.03, 0.105), sole, [-0.115, 0.04, z]),\n mesh(bx(0.2, 0.06, 0.1), rubber, [0.04, 0.055, z]),\n mesh(cyl(0.05, 0.05, 0.06, 8), rubber, [0.1, 0.055, z]),\n mesh(cyl(0.05, 0.052, 0.325, 10), rubber, [-0.085, 0.1875, z]),\n mesh(cyl(0.054, 0.054, 0.015, 10), rim, [-0.085, 0.3425, z]),\n ]\n return G(...boot(-0.0575), ...boot(0.0575))\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const safeKey: ItemModelBuilder = ({ mesh, bx, G, metal }) => {\n const brass = metal(0xb08a2e)\n const parts = [\n mesh(bx(0.046, 0.01, 0.005), brass, [0.012, 0.0125, 0]),\n mesh(bx(0.004, 0.016, 0.005), brass, [-0.01, 0.0125, 0]),\n mesh(bx(0.006, 0.004, 0.005), brass, [0.0, 0.0055, 0]),\n mesh(bx(0.006, 0.004, 0.005), brass, [0.01, 0.0055, 0]),\n mesh(bx(0.006, 0.004, 0.005), brass, [0.02, 0.0055, 0]),\n mesh(bx(0.006, 0.004, 0.005), brass, [0.0315, 0.0055, 0]),\n mesh(bx(0.006, 0.004, 0.005), brass, [0.0, 0.0195, 0]),\n mesh(bx(0.006, 0.004, 0.005), brass, [0.015, 0.0195, 0]),\n ]\n const segments = 8\n for (let index = 0; index < segments; index++) {\n const angle = (2 * Math.PI * index) / segments\n parts.push(mesh(bx(0.0066, 0.0045, 0.005), brass, [-0.0225 + 0.0102 * Math.cos(angle), 0.0125 + 0.0102 * Math.sin(angle), 0], [0, 0, angle + Math.PI / 2]))\n }\n return G(...parts)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const safetyGoggles: ItemModelBuilder = ({ mesh, bx, cyl, G, plastic, glass, cloth }) => {\n const frame = plastic(0x2f4f6f)\n const lens = glass(0xcfe6f0, 0.45)\n const band = cloth(0x1f2326)\n const cup = (x: number) => [\n mesh(cyl(0.03, 0.03, 0.02, 10), frame, [x, 0.03, 0.027], [Math.PI / 2, 0, 0]),\n mesh(cyl(0.024, 0.024, 0.006, 10), lens, [x, 0.03, 0.037], [Math.PI / 2, 0, 0]),\n ]\n return G(\n ...cup(-0.04),\n ...cup(0.04),\n mesh(bx(0.03, 0.012, 0.02), frame, [0, 0.036, 0.027]),\n mesh(bx(0.006, 0.03, 0.05), band, [-0.077, 0.03, 0.0]),\n mesh(bx(0.006, 0.03, 0.05), band, [0.077, 0.03, 0.0]),\n mesh(bx(0.16, 0.03, 0.006), band, [0, 0.03, -0.037]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const sheetMetalForearmGuard: ItemModelBuilder = ({ mesh, bx, G, metal, cloth }) => {\n const sheet = metal(0x7d8186)\n const strap = cloth(0x4a3a2a)\n const rivet = metal(0xb5b8bb)\n const parts = []\n const count = 7\n const radiusZ = 0.0555\n const radiusY = 0.092\n const phiMax = 1.3\n for (let index = 0; index < count; index++) {\n const phi = -phiMax + (2 * phiMax * index) / (count - 1)\n const y = 0.0455 + radiusY * (Math.cos(phi) - Math.cos(phiMax))\n const z = radiusZ * Math.sin(phi)\n const speed = Math.hypot(radiusY * Math.sin(phi), radiusZ * Math.cos(phi))\n const angle = Math.atan2(radiusY * Math.sin(phi), radiusZ * Math.cos(phi))\n const length = (speed * (2 * phiMax)) / (count - 1) * 1.1\n parts.push(mesh(bx(0.3, 0.006, length), sheet, [0, y, z], [angle, 0, 0]))\n for (const x of [-0.09, 0.09]) parts.push(mesh(bx(0.03, 0.006, length), strap, [x, y + 0.006, z], [angle, 0, 0]))\n }\n parts.push(mesh(bx(0.012, 0.012, 0.012), rivet, [0.09, 0.0985, 0]), mesh(bx(0.012, 0.012, 0.012), rivet, [-0.09, 0.0985, 0]))\n return G(...parts)\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const shoppingBag: ItemModelBuilder = ({ mesh, bx, G, cloth }) => {\n const body = cloth(0x4b6a5a)\n const trim = cloth(0x2f4a3c)\n return G(\n mesh(bx(0.3, 0.008, 0.2), body, [0, 0.004, 0]),\n mesh(bx(0.2, 0.008, 0.12), trim, [0, 0.012, 0]),\n mesh(bx(0.1, 0.004, 0.012), trim, [0, 0.018, -0.05]),\n mesh(bx(0.1, 0.004, 0.012), trim, [0, 0.018, 0.05]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const shoppingCart: ItemModelBuilder = ({ mesh, cyl, bx, G, metal, plastic }) => {\n const wire = metal(0xb4b7ba)\n const grip = plastic(0x2a2c2e)\n const group = G()\n const add = (...parts: Parameters<typeof G>) => parts.forEach((part) => group.add(part))\n add(mesh(bx(0.5, 0.012, 0.8), wire, [0, 0.38, 0]), mesh(bx(0.55, 0.03, 0.03), grip, [0, 0.965, -0.46]))\n for (const side of [-1, 1]) {\n add(mesh(bx(0.012, 0.012, 0.8), wire, [side * 0.25, 0.75, 0]), mesh(bx(0.012, 0.012, 0.8), wire, [side * 0.25, 0.56, 0]))\n add(mesh(bx(0.012, 0.012, 0.95), wire, [side * 0.22, 0.14, 0]), mesh(bx(0.02, 0.62, 0.02), wire, [side * 0.26, 0.67, -0.46]))\n for (const z of [-0.4, 0.4]) add(mesh(bx(0.012, 0.37, 0.012), wire, [side * 0.25, 0.565, z]))\n add(mesh(bx(0.012, 0.25, 0.012), wire, [side * 0.22, 0.26, -0.3]), mesh(bx(0.012, 0.25, 0.012), wire, [side * 0.22, 0.26, 0.3]))\n for (const z of [-0.3, 0.4]) add(mesh(cyl(0.06, 0.06, 0.03, 8), grip, [side * 0.25, 0.06, z], [0, 0, Math.PI / 2]))\n }\n add(mesh(bx(0.5, 0.012, 0.012), wire, [0, 0.75, 0.4]), mesh(bx(0.5, 0.012, 0.012), wire, [0, 0.56, 0.4]))\n add(mesh(bx(0.5, 0.012, 0.012), wire, [0, 0.75, -0.4]), mesh(bx(0.5, 0.012, 0.012), wire, [0, 0.56, -0.4]))\n for (const x of [-0.125, 0.125]) add(mesh(bx(0.012, 0.012, 0.8), wire, [x, 0.38, 0]))\n add(mesh(bx(0.44, 0.012, 0.012), wire, [0, 0.14, -0.3]), mesh(bx(0.44, 0.012, 0.012), wire, [0, 0.14, 0.3]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const skillBook: ItemModelBuilder = ({ mesh, bx, G, paper, cloth }) => {\n const cover = cloth(0x6b3f26)\n const trim = paper(0xc9a45a)\n return G(\n mesh(bx(0.154, 0.224, 0.033), paper(0xe4dcc6), [0.0005, 0.115, 0]),\n mesh(bx(0.16, 0.23, 0.0034), cover, [0, 0.115, 0.0183]),\n mesh(bx(0.16, 0.23, 0.0034), cover, [0, 0.115, -0.0183]),\n mesh(bx(0.006, 0.23, 0.04), cover, [-0.077, 0.115, 0]),\n mesh(bx(0.008, 0.01, 0.04), trim, [-0.0775, 0.2, 0]),\n mesh(bx(0.008, 0.01, 0.04), trim, [-0.0775, 0.03, 0]),\n mesh(bx(0.09, 0.05, 0.0002), trim, [0.005, 0.17, 0.0201]),\n mesh(bx(0.06, 0.006, 0.0002), trim, [0.005, 0.06, 0.0201]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const snareTrap: ItemModelBuilder = ({ mesh, torus, bx, G, metal, wood }) => {\n const group = G()\n group.add(mesh(torus(0.067, 0.008), metal(0x8d9096), [0, 0.015, 0], [Math.PI / 2, 0, 0]))\n group.add(mesh(bx(0.02, 0.03, 0.02), wood(0x7a5a3a), [0.065, 0.015, 0]))\n group.add(mesh(bx(0.02, 0.02, 0.02), metal(0x6c6f75), [0, 0.015, 0.065]))\n group.add(mesh(bx(0.006, 0.006, 0.03), wood(0xa08560), [0, 0.01, -0.06]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const sneakers: ItemModelBuilder = ({ mesh, bx, cyl, G, cloth, plastic }) => {\n const upper = cloth(0x5a6068)\n const sole = plastic(0xe8e8e4)\n const accent = cloth(0x2e6f78)\n const lace = cloth(0xf0f0ea)\n return G(\n mesh(bx(0.25, 0.022, 0.12), sole, [-0.025, 0.011, 0]),\n mesh(cyl(0.06, 0.06, 0.022, 10), sole, [0.09, 0.011, 0]),\n mesh(bx(0.11, 0.09, 0.11), upper, [-0.095, 0.067, 0]),\n mesh(bx(0.12, 0.05, 0.11), upper, [0.0, 0.047, 0]),\n mesh(cyl(0.055, 0.055, 0.042, 10), upper, [0.095, 0.043, 0]),\n mesh(bx(0.03, 0.05, 0.08), accent, [-0.03, 0.095, 0]),\n mesh(bx(0.1, 0.03, 0.004), accent, [-0.05, 0.05, 0.057]),\n mesh(bx(0.1, 0.03, 0.004), accent, [-0.05, 0.05, -0.057]),\n mesh(bx(0.008, 0.004, 0.09), lace, [0.0, 0.074, 0]),\n mesh(bx(0.008, 0.004, 0.09), lace, [0.03, 0.074, 0]),\n mesh(bx(0.008, 0.004, 0.08), lace, [0.06, 0.066, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const tacticalVest: ItemModelBuilder = ({ mesh, bx, G, cloth, plastic }) => {\n const shell = cloth(0x4a5236)\n const pouch = cloth(0x3b4229)\n const buckle = plastic(0x1e2020)\n return G(\n mesh(bx(0.35, 0.03, 0.28), shell, [0, 0.015, 0.06]),\n mesh(bx(0.09, 0.03, 0.12), shell, [-0.13, 0.015, -0.14]),\n mesh(bx(0.09, 0.03, 0.12), shell, [0.13, 0.015, -0.14]),\n mesh(bx(0.09, 0.07, 0.05), pouch, [-0.11, 0.065, 0.165]),\n mesh(bx(0.09, 0.07, 0.05), pouch, [0, 0.065, 0.165]),\n mesh(bx(0.09, 0.07, 0.05), pouch, [0.11, 0.065, 0.165]),\n mesh(bx(0.07, 0.05, 0.07), pouch, [-0.13, 0.055, 0.07]),\n mesh(bx(0.07, 0.05, 0.07), pouch, [0.13, 0.055, 0.07]),\n mesh(bx(0.03, 0.02, 0.02), buckle, [0, 0.04, 0.0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const technicalManual: ItemModelBuilder = ({ mesh, bx, G, paper, plastic }) => {\n const binder = plastic(0x2f3f52)\n const label = paper(0xe4dcc6)\n return G(\n mesh(bx(0.2, 0.292, 0.034), paper(0xe4dcc6), [0.004, 0.15, 0]),\n mesh(bx(0.21, 0.3, 0.003), binder, [0, 0.15, 0.0185]),\n mesh(bx(0.21, 0.3, 0.003), binder, [0, 0.15, -0.0185]),\n mesh(bx(0.012, 0.3, 0.04), binder, [-0.099, 0.15, 0]),\n mesh(bx(0.006, 0.18, 0.0004), label, [-0.0995, 0.15, 0.0202]),\n mesh(bx(0.12, 0.05, 0.0004), label, [0.01, 0.23, 0.0202]),\n mesh(bx(0.12, 0.004, 0.0004), plastic(0xb4b7ba), [0.01, 0.17, 0.0202]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const toolBelt: ItemModelBuilder = ({ mesh, bx, G, cloth, metal }) => {\n const leather = cloth(0x6b4a2f)\n const pouch = cloth(0x4f3822)\n return G(\n mesh(bx(0.35, 0.04, 0.02), leather, [0, 0.05, 0.115]),\n mesh(bx(0.35, 0.04, 0.02), leather, [0, 0.05, -0.115]),\n mesh(bx(0.02, 0.04, 0.25), leather, [-0.165, 0.05, 0]),\n mesh(bx(0.02, 0.04, 0.25), leather, [0.165, 0.05, 0]),\n mesh(bx(0.08, 0.1, 0.04), pouch, [-0.1, 0.05, 0.105]),\n mesh(bx(0.08, 0.08, 0.04), pouch, [0.1, 0.04, 0.105]),\n mesh(bx(0.04, 0.09, 0.08), pouch, [-0.155, 0.045, -0.02]),\n mesh(bx(0.02, 0.08, 0.02), pouch, [0.145, 0.04, -0.09]),\n mesh(bx(0.04, 0.035, 0.012), metal(0xb0b2b5), [0, 0.05, 0.119]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const trashBag: ItemModelBuilder = ({ mesh, bx, G, plastic }) => {\n const film = plastic(0x1c1d1f)\n return G(\n mesh(bx(0.2, 0.02, 0.2), film, [-0.025, 0.01, 0]),\n mesh(bx(0.2, 0.005, 0.02), film, [-0.025, 0.0225, 0]),\n mesh(bx(0.05, 0.012, 0.08), film, [0.1, 0.006, 0]),\n mesh(bx(0.03, 0.025, 0.04), film, [0.11, 0.0125, 0]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const trekkingBackpack70L: ItemModelBuilder = ({ mesh, bx, G, cloth, plastic }) => {\n const main = cloth(0x5d5640)\n const dark = cloth(0x2f2b22)\n return G(\n mesh(bx(0.34, 0.2, 0.2), dark, [0, 0.1, -0.03]),\n mesh(bx(0.36, 0.49, 0.2), main, [0, 0.445, -0.03]),\n mesh(bx(0.38, 0.06, 0.26), dark, [0, 0.72, -0.02]),\n mesh(bx(0.28, 0.3, 0.08), main, [0, 0.35, 0.11]),\n mesh(bx(0.06, 0.45, 0.02), dark, [-0.1, 0.45, -0.14]),\n mesh(bx(0.06, 0.45, 0.02), dark, [0.1, 0.45, -0.14]),\n mesh(bx(0.38, 0.03, 0.02), dark, [0, 0.3, 0.14]),\n mesh(bx(0.05, 0.03, 0.02), plastic(0x1c1d1f), [0, 0.3, 0.14]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const tshirt: ItemModelBuilder = ({ mesh, bx, G, cloth }) => {\n const fabric = cloth(0x8a8f94)\n const rib = cloth(0x6f7378)\n const inside = cloth(0x2b2d30)\n return G(\n mesh(bx(0.21, 0.0392, 0.22), fabric, [0, 0.0196, 0]),\n mesh(bx(0.045, 0.03, 0.08), fabric, [-0.1275, 0.015, -0.07]),\n mesh(bx(0.045, 0.03, 0.08), fabric, [0.1275, 0.015, -0.07]),\n mesh(bx(0.045, 0.034, 0.012), rib, [-0.1275, 0.017, -0.024]),\n mesh(bx(0.045, 0.034, 0.012), rib, [0.1275, 0.017, -0.024]),\n mesh(bx(0.07, 0.04, 0.024), inside, [0, 0.02, -0.098]),\n mesh(bx(0.09, 0.0394, 0.012), rib, [0, 0.0197, -0.1]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const wateringCan: ItemModelBuilder = ({ mesh, cyl, bx, G, metal }) => {\n const zinc = metal(0x7f8b8f)\n const group = G()\n group.add(mesh(cyl(0.09, 0.09, 0.2, 16), zinc, [-0.06, 0.1, 0]))\n group.add(mesh(cyl(0.07, 0.07, 0.004, 16), metal(0x4b5256), [-0.06, 0.2, 0]))\n group.add(mesh(cyl(0.012, 0.02, 0.22, 8), zinc, [0.1194, 0.115, 0], [0, 0, -0.85]))\n group.add(mesh(cyl(0.035, 0.022, 0.02, 12), zinc, [0.2094, 0.225, 0], [0, 0, -0.85]))\n group.add(mesh(bx(0.01, 0.16, 0.02), zinc, [-0.155, 0.12, 0]))\n group.add(mesh(bx(0.05, 0.01, 0.02), zinc, [-0.135, 0.2, 0]))\n group.add(mesh(bx(0.05, 0.01, 0.02), zinc, [-0.135, 0.04, 0]))\n return group\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const wheelbarrow: ItemModelBuilder = ({ mesh, cyl, bx, G, metal, plastic }) => {\n const tub = metal(0x2f5d3a)\n const frame = metal(0x3a3d40)\n const tire = plastic(0x1d1e20)\n const tilt = 0.42\n return G(\n mesh(bx(0.4, 0.02, 0.5), tub, [0, 0.38, 0.2]),\n mesh(bx(0.02, 0.29, 0.62), tub, [-0.255, 0.515, 0.2], [0, 0, tilt]),\n mesh(bx(0.02, 0.29, 0.62), tub, [0.255, 0.515, 0.2], [0, 0, -tilt]),\n mesh(bx(0.5, 0.29, 0.02), tub, [0, 0.515, 0.5], [0.5, 0, 0]),\n mesh(bx(0.5, 0.29, 0.02), tub, [0, 0.515, -0.1], [-0.5, 0, 0]),\n mesh(bx(0.03, 0.03, 1.3), frame, [-0.2, 0.33, -0.1]),\n mesh(bx(0.03, 0.03, 1.3), frame, [0.2, 0.33, -0.1]),\n mesh(cyl(0.02, 0.02, 0.3, 6), plastic(0x6b4a2f), [-0.2, 0.33, -0.6], [Math.PI / 2, 0, 0]),\n mesh(cyl(0.02, 0.02, 0.3, 6), plastic(0x6b4a2f), [0.2, 0.33, -0.6], [Math.PI / 2, 0, 0]),\n mesh(bx(0.03, 0.31, 0.03), frame, [-0.2, 0.155, -0.35]),\n mesh(bx(0.03, 0.31, 0.03), frame, [0.2, 0.155, -0.35]),\n mesh(bx(0.02, 0.15, 0.02), frame, [-0.05, 0.27, 0.55]),\n mesh(bx(0.02, 0.15, 0.02), frame, [0.05, 0.27, 0.55]),\n mesh(cyl(0.2, 0.2, 0.06, 12), tire, [0, 0.2, 0.55], [0, 0, Math.PI / 2]),\n )\n}\n","import type { ItemModelBuilder } from './registry'\n\n/**\n * Authored in the kit (no team model delivered); replace when the items team delivers one.\n */\nexport const windupAlarmClock: ItemModelBuilder = ({ M, mesh, cyl, bx, G, metal, plastic }) => {\n const steel = metal(0xa7a9ab)\n const bell = metal(0x7e8083)\n const quarter = Math.PI / 2\n return G(\n mesh(cyl(0.0475, 0.0475, 0.048, 18), steel, [0, 0.0575, 0], [quarter, 0, 0]),\n mesh(cyl(0.04, 0.04, 0.002, 18), plastic(0xe8e2cf), [0, 0.0575, 0.025], [quarter, 0, 0]),\n mesh(bx(0.003, 0.026, 0.0015), plastic(0x1c1c1c), [0, 0.07, 0.0255]),\n mesh(bx(0.003, 0.018, 0.0015), plastic(0x1c1c1c), [0.008, 0.0575, 0.0255], [0, 0, -quarter]),\n mesh(cyl(0.005, 0.008, 0.014, 6), steel, [-0.03, 0.007, 0]),\n mesh(cyl(0.005, 0.008, 0.014, 6), steel, [0.03, 0.007, 0]),\n mesh(cyl(0.008, 0.0215, 0.016, 10), bell, [-0.034, 0.105, 0]),\n mesh(cyl(0.008, 0.0215, 0.016, 10), bell, [0.034, 0.105, 0]),\n mesh(cyl(0.002, 0.002, 0.01, 6), steel, [-0.026, 0.118, 0]),\n mesh(cyl(0.002, 0.002, 0.01, 6), steel, [0.026, 0.118, 0]),\n mesh(bx(0.052, 0.004, 0.004), steel, [0, 0.123, 0]),\n mesh(cyl(0.003, 0.003, 0.007, 6), steel, [0, 0.0575, -0.0255], [quarter, 0, 0]),\n mesh(bx(0.022, 0.008, 0.003), M(0xa7a9ab, 'metal', { metalness: 0.55, roughness: 0.45 }), [0, 0.0575, -0.0275]),\n )\n}\n","import data from '../data/models.json'\n\nimport { cannedBeans } from './canned-beans'\nimport { waterBottle } from './water-bottle'\nimport { rice } from './rice'\nimport { militaryRation } from './military-ration'\nimport { cachaca } from './cachaca'\nimport { firstAidKit } from './first-aid-kit'\nimport { bandage } from './bandage'\nimport { amoxicillin } from './amoxicillin'\nimport { crowbar } from './crowbar'\nimport { hammer } from './hammer'\nimport { machete } from './machete'\nimport { axe } from './axe'\nimport { nailBat } from './nail-bat'\nimport { hikingBackpack40L } from './hiking-backpack-40l'\nimport { flashlight } from './flashlight'\nimport { portableRadio } from './portable-radio'\nimport { houseKey } from './house-key'\nimport { survivorDiary } from './survivor-diary'\nimport { motorcycleHelmet } from './motorcycle-helmet'\nimport { lpgCylinder13Kg } from './lpg-cylinder-13kg'\nimport { fuelJerrycan } from './fuel-jerrycan'\nimport { walkieTalkies } from './walkie-talkies'\nimport { batteries } from './batteries'\nimport { woodenPlank } from './wooden-plank'\nimport { sugar } from './sugar'\nimport { chocolateBar } from './chocolate-bar'\nimport { potatoes } from './potatoes'\nimport { biscuits } from './biscuits'\nimport { coffee } from './coffee'\nimport { rawBeef } from './raw-beef'\nimport { gameMeat } from './game-meat'\nimport { jerkedBeef } from './jerked-beef'\nimport { homePreserves } from './home-preserves'\nimport { eggs } from './eggs'\nimport { cassavaFlour } from './cassava-flour'\nimport { beans } from './beans'\nimport { frozenChicken } from './frozen-chicken'\nimport { orange } from './orange'\nimport { condensedMilk } from './condensed-milk'\nimport { pasta } from './pasta'\nimport { instantNoodles } from './instant-noodles'\nimport { cassavaRoot } from './cassava-root'\nimport { cannedCornAndPeas } from './canned-corn-and-peas'\nimport { mortadella } from './mortadella'\nimport { freshFish } from './fresh-fish'\nimport { saltedFish } from './salted-fish'\nimport { bananaBunch } from './banana-bunch'\nimport { honeyJar } from './honey-jar'\nimport { bread } from './bread'\nimport { cheese } from './cheese'\nimport { rapadura } from './rapadura'\nimport { dogFood } from './dog-food'\nimport { salt } from './salt'\nimport { snackChips } from './snack-chips'\nimport { cannedSausages } from './canned-sausages'\nimport { cannedSardines } from './canned-sardines'\nimport { cookingOil } from './cooking-oil'\nimport { beerCan } from './beer-can'\nimport { energyDrink } from './energy-drink'\nimport { waterJug5l } from './water-jug-5l'\nimport { sportsDrink } from './sports-drink'\nimport { milkCarton } from './milk-carton'\nimport { sodaCan } from './soda-can'\nimport { juiceBox } from './juice-box'\nimport { communionWine } from './communion-wine'\nimport { coconutWater } from './coconut-water'\nimport { dirtyWater } from './dirty-water'\nimport { painkillers } from './painkillers'\nimport { tramadol } from './tramadol'\nimport { ibuprofen } from './ibuprofen'\nimport { antihistamine } from './antihistamine'\nimport { ceftriaxone } from './ceftriaxone'\nimport { clonazepam } from './clonazepam'\nimport { activatedCharcoal } from './activated-charcoal'\nimport { adhesiveBandages } from './adhesive-bandages'\nimport { medicalTape } from './medical-tape'\nimport { sterileGauze } from './sterile-gauze'\nimport { povidoneIodine } from './povidone-iodine'\nimport { sutureKit } from './suture-kit'\nimport { examGloves } from './exam-gloves'\nimport { n95Mask } from './n95-mask'\nimport { multivitamin } from './multivitamin'\nimport { maintenanceMedication } from './maintenance-medication'\nimport { rehydrationSalts } from './rehydration-salts'\nimport { syringe } from './syringe'\nimport { antivenom } from './antivenom'\nimport { salineIvBag } from './saline-iv-bag'\nimport { splint } from './splint'\nimport { thermometer } from './thermometer'\nimport { alcohol70 } from './alcohol-70'\nimport { canOpener } from './can-opener'\nimport { pliers } from './pliers'\nimport { boltCutters } from './bolt-cutters'\nimport { bucket } from './bucket'\nimport { binoculars } from './binoculars'\nimport { matches } from './matches'\nimport { pocketKnife } from './pocket-knife'\nimport { screwdriver } from './screwdriver'\nimport { adjustableWrench } from './adjustable-wrench'\nimport { hoe } from './hoe'\nimport { fireExtinguisher } from './fire-extinguisher'\nimport { ductTape } from './duct-tape'\nimport { campStove } from './camp-stove'\nimport { lighter } from './lighter'\nimport { lockpickKit } from './lockpick-kit'\nimport { sewingKit } from './sewing-kit'\nimport { carJack } from './car-jack'\nimport { mechanicToolbox } from './mechanic-toolbox'\nimport { gasTorch } from './gas-torch'\nimport { inverterWelder } from './inverter-welder'\nimport { pot } from './pot'\nimport { cordlessDrill } from './cordless-drill'\nimport { flintStriker } from './flint-striker'\nimport { sharpeningStone } from './sharpening-stone'\nimport { shovel } from './shovel'\nimport { hacksaw } from './hacksaw'\nimport { handsaw } from './handsaw'\nimport { scissors } from './scissors'\nimport { recurveBow } from './recurve-bow'\nimport { crossbow } from './crossbow'\nimport { ironPipe } from './iron-pipe'\nimport { meatCleaver } from './meat-cleaver'\nimport { slingshot } from './slingshot'\nimport { knife } from './knife'\nimport { tacticalKnife } from './tactical-knife'\nimport { arrowsAndBolts } from './arrows-and-bolts'\nimport { sickle } from './sickle'\nimport { castIronSkillet } from './cast-iron-skillet'\nimport { improvisedSpear } from './improvised-spear'\nimport { hatchet } from './hatchet'\nimport { sledgehammer } from './sledgehammer'\nimport { chainsaw } from './chainsaw'\nimport { pickaxe } from './pickaxe'\nimport { baseballBat } from './baseball-bat'\nimport { policeBaton } from './police-baton'\nimport { wireRoll } from './wire-roll'\nimport { barbedWire } from './barbed-wire'\nimport { glassShards } from './glass-shards'\nimport { sheetMetal } from './sheet-metal'\nimport { cementBag } from './cement-bag'\nimport { epoxyGlue } from './epoxy-glue'\nimport { electronicComponents } from './electronic-components'\nimport { rope } from './rope'\nimport { copperWire } from './copper-wire'\nimport { petBottle } from './pet-bottle'\nimport { glassBottle } from './glass-bottle'\nimport { emptyCan } from './empty-can'\nimport { firewood } from './firewood'\nimport { tarp } from './tarp'\nimport { screws } from './screws'\nimport { nails } from './nails'\nimport { raffiaSack } from './raffia-sack'\nimport { scrapMetal } from './scrap-metal'\nimport { bricks } from './bricks'\nimport { rag } from './rag'\nimport { rebar } from './rebar'\nimport { lubricantSpray } from './lubricant-spray'\nimport { armyCamouflageUniform } from './army-camouflage-uniform'\nimport { backpack } from './backpack'\nimport { ballisticVest } from './ballistic-vest'\nimport { battery9V } from './battery-9v'\nimport { beanSeeds } from './bean-seeds'\nimport { beekeeperSuit } from './beekeeper-suit'\nimport { candles } from './candles'\nimport { carAlarmRemote } from './car-alarm-remote'\nimport { carBattery12V } from './car-battery-12v'\nimport { carKey } from './car-key'\nimport { cash } from './cash'\nimport { cassavaCuttings } from './cassava-cuttings'\nimport { cbRadio } from './cb-radio'\nimport { cellKey } from './cell-key'\nimport { charcoalBag } from './charcoal-bag'\nimport { cigarettes } from './cigarettes'\nimport { cityMap } from './city-map'\nimport { combatBoots } from './combat-boots'\nimport { coolerBox } from './cooler-box'\nimport { cornSeeds } from './corn-seeds'\nimport { crossbodyBag } from './crossbody-bag'\nimport { deliveryBag } from './delivery-bag'\nimport { denimJacket } from './denim-jacket'\nimport { diesel } from './diesel'\nimport { diyMagazine } from './diy-magazine'\nimport { dogTag } from './dog-tag'\nimport { electricFenceEnergizer } from './electric-fence-energizer'\nimport { extensionCord } from './extension-cord'\nimport { fannyPack } from './fanny-pack'\nimport { farmersAlmanac } from './farmers-almanac'\nimport { fertilizerBag } from './fertilizer-bag'\nimport { firefighterSuit } from './firefighter-suit'\nimport { fishingNet } from './fishing-net'\nimport { fishingRod } from './fishing-rod'\nimport { fishingTackleBox } from './fishing-tackle-box'\nimport { flipFlops } from './flip-flops'\nimport { foldingSolarPanel } from './folding-solar-panel'\nimport { gasCartridge } from './gas-cartridge'\nimport { gasoline } from './gasoline'\nimport { generatorKey } from './generator-key'\nimport { hardHat } from './hard-hat'\nimport { headlamp } from './headlamp'\nimport { hoodie } from './hoodie'\nimport { janitorKeys } from './janitor-keys'\nimport { jeans } from './jeans'\nimport { kaleAndLettuceSeeds } from './kale-and-lettuce-seeds'\nimport { kerosene } from './kerosene'\nimport { laptop } from './laptop'\nimport { leatherMotorcycleJacket } from './leather-motorcycle-jacket'\nimport { leatherMotorcyclePants } from './leather-motorcycle-pants'\nimport { leatherWorkGloves } from './leather-work-gloves'\nimport { ledCampLantern } from './led-camp-lantern'\nimport { magazineArmGuard } from './magazine-arm-guard'\nimport { magazinesAndComics } from './magazines-and-comics'\nimport { masterKey } from './master-key'\nimport { mechanicCoveralls } from './mechanic-coveralls'\nimport { militaryBackpack } from './military-backpack'\nimport { militaryRadio } from './military-radio'\nimport { mobilePhone } from './mobile-phone'\nimport { motorOil } from './motor-oil'\nimport { nightVisionGoggles } from './night-vision-goggles'\nimport { note } from './note'\nimport { paddedCoat } from './padded-coat'\nimport { padlockKey } from './padlock-key'\nimport { photo } from './photo'\nimport { portableGenerator } from './portable-generator'\nimport { powerBank } from './power-bank'\nimport { pumpkinSeeds } from './pumpkin-seeds'\nimport { raincoat } from './raincoat'\nimport { roadMap } from './road-map'\nimport { rollingSuitcase } from './rolling-suitcase'\nimport { rubberBoots } from './rubber-boots'\nimport { safeKey } from './safe-key'\nimport { safetyGoggles } from './safety-goggles'\nimport { sheetMetalForearmGuard } from './sheet-metal-forearm-guard'\nimport { shoppingBag } from './shopping-bag'\nimport { shoppingCart } from './shopping-cart'\nimport { skillBook } from './skill-book'\nimport { snareTrap } from './snare-trap'\nimport { sneakers } from './sneakers'\nimport { tacticalVest } from './tactical-vest'\nimport { technicalManual } from './technical-manual'\nimport { toolBelt } from './tool-belt'\nimport { trashBag } from './trash-bag'\nimport { trekkingBackpack70L } from './trekking-backpack-70l'\nimport { tshirt } from './tshirt'\nimport { wateringCan } from './watering-can'\nimport { wheelbarrow } from './wheelbarrow'\nimport { windupAlarmClock } from './windup-alarm-clock'\nimport type { ItemModelBuilder, ItemModelEntry } from './registry'\n\n/** The builder of each model of the showcase, by catalog id. */\nconst BUILDERS: Readonly<Record<string, ItemModelBuilder>> = {\n canned_beans: cannedBeans,\n water_bottle: waterBottle,\n rice: rice,\n military_ration: militaryRation,\n cachaca: cachaca,\n first_aid_kit: firstAidKit,\n bandage: bandage,\n amoxicillin: amoxicillin,\n crowbar: crowbar,\n hammer: hammer,\n machete: machete,\n axe: axe,\n nail_bat: nailBat,\n hiking_backpack_40l: hikingBackpack40L,\n flashlight: flashlight,\n portable_radio: portableRadio,\n house_key: houseKey,\n survivor_diary: survivorDiary,\n motorcycle_helmet: motorcycleHelmet,\n lpg_cylinder_13kg: lpgCylinder13Kg,\n fuel_jerrycan: fuelJerrycan,\n walkie_talkies: walkieTalkies,\n batteries: batteries,\n wooden_plank: woodenPlank,\n sugar: sugar,\n chocolate_bar: chocolateBar,\n potatoes: potatoes,\n biscuits: biscuits,\n coffee: coffee,\n raw_beef: rawBeef,\n game_meat: gameMeat,\n jerked_beef: jerkedBeef,\n home_preserves: homePreserves,\n eggs: eggs,\n cassava_flour: cassavaFlour,\n beans: beans,\n frozen_chicken: frozenChicken,\n orange: orange,\n condensed_milk: condensedMilk,\n pasta: pasta,\n instant_noodles: instantNoodles,\n cassava_root: cassavaRoot,\n canned_corn_and_peas: cannedCornAndPeas,\n mortadella: mortadella,\n fresh_fish: freshFish,\n salted_fish: saltedFish,\n banana_bunch: bananaBunch,\n honey_jar: honeyJar,\n bread: bread,\n cheese: cheese,\n rapadura: rapadura,\n dog_food: dogFood,\n salt: salt,\n snack_chips: snackChips,\n canned_sausages: cannedSausages,\n canned_sardines: cannedSardines,\n cooking_oil: cookingOil,\n beer_can: beerCan,\n energy_drink: energyDrink,\n water_jug_5l: waterJug5l,\n sports_drink: sportsDrink,\n milk_carton: milkCarton,\n soda_can: sodaCan,\n juice_box: juiceBox,\n communion_wine: communionWine,\n coconut_water: coconutWater,\n dirty_water: dirtyWater,\n painkillers: painkillers,\n tramadol: tramadol,\n ibuprofen: ibuprofen,\n antihistamine: antihistamine,\n ceftriaxone: ceftriaxone,\n clonazepam: clonazepam,\n activated_charcoal: activatedCharcoal,\n adhesive_bandages: adhesiveBandages,\n medical_tape: medicalTape,\n sterile_gauze: sterileGauze,\n povidone_iodine: povidoneIodine,\n suture_kit: sutureKit,\n exam_gloves: examGloves,\n n95_mask: n95Mask,\n multivitamin: multivitamin,\n maintenance_medication: maintenanceMedication,\n rehydration_salts: rehydrationSalts,\n syringe: syringe,\n antivenom: antivenom,\n saline_iv_bag: salineIvBag,\n splint: splint,\n thermometer: thermometer,\n alcohol_70: alcohol70,\n can_opener: canOpener,\n pliers: pliers,\n bolt_cutters: boltCutters,\n bucket: bucket,\n binoculars: binoculars,\n matches: matches,\n pocket_knife: pocketKnife,\n screwdriver: screwdriver,\n adjustable_wrench: adjustableWrench,\n hoe: hoe,\n fire_extinguisher: fireExtinguisher,\n duct_tape: ductTape,\n camp_stove: campStove,\n lighter: lighter,\n lockpick_kit: lockpickKit,\n sewing_kit: sewingKit,\n car_jack: carJack,\n mechanic_toolbox: mechanicToolbox,\n gas_torch: gasTorch,\n inverter_welder: inverterWelder,\n pot: pot,\n cordless_drill: cordlessDrill,\n flint_striker: flintStriker,\n sharpening_stone: sharpeningStone,\n shovel: shovel,\n hacksaw: hacksaw,\n handsaw: handsaw,\n scissors: scissors,\n recurve_bow: recurveBow,\n crossbow: crossbow,\n iron_pipe: ironPipe,\n meat_cleaver: meatCleaver,\n slingshot: slingshot,\n knife: knife,\n tactical_knife: tacticalKnife,\n arrows_and_bolts: arrowsAndBolts,\n sickle: sickle,\n cast_iron_skillet: castIronSkillet,\n improvised_spear: improvisedSpear,\n hatchet: hatchet,\n sledgehammer: sledgehammer,\n chainsaw: chainsaw,\n pickaxe: pickaxe,\n baseball_bat: baseballBat,\n police_baton: policeBaton,\n wire_roll: wireRoll,\n barbed_wire: barbedWire,\n glass_shards: glassShards,\n sheet_metal: sheetMetal,\n cement_bag: cementBag,\n epoxy_glue: epoxyGlue,\n electronic_components: electronicComponents,\n rope: rope,\n copper_wire: copperWire,\n pet_bottle: petBottle,\n glass_bottle: glassBottle,\n empty_can: emptyCan,\n firewood: firewood,\n tarp: tarp,\n screws: screws,\n nails: nails,\n raffia_sack: raffiaSack,\n scrap_metal: scrapMetal,\n bricks: bricks,\n rag: rag,\n rebar: rebar,\n lubricant_spray: lubricantSpray,\n army_camouflage_uniform: armyCamouflageUniform,\n backpack: backpack,\n ballistic_vest: ballisticVest,\n battery_9v: battery9V,\n bean_seeds: beanSeeds,\n beekeeper_suit: beekeeperSuit,\n candles: candles,\n car_alarm_remote: carAlarmRemote,\n car_battery_12v: carBattery12V,\n car_key: carKey,\n cash: cash,\n cassava_cuttings: cassavaCuttings,\n cb_radio: cbRadio,\n cell_key: cellKey,\n charcoal_bag: charcoalBag,\n cigarettes: cigarettes,\n city_map: cityMap,\n combat_boots: combatBoots,\n cooler_box: coolerBox,\n corn_seeds: cornSeeds,\n crossbody_bag: crossbodyBag,\n delivery_bag: deliveryBag,\n denim_jacket: denimJacket,\n diesel: diesel,\n diy_magazine: diyMagazine,\n dog_tag: dogTag,\n electric_fence_energizer: electricFenceEnergizer,\n extension_cord: extensionCord,\n fanny_pack: fannyPack,\n farmers_almanac: farmersAlmanac,\n fertilizer_bag: fertilizerBag,\n firefighter_suit: firefighterSuit,\n fishing_net: fishingNet,\n fishing_rod: fishingRod,\n fishing_tackle_box: fishingTackleBox,\n flip_flops: flipFlops,\n folding_solar_panel: foldingSolarPanel,\n gas_cartridge: gasCartridge,\n gasoline: gasoline,\n generator_key: generatorKey,\n hard_hat: hardHat,\n headlamp: headlamp,\n hoodie: hoodie,\n janitor_keys: janitorKeys,\n jeans: jeans,\n kale_and_lettuce_seeds: kaleAndLettuceSeeds,\n kerosene: kerosene,\n laptop: laptop,\n leather_motorcycle_jacket: leatherMotorcycleJacket,\n leather_motorcycle_pants: leatherMotorcyclePants,\n leather_work_gloves: leatherWorkGloves,\n led_camp_lantern: ledCampLantern,\n magazine_arm_guard: magazineArmGuard,\n magazines_and_comics: magazinesAndComics,\n master_key: masterKey,\n mechanic_coveralls: mechanicCoveralls,\n military_backpack: militaryBackpack,\n military_radio: militaryRadio,\n mobile_phone: mobilePhone,\n motor_oil: motorOil,\n night_vision_goggles: nightVisionGoggles,\n note: note,\n padded_coat: paddedCoat,\n padlock_key: padlockKey,\n photo: photo,\n portable_generator: portableGenerator,\n power_bank: powerBank,\n pumpkin_seeds: pumpkinSeeds,\n raincoat: raincoat,\n road_map: roadMap,\n rolling_suitcase: rollingSuitcase,\n rubber_boots: rubberBoots,\n safe_key: safeKey,\n safety_goggles: safetyGoggles,\n sheet_metal_forearm_guard: sheetMetalForearmGuard,\n shopping_bag: shoppingBag,\n shopping_cart: shoppingCart,\n skill_book: skillBook,\n snare_trap: snareTrap,\n sneakers: sneakers,\n tactical_vest: tacticalVest,\n technical_manual: technicalManual,\n tool_belt: toolBelt,\n trash_bag: trashBag,\n trekking_backpack_70l: trekkingBackpack70L,\n tshirt: tshirt,\n watering_can: wateringCan,\n wheelbarrow: wheelbarrow,\n windup_alarm_clock: windupAlarmClock,\n}\n\n/** The 24 models of the showcase in the page's order: the entry of `data/models.json` (generated by `tools/items-catalog`) and the builder ported from the page. */\nexport const SHIPPED_MODELS: ReadonlyArray<{ readonly entry: ItemModelEntry; readonly builder: ItemModelBuilder }> = (data as unknown as ItemModelEntry[]).map((entry) => {\n const builder = BUILDERS[entry.id]\n if (!builder) throw new Error(`game-items-three: no builder for the model \"${entry.id}\"`)\n return { entry, builder }\n})\n","import type * as THREE_NS from 'three'\n\nimport type { ItemKit } from '../kit'\nimport { SHIPPED_MODELS } from './shipped'\n\n/** One model of the showcase as `data/models.json` keeps it: the item it draws, the id the team gave it, the box it has in the units of the page and the scale to metres. */\nexport interface ItemModelEntry {\n /** Catalog id of the item (`canned_beans`). */\n readonly id: string\n /** The id in the team's `MODELS` (`feijao_lata`). */\n readonly teamId: string\n /** Box of the builder's group in the page's units (`Box3.setFromObject`), x y z. */\n readonly teamBox: readonly [number, number, number]\n /** Metres per unit of the page, from one real measure of the object. */\n readonly scale: number\n}\n\n/** A builder of the showcase, ported as it is: it draws in the page's units and returns the group. */\nexport type ItemModelBuilder = (kit: ItemKit) => THREE_NS.Group\n\n/** The models of one registry: what `buildItem` reads through its `models` option. */\nexport interface ItemModelRegistry {\n has(id: string): boolean\n entry(id: string): ItemModelEntry | undefined\n builder(id: string): ItemModelBuilder | undefined\n /** The ids registered, in the order of registration (the order of the showcase for the ones the kit ships). */\n list(): string[]\n /** Adds (or replaces) the model of an item: `entry.id` is the catalog id the item's `model` field names. */\n register(entry: ItemModelEntry, builder: ItemModelBuilder): void\n /** Takes a model out (a game that wants the simple shape instead). */\n unregister(id: string): void\n}\n\nexport const registryOver = (entries: Map<string, ItemModelEntry>, builders: Map<string, ItemModelBuilder>): ItemModelRegistry => ({\n has: (id) => builders.has(id),\n entry: (id) => entries.get(id),\n builder: (id) => builders.get(id),\n list: () => [...entries.keys()],\n register(entry, builder) {\n entries.set(entry.id, entry)\n builders.set(entry.id, builder)\n },\n unregister(id) {\n entries.delete(id)\n builders.delete(id)\n },\n})\n\nlet defaultRegistry: ItemModelRegistry | undefined\n\n/** The registry behind `registerItemModel`, `hasItemModel` and the rest of the global functions, created on first use. */\nexport const defaultItemModels = (): ItemModelRegistry =>\n (defaultRegistry ??= registryOver(new Map(SHIPPED_MODELS.map(({ entry }) => [entry.id, entry])), new Map(SHIPPED_MODELS.map(({ entry, builder }) => [entry.id, builder]))))\n\n/**\n * Adds (or replaces) the model of an item: `entry.id` is the catalog id the item's `model` field names.\n * @deprecated use `createItemModels(...).register`.\n */\nexport const registerItemModel = (entry: ItemModelEntry, builder: ItemModelBuilder): void => defaultItemModels().register(entry, builder)\n\n/** @deprecated use `createItemModels(...).unregister`. */\nexport const unregisterItemModel = (id: string): void => defaultItemModels().unregister(id)\n\n/** @deprecated use `createItemModels(...).entry`. */\nexport const itemModelEntry = (id: string): ItemModelEntry | undefined => defaultItemModels().entry(id)\n/** @deprecated use `createItemModels(...).builder`. */\nexport const itemModelBuilder = (id: string): ItemModelBuilder | undefined => defaultItemModels().builder(id)\n/** @deprecated use `createItemModels(...).has`. */\nexport const hasItemModel = (id: string): boolean => defaultItemModels().has(id)\n/** @deprecated use `createItemModels(...).list`. */\nexport const listItemModels = (): string[] => defaultItemModels().list()\n","import type * as THREE_NS from 'three'\n\nimport type { ItemKit, Vec3Tuple } from './kit'\n\n/** The simple shapes the kit draws at the real size of an item, by the `shape` hint of its definition. */\nexport const SHAPES = [\n 'can', 'bag', 'box', 'bottle', 'tool', 'roll', 'dish', 'cloth', 'shoe', 'jar', 'paper', 'fruit', 'cup', 'tube',\n 'blade', 'long_tool', 'garment', 'backpack', 'jerrycan', 'tank', 'book', 'key', 'battery', 'plank', 'device',\n] as const\nexport type ShapeId = (typeof SHAPES)[number]\n\n/** What a shape drawer is given: the kit, the size in metres, the colour of the item and the level of detail (1 full, 0.5 half the segments). */\nexport interface ShapeContext {\n k: ItemKit\n w: number\n h: number\n d: number\n color: number\n detail: number\n}\ntype Drawer = (c: ShapeContext) => THREE_NS.Group\n\nconst DEFAULT_COLOR = 0x8a8f94\nconst PI = Math.PI\n\n/** The colour `factor` times lighter (above 1) or darker (below 1), per channel. */\nexport function shade(color: number, factor: number): number {\n const channel = (shift: number): number => Math.max(0, Math.min(255, Math.round(((color >> shift) & 255) * factor)))\n return (channel(16) << 16) | (channel(8) << 8) | channel(0)\n}\n\n/** Segments of a round part at a level of detail: never below 5. */\nconst seg = (c: ShapeContext, n: number): number => Math.max(5, Math.round(n * c.detail))\n\n/** The long axis of a size and the three sides in the frame where that axis is x: `L` long, `a` the next, `b` the shortest of the other two in their own order. */\nexport function canonicalFrame(size: Vec3Tuple): { axis: 0 | 1 | 2; L: number; a: number; b: number } {\n const [w, h, d] = size\n if (h >= w && h >= d) return { axis: 1, L: h, a: w, b: d }\n if (d >= w && d >= h) return { axis: 2, L: d, a: h, b: w }\n return { axis: 0, L: w, a: h, b: d }\n}\n\n/** Turns a group drawn with its long side on x so that the long side lies on the given axis. */\nfunction orient(c: ShapeContext, group: THREE_NS.Group, axis: 0 | 1 | 2): THREE_NS.Group {\n if (axis === 0) return group\n const holder = c.k.G(group)\n if (axis === 1) holder.rotation.z = PI / 2\n else holder.rotation.y = -PI / 2\n return holder\n}\n\n/** A shape drawn along x in the frame `(L, a, b)`, then turned onto the long axis of the size. */\nconst alongLong = (draw: (c: ShapeContext, L: number, a: number, b: number) => THREE_NS.Group): Drawer => (c) => {\n const { axis, L, a, b } = canonicalFrame([c.w, c.h, c.d])\n return orient(c, draw(c, L, a, b), axis)\n}\n\n/** A group drawn with a radius of 0.5 and stretched to the width and depth of the item (an oval can fills its box). */\nconst across = (c: ShapeContext, group: THREE_NS.Group): THREE_NS.Group => {\n group.scale.set(c.w, 1, c.d)\n return c.k.G(group)\n}\n\nconst can: Drawer = (c) => {\n const { k, h } = c\n const body = k.metal(0x8d9096)\n return across(c, k.G(k.mesh(k.cyl(0.5, 0.5, h * 0.94, seg(c, 14)), body), k.mesh(k.cyl(0.5, 0.5, h * 0.5, seg(c, 14)), k.food(c.color), [0, 0, 0], [0, 0, 0], [1.0, 1, 1.0]), k.mesh(k.cyl(0.5, 0.5, h * 0.03, seg(c, 14)), body, [0, h * 0.485, 0]), k.mesh(k.cyl(0.5, 0.5, h * 0.03, seg(c, 14)), body, [0, -h * 0.485, 0])))\n}\n\nconst bottle: Drawer = (c) => {\n const { k, h } = c\n const r = 0.5\n const profile: Array<[number, number]> = [[0, -h / 2], [r, -h / 2], [r, h * 0.12], [r * 0.45, h * 0.3], [r * 0.4, h * 0.4], [0, h * 0.4]]\n return across(c, k.G(k.mesh(k.lathe(profile, seg(c, 14)), k.glass(c.color, 0.6)), k.mesh(k.cyl(r * 0.42, r * 0.42, h * 0.1, seg(c, 10)), k.plastic(shade(c.color, 0.5)), [0, h * 0.45, 0])))\n}\n\nconst jar: Drawer = (c) => {\n const { k, h } = c\n return across(c, k.G(k.mesh(k.cyl(0.5, 0.5, h * 0.82, seg(c, 14)), k.glass(c.color, 0.55), [0, -h * 0.09, 0]), k.mesh(k.cyl(0.5, 0.5, h * 0.18, seg(c, 14)), k.metal(0xb8913a), [0, h * 0.41, 0])))\n}\n\nconst bag: Drawer = (c) => {\n const { k, w, h, d } = c\n return k.G(k.mesh(k.bx(w, h * 0.88, d), k.paper(c.color), [0, -h * 0.06, 0]), k.mesh(k.bx(w * 1.0, h * 0.12, d * 0.5), k.paper(shade(c.color, 0.85)), [0, h * 0.44, 0]), k.mesh(k.bx(w * 0.7, h * 0.3, d * 1.0), k.paper(shade(c.color, 1.2)), [0, 0, 0]))\n}\n\nconst box: Drawer = (c) => {\n const { k, w, h, d } = c\n return k.G(k.mesh(k.bx(w, h, d), k.paper(c.color)), k.mesh(k.bx(w, h * 0.12, d), k.paper(shade(c.color, 0.8)), [0, h * 0.44, 0]), k.mesh(k.bx(w * 0.62, h * 0.4, d), k.paper(shade(c.color, 1.25)), [0, -h * 0.02, 0]))\n}\n\nconst cloth: Drawer = (c) => {\n const { k, w, h, d } = c\n const material = k.cloth(c.color)\n return k.G(k.mesh(k.bx(w, h * 0.55, d), material, [0, -h * 0.225, 0]), k.mesh(k.bx(w * 0.96, h * 0.45, d * 0.96), k.cloth(shade(c.color, 0.9)), [0, h * 0.275, 0]))\n}\n\nconst paper: Drawer = (c) => {\n const { k, w, h, d } = c\n const sheet = k.paper(c.color)\n return k.G(k.mesh(k.bx(w, h / 3, d), sheet, [0, -h / 3, 0]), k.mesh(k.bx(w * 0.98, h / 3, d * 0.98), k.paper(shade(c.color, 0.95)), [0, 0, 0]), k.mesh(k.bx(w, h / 3, d), sheet, [0, h / 3, 0]))\n}\n\nconst fruit: Drawer = (c) => {\n const { k, w, h, d } = c\n const sphere = new k.T.SphereGeometry(0.5, seg(c, 12), seg(c, 8))\n return k.G(k.mesh(sphere, k.food(c.color), [0, -h * 0.04, 0], [0, 0, 0], [w, h * 0.92, d]), k.mesh(k.cyl(h * 0.02, h * 0.02, h * 0.1, 6), k.wood(0x5a3a22), [0, h * 0.45, 0]))\n}\n\nconst dish: Drawer = (c) => {\n const { k, w, h, d } = c\n return k.G(k.mesh(k.cyl(0.5, 0.35, h, seg(c, 16)), k.plastic(c.color), [0, 0, 0], [0, 0, 0], [w, 1, d]))\n}\n\nconst cup: Drawer = (c) => {\n const { k, w, h, d } = c\n const profile: Array<[number, number]> = [[0, -h / 2], [0.38, -h / 2], [0.5, h / 2], [0.44, h / 2], [0.33, -h / 2 + h * 0.06], [0, -h / 2 + h * 0.06]]\n return k.G(k.mesh(k.lathe(profile, seg(c, 14)), k.plastic(c.color), [0, 0, 0], [0, 0, 0], [w, 1, d]))\n}\n\nconst tube: Drawer = (c) => {\n const { k, h } = c\n const material = k.plastic(c.color)\n return across(c, k.G(k.mesh(k.cyl(0.5, 0.42, h * 0.86, seg(c, 12)), material, [0, -h * 0.04, 0]), k.mesh(k.cyl(0.35, 0.35, h * 0.12, seg(c, 12)), k.plastic(shade(c.color, 0.6)), [0, h * 0.44, 0]), k.mesh(k.bx(1, h * 0.06, 0.25), material, [0, -h * 0.47, 0])))\n}\n\nconst roll: Drawer = (c) => {\n const { k, w, h, d } = c\n // the roll lies with its axis along the shortest side; the other two sides are the (oval) section\n const body = k.G(k.mesh(k.cyl(0.5, 0.5, 1, seg(c, 18)), k.paper(c.color)), k.mesh(k.cyl(0.18, 0.18, 0.98, seg(c, 12)), k.paper(0xb59d78)))\n if (h <= w && h <= d) body.scale.set(w, h, d)\n else if (w <= d) {\n body.rotation.z = PI / 2\n body.scale.set(h, w, d)\n } else {\n body.rotation.x = PI / 2\n body.scale.set(w, d, h)\n }\n return k.G(body)\n}\n\nconst shoe: Drawer = (c) => {\n const { k, w, h, d } = c\n const upper = k.cloth(c.color)\n return k.G(k.mesh(k.bx(w, h * 0.22, d), k.plastic(0x22251f), [0, -h * 0.39, 0]), k.mesh(k.bx(w * 0.42, h * 0.78, d * 0.96), upper, [-w * 0.29, h * 0.11, 0]), k.mesh(k.bx(w * 0.5, h * 0.5, d * 0.96), upper, [w * 0.25, -h * 0.03, 0]))\n}\n\nconst tool: Drawer = alongLong((c, L, a, b) => {\n const { k } = c\n const radius = Math.max(0.004, Math.min(a, b) / 2)\n return k.G(k.mesh(k.cyl(radius, radius, L * 0.74, seg(c, 10)), k.wood(0x8a643c), [-L * 0.13, 0, 0], [0, 0, PI / 2]), k.mesh(k.bx(L * 0.26, a, b), k.metal(shade(c.color, 1)), [L * 0.37, 0, 0]))\n})\n\nconst longTool: Drawer = alongLong((c, L, a, b) => {\n const { k } = c\n const radius = Math.max(0.004, Math.min(a, b) / 2) * 0.55\n return k.G(k.mesh(k.cyl(radius, radius, L * 0.94, seg(c, 10)), k.wood(0x9a7448), [0, 0, 0], [0, 0, PI / 2]), k.mesh(k.bx(L * 0.12, a, b), k.metal(c.color), [L * 0.44, 0, 0]))\n})\n\nconst blade: Drawer = alongLong((c, L, a, b) => {\n const { k } = c\n const edge = Math.min(0.0002, b * 0.05)\n const steel = k.extrude([[0, 0], [L * 0.66, 0], [L * 0.68, a * 0.4], [0, a]], Math.max(0.0005, b * 0.4 - 2 * edge), edge)\n return k.G(k.mesh(steel, k.metal(0xa9adb0), [-L * 0.18, -a / 2, -b * 0.2 + edge]), k.mesh(k.bx(L * 0.34, a * 0.6, b), k.wood(0x3b2a20), [-L * 0.33, 0, 0]))\n})\n\nconst garment: Drawer = (c) => {\n const { k, w, h, d } = c\n const material = k.cloth(c.color)\n return k.G(k.mesh(k.bx(w * 0.56, h, d), material), k.mesh(k.bx(w * 0.22, h * 0.42, d * 0.9), material, [-w * 0.39, h * 0.29, 0]), k.mesh(k.bx(w * 0.22, h * 0.42, d * 0.9), material, [w * 0.39, h * 0.29, 0]))\n}\n\nconst backpack: Drawer = (c) => {\n const { k, w, h, d } = c\n const material = k.cloth(c.color)\n const dome = new k.T.SphereGeometry(0.5, seg(c, 12), seg(c, 6), 0, PI * 2, 0, PI / 2)\n const strap = k.cloth(shade(c.color, 0.6))\n return k.G(k.mesh(k.bx(w, h * 0.78, d * 0.68), material, [0, -h * 0.11, -d * 0.14]), k.mesh(dome, material, [0, h * 0.28, -d * 0.14], [0, 0, 0], [w, h * 0.44, d * 0.68]), k.mesh(k.bx(w * 0.7, h * 0.4, d * 0.3), k.cloth(shade(c.color, 0.75)), [0, -h * 0.18, d * 0.35]), k.mesh(k.bx(w * 0.1, h * 0.7, d * 0.04), strap, [-w * 0.25, -h * 0.05, -d * 0.48]), k.mesh(k.bx(w * 0.1, h * 0.7, d * 0.04), strap, [w * 0.25, -h * 0.05, -d * 0.48]))\n}\n\nconst jerrycan: Drawer = (c) => {\n const { k, w, h, d } = c\n const material = k.plastic(c.color)\n return k.G(k.mesh(k.bx(w, h * 0.86, d), material, [0, -h * 0.07, 0]), k.mesh(k.bx(w * 0.4, h * 0.1, d * 0.5), material, [-w * 0.2, h * 0.45, 0]), k.mesh(k.cyl(d * 0.14, d * 0.18, h * 0.12, seg(c, 10)), k.plastic(0xd9a441), [w * 0.3, h * 0.44, 0]))\n}\n\nconst tank: Drawer = (c) => {\n const { k, h } = c\n const r = 0.5\n const profile: Array<[number, number]> = [[0, -h / 2], [r * 0.9, -h / 2], [r, -h * 0.4], [r, h * 0.22], [r * 0.6, h * 0.36], [r * 0.2, h * 0.4], [0, h * 0.4]]\n const metal = k.metal(c.color)\n return across(c, k.G(k.mesh(k.lathe(profile, seg(c, 14)), metal), k.mesh(k.cyl(r * 0.62, r * 0.62, h * 0.05, seg(c, 14)), metal, [0, h * 0.3, 0]), k.mesh(k.cyl(r * 0.18, r * 0.18, h * 0.12, seg(c, 8)), k.metal(0xb8913a), [0, h * 0.44, 0])))\n}\n\nconst book: Drawer = (c) => {\n const { k, w, h, d } = c\n const cover = k.paper(c.color)\n return k.G(k.mesh(k.bx(w, h, d * 0.14), cover, [0, 0, d * 0.43]), k.mesh(k.bx(w, h, d * 0.14), cover, [0, 0, -d * 0.43]), k.mesh(k.bx(w * 0.94, h * 0.96, d * 0.72), k.paper(0xe9e1cc), [w * 0.02, 0, 0]), k.mesh(k.bx(w * 0.08, h, d), k.paper(shade(c.color, 0.8)), [-w * 0.46, 0, 0]))\n}\n\nconst key: Drawer = alongLong((c, L, a, b) => {\n const { k } = c\n const metal = k.metal(0xb8913a)\n const ring = a * 0.5\n const tube = Math.min(b * 0.4, ring * 0.2)\n return k.G(k.mesh(new c.k.T.TorusGeometry(ring * 0.8, tube, 5, seg(c, 10)), k.metal(0x9a9da0), [-L / 2 + ring * 0.8 + tube, 0, 0]), k.mesh(k.bx(L * 0.62, a * 0.28, b), metal, [L * 0.12, 0, 0]), k.mesh(k.bx(L * 0.08, a * 0.22, b), metal, [L * 0.36, -a * 0.2, 0]), k.mesh(k.bx(L * 0.06, a * 0.22, b), metal, [L * 0.2, -a * 0.2, 0]))\n})\n\nconst battery: Drawer = alongLong((c, L, a, b) => {\n const { k } = c\n const r = Math.min(a, b) / 2\n return k.G(k.mesh(k.cyl(r, r, L * 0.94, seg(c, 14)), k.metal(c.color), [0, 0, 0], [0, 0, PI / 2]), k.mesh(k.cyl(r * 0.36, r * 0.36, L * 0.06, seg(c, 8)), k.metal(0xb9bdc0), [L * 0.47, 0, 0], [0, 0, PI / 2]))\n})\n\nconst plank: Drawer = alongLong((c, L, a, b) => {\n const { k } = c\n const nail = k.metal(0x7d8186)\n return k.G(k.mesh(k.bx(L, a, b), k.wood(0xa88459)), k.mesh(k.cyl(Math.min(a, b) * 0.1, Math.min(a, b) * 0.1, b * 0.98, 6), nail, [-L * 0.4, 0, 0], [PI / 2, 0, 0]), k.mesh(k.cyl(Math.min(a, b) * 0.1, Math.min(a, b) * 0.1, b * 0.98, 6), nail, [L * 0.4, 0, 0], [PI / 2, 0, 0]))\n})\n\nconst device: Drawer = (c) => {\n const { k, w, h, d } = c\n const screen = k.M(0x9fbf8a, 'glass', { emissive: 0x2f4a22, emissiveIntensity: 0.6, roughness: 0.2 })\n return k.G(k.mesh(k.bx(w, h, d * 0.96), k.plastic(c.color), [0, 0, -d * 0.02]), k.mesh(k.bx(w * 0.7, h * 0.32, d * 0.06), screen, [0, h * 0.22, d * 0.47]), k.mesh(k.cyl(Math.min(w, h) * 0.08, Math.min(w, h) * 0.08, d * 0.1, seg(c, 8)), k.metal(0xb9bdc0), [w * 0.25, -h * 0.18, d * 0.45], [PI / 2, 0, 0]))\n}\n\nconst DRAWERS: Readonly<Record<ShapeId, Drawer>> = {\n can, bag, box, bottle, tool, roll, dish, cloth, shoe, jar, paper, fruit, cup, tube, blade, long_tool: longTool, garment, backpack, jerrycan, tank, book, key, battery, plank, device,\n}\n\nexport const isShape = (value: string | undefined): value is ShapeId => value !== undefined && value in DRAWERS\n\n/** The item fields the shape choice reads. */\nexport interface ShapeSubject {\n category: string\n size: Vec3Tuple\n shape?: string\n color?: number\n}\n\n/**\n * The shape an item is drawn with: its own `shape` when it names one of the 25, else a box. The hints the household catalog uses (`tool`, `cloth`, `bag`, `box`, `paper`) are\n * refined by the category and the proportions, so that a rake is a long tool, a jacket a garment, a rucksack a backpack, a phone a device and a diary a book.\n */\nexport function shapeOf(subject: ShapeSubject): ShapeId {\n const hint = subject.shape\n if (!isShape(hint)) return 'box'\n const [w, h, d] = subject.size\n const { L, a, b } = canonicalFrame(subject.size)\n const long = L / Math.max(a, b, 1e-6) >= 4\n const flat = Math.min(w, h, d) / Math.max(w, h, d) <= 0.2\n switch (hint) {\n case 'tool':\n if (subject.category === 'keys') return 'key'\n if (subject.category === 'electronics') return 'device'\n if (long) return subject.category === 'melee' && Math.min(a, b) / L <= 0.1 && flat ? 'blade' : 'long_tool'\n return hint\n case 'cloth':\n return subject.category === 'clothing' ? 'garment' : hint\n case 'bag':\n return subject.category === 'bags' ? 'backpack' : hint\n case 'box':\n if (subject.category === 'electronics') return 'device'\n if (subject.category === 'books') return 'book'\n if (subject.category === 'keys') return 'key'\n return hint\n case 'paper':\n return subject.category === 'books' ? 'book' : hint\n default:\n return hint\n }\n}\n\n/** Draws the simple shape of an item at its real size, centred on the origin (the long side of long shapes lies on the long axis of `size`). */\nexport function drawShape(k: ItemKit, shape: ShapeId, size: Vec3Tuple, options: { color?: number; detail?: number } = {}): THREE_NS.Group {\n const [w, h, d] = size\n return DRAWERS[shape]({ k, w, h, d, color: options.color ?? DEFAULT_COLOR, detail: options.detail ?? 1 })\n}\n","import type * as THREE_NS from 'three'\n\nimport type { ItemMaterialData } from './kit'\n\n/** 0 new, 1 used, 2 spoiled (the three stages of the showcase). */\nexport type WearStage = 0 | 1 | 2\n\n/** The colour each material tag turns toward as it wears (`STAGE_TARGET` of the showcase). */\nexport const WEAR_TARGET: Readonly<Record<string, number>> = { food: 0x5d6b2e, metal: 0x7a3e1d, wood: 0x3f3326, cloth: 0x4a4033, plastic: 0x6b6556, paper: 0x8a7a52, glass: 0x55503a }\n\n/** How far toward the target colour each stage goes (`AMT`). */\nexport const WEAR_AMOUNT: readonly [number, number, number] = [0, 0.3, 0.62]\n\nconst hexToRgb = (hex: number): readonly [number, number, number] => [((hex >> 16) & 255) / 255, ((hex >> 8) & 255) / 255, (hex & 255) / 255]\n\nconst dataOf = (material: THREE_NS.Material): ItemMaterialData | undefined => {\n const data = material.userData as Partial<ItemMaterialData>\n return data.base && data.baseRgb && data.tag !== undefined && data.rough !== undefined ? (data as ItemMaterialData) : undefined\n}\n\n/** Every material under `root` that the kit made (with a tag), once each. */\nexport function wearableMaterials(root: THREE_NS.Object3D): THREE_NS.MeshStandardMaterial[] {\n const found = new Set<THREE_NS.MeshStandardMaterial>()\n root.traverse((object) => {\n const mesh = object as THREE_NS.Mesh\n if (!mesh.isMesh) return\n for (const material of Array.isArray(mesh.material) ? mesh.material : [mesh.material]) if (dataOf(material)) found.add(material as THREE_NS.MeshStandardMaterial)\n })\n return [...found]\n}\n\n/**\n * Sets the wear of an item (`setStage` of the showcase): each material goes from its own colour toward the target of its tag by `WEAR_AMOUNT[stage]`, gets rougher, and\n * metal loses its shine. The colours are mixed in sRGB, as the page mixes them (three r128 had no colour management), so stage 0 is exactly the colour the material was made with.\n * Takes the object or the list of materials of a kit.\n */\nexport function setWear(target: THREE_NS.Object3D | readonly THREE_NS.MeshStandardMaterial[], stage: WearStage): void {\n const materials = 'traverse' in target ? wearableMaterials(target) : target\n if ('traverse' in target) target.userData.wear = stage\n const amount = WEAR_AMOUNT[stage]\n for (const material of materials) {\n const data = dataOf(material)\n if (!data) continue\n const goal = WEAR_TARGET[data.tag]\n if (goal === undefined) continue\n const [tr, tg, tb] = hexToRgb(goal)\n const [r, g, b] = data.baseRgb\n material.color.setRGB(r + (tr - r) * amount, g + (tg - g) * amount, b + (tb - b) * amount, 'srgb')\n material.roughness = Math.min(1, data.rough + (0.2 * stage) / 2)\n if (data.tag === 'metal') material.metalness = Math.max(0.1, 0.55 - 0.2 * stage)\n }\n}\n","import type * as THREE_NS from 'three'\n\nexport type Vec3Like = readonly [number, number, number]\n\n/** The draw budgets of the Itens do Vale Cinzento page (section \"Desempenho com hordas\"). */\nexport interface ItemBudgets {\n /** Draw calls of all the items in a frame. */\n drawCalls: number\n /** A small item: at most this many triangles, and it disappears at `cullDistance`. */\n small: { triangles: number; cullDistance: number }\n /** A large item. */\n large: { triangles: number; cullDistance: number }\n /** The second level of detail has this share of the triangles of the first. */\n lod1Ratio: number\n /** Longest side (m) from which an item counts as large: the page does not say where small ends, so this is the kit's reading and a game can change it. */\n largeFrom: number\n}\n\nexport const ITEM_BUDGETS: ItemBudgets = {\n drawCalls: 30,\n small: { triangles: 400, cullDistance: 30 },\n large: { triangles: 1200, cullDistance: 60 },\n lod1Ratio: 0.5,\n largeFrom: 0.6,\n}\n\nexport type ItemSizeClass = 'small' | 'large'\n\nexport const sizeClassOf = (size: Vec3Like, budgets: ItemBudgets = ITEM_BUDGETS): ItemSizeClass => (Math.max(...size) >= budgets.largeFrom ? 'large' : 'small')\n\nexport const triangleBudgetOf = (size: Vec3Like, budgets: ItemBudgets = ITEM_BUDGETS): number => budgets[sizeClassOf(size, budgets)].triangles\n\nexport const cullDistanceOf = (size: Vec3Like, budgets: ItemBudgets = ITEM_BUDGETS): number => budgets[sizeClassOf(size, budgets)].cullDistance\n\n/** Triangles under `root`: visible meshes only, indexed or not. */\nexport function countTriangles(root: THREE_NS.Object3D): number {\n let total = 0\n root.traverse((object) => {\n const mesh = object as THREE_NS.Mesh\n if (!mesh.isMesh || !mesh.visible) return\n const geometry = mesh.geometry\n total += geometry.index ? geometry.index.count / 3 : geometry.getAttribute('position').count / 3\n })\n return Math.round(total)\n}\n\n/** Draw calls under `root`: one per visible mesh (a mesh with a material list counts once per group). */\nexport function countDrawCalls(root: THREE_NS.Object3D): number {\n let total = 0\n root.traverse((object) => {\n const mesh = object as THREE_NS.Mesh\n if (!mesh.isMesh || !mesh.visible) return\n total += Array.isArray(mesh.material) ? Math.max(1, mesh.geometry.groups.length) : 1\n })\n return total\n}\n\nexport interface BudgetReport {\n triangles: number\n limit: number\n drawCalls: number\n sizeClass: ItemSizeClass\n ok: boolean\n}\n\n/** How an item's model measures against its triangle budget (a model of the team above it is a known deviation, not an error). */\nexport function checkBudget(root: THREE_NS.Object3D, size: Vec3Like, budgets: ItemBudgets = ITEM_BUDGETS): BudgetReport {\n const triangles = countTriangles(root)\n const limit = triangleBudgetOf(size, budgets)\n return { triangles, limit, drawCalls: countDrawCalls(root), sizeClass: sizeClassOf(size, budgets), ok: triangles <= limit }\n}\n","/**\n * Models of the showcase that go over the triangle budget of their class (400 for a small item, 1200 for a large one) as the team drew them, with the count they have.\n * The page set the budget for the game and drew the models for a showcase; the models stay as delivered (the builder is the team's) and a scene at a distance wears the\n * simple shape of the second level of detail (`buildItemLod`), which is inside the budget. A model that changes its count is a drawing that changed: the test flags it.\n */\nexport const MODEL_BUDGET_DEVIATIONS: Readonly<Record<string, number>> = {\n canned_beans: 744,\n amoxicillin: 596,\n flashlight: 1060,\n portable_radio: 504,\n house_key: 472,\n motorcycle_helmet: 840,\n lpg_cylinder_13kg: 712,\n}\n","import type { Thumbnail } from '@adatechnology/game-contracts'\nimport type * as THREE_NS from 'three'\n\nimport { buildItem } from './build-item'\nimport type { DrawableItem } from './build-item'\nimport { defaultItemModels } from './models/registry'\nimport type { ItemModelRegistry } from './models/registry'\nimport { shade, shapeOf } from './shapes'\nimport type { ShapeId } from './shapes'\nimport { setWear } from './wear'\nimport type { WearStage } from './wear'\n\nconst hex = (color: number): string => `#${(color & 0xffffff).toString(16).padStart(6, '0')}`\nconst DEFAULT_COLOR = 0x8a8f94\nconst STEEL = '#9aa0a6'\nconst BRASS = '#b8913a'\nconst WOOD = '#8a643c'\nconst PAPER = '#ece4d0'\n\n/** The SVG art of each shape on a 64 x 64 board, from the colour of the item (`c`), a darker (`d`) and a lighter (`l`) tone of it. */\nconst ART: Readonly<Record<ShapeId, (c: string, d: string, l: string) => string>> = {\n can: (c, d, l) => `<rect x=\"19\" y=\"13\" width=\"26\" height=\"42\" rx=\"3\" fill=\"${c}\"/><rect x=\"19\" y=\"24\" width=\"26\" height=\"18\" fill=\"${l}\"/><rect x=\"18\" y=\"11\" width=\"28\" height=\"5\" rx=\"2\" fill=\"${STEEL}\"/><rect x=\"18\" y=\"52\" width=\"28\" height=\"4\" rx=\"2\" fill=\"${STEEL}\"/>`,\n bag: (c, d, l) => `<path d=\"M16 55 L13 25 Q32 14 51 25 L48 55 Z\" fill=\"${c}\"/><rect x=\"14\" y=\"17\" width=\"36\" height=\"7\" rx=\"2\" fill=\"${d}\"/><rect x=\"22\" y=\"32\" width=\"20\" height=\"14\" rx=\"2\" fill=\"${l}\"/>`,\n box: (c, d, l) => `<rect x=\"11\" y=\"18\" width=\"42\" height=\"37\" fill=\"${c}\"/><rect x=\"11\" y=\"18\" width=\"42\" height=\"8\" fill=\"${d}\"/><rect x=\"22\" y=\"33\" width=\"20\" height=\"13\" fill=\"${l}\"/>`,\n bottle: (c, d) => `<rect x=\"28\" y=\"7\" width=\"8\" height=\"8\" rx=\"2\" fill=\"${d}\"/><path d=\"M23 56 V30 Q23 23 28 18 H36 Q41 23 41 30 V56 Z\" fill=\"${c}\" fill-opacity=\".75\"/><rect x=\"23\" y=\"34\" width=\"18\" height=\"14\" fill=\"${PAPER}\" fill-opacity=\".9\"/>`,\n tool: (c) => `<rect x=\"29\" y=\"20\" width=\"6\" height=\"37\" rx=\"2\" fill=\"${WOOD}\"/><rect x=\"17\" y=\"9\" width=\"30\" height=\"13\" rx=\"2\" fill=\"${c === '#808080' ? STEEL : c}\"/>`,\n roll: (c, d) => `<circle cx=\"32\" cy=\"34\" r=\"22\" fill=\"${c}\"/><circle cx=\"32\" cy=\"34\" r=\"8\" fill=\"${d}\"/>`,\n dish: (c, d, l) => `<ellipse cx=\"32\" cy=\"44\" rx=\"27\" ry=\"9\" fill=\"${c}\"/><ellipse cx=\"32\" cy=\"42\" rx=\"19\" ry=\"5\" fill=\"${l}\"/><ellipse cx=\"32\" cy=\"42\" rx=\"9\" ry=\"2\" fill=\"${d}\"/>`,\n cloth: (c, d) => `<rect x=\"9\" y=\"34\" width=\"46\" height=\"21\" rx=\"3\" fill=\"${c}\"/><rect x=\"13\" y=\"22\" width=\"38\" height=\"14\" rx=\"3\" fill=\"${d}\"/>`,\n shoe: (c) => `<path d=\"M9 48 V27 H26 L30 36 H47 Q56 38 56 48 Z\" fill=\"${c}\"/><rect x=\"7\" y=\"48\" width=\"50\" height=\"7\" rx=\"2\" fill=\"#22251f\"/>`,\n jar: (c) => `<rect x=\"17\" y=\"22\" width=\"30\" height=\"33\" rx=\"6\" fill=\"${c}\" fill-opacity=\".7\"/><rect x=\"16\" y=\"13\" width=\"32\" height=\"10\" rx=\"2\" fill=\"${BRASS}\"/>`,\n paper: (c, d) => `<rect x=\"14\" y=\"10\" width=\"36\" height=\"46\" fill=\"${PAPER}\"/><rect x=\"19\" y=\"18\" width=\"26\" height=\"3\" fill=\"${d}\"/><rect x=\"19\" y=\"26\" width=\"26\" height=\"3\" fill=\"${d}\"/><rect x=\"19\" y=\"34\" width=\"18\" height=\"3\" fill=\"${d}\"/><rect x=\"19\" y=\"42\" width=\"22\" height=\"3\" fill=\"${c}\"/>`,\n fruit: (c) => `<circle cx=\"32\" cy=\"38\" r=\"18\" fill=\"${c}\"/><rect x=\"31\" y=\"13\" width=\"3\" height=\"9\" fill=\"#5a3a22\"/><path d=\"M34 16 Q44 10 48 16 Q40 20 34 16 Z\" fill=\"#4f7a3a\"/>`,\n cup: (c, d) => `<path d=\"M18 16 H46 L41 56 H23 Z\" fill=\"${c}\"/><rect x=\"18\" y=\"14\" width=\"28\" height=\"4\" fill=\"${d}\"/>`,\n tube: (c, d) => `<path d=\"M23 15 H41 V48 L37 56 H27 L23 48 Z\" fill=\"${c}\"/><rect x=\"25\" y=\"7\" width=\"14\" height=\"9\" rx=\"2\" fill=\"${d}\"/>`,\n blade: () => `<rect x=\"5\" y=\"33\" width=\"18\" height=\"8\" rx=\"2\" fill=\"#3b2a20\"/><path d=\"M23 33 H55 L60 38 L23 42 Z\" fill=\"#a9adb0\"/><rect x=\"22\" y=\"31\" width=\"3\" height=\"12\" fill=\"${BRASS}\"/>`,\n long_tool: (c) => `<rect x=\"5\" y=\"30\" width=\"50\" height=\"5\" rx=\"2\" fill=\"${WOOD}\"/><rect x=\"47\" y=\"21\" width=\"12\" height=\"22\" rx=\"2\" fill=\"${c === '#808080' ? STEEL : c}\"/>`,\n garment: (c, d) => `<path d=\"M20 12 L6 24 L13 33 L20 28 V56 H44 V28 L51 33 L58 24 L44 12 Q32 22 20 12 Z\" fill=\"${c}\"/><path d=\"M20 12 Q32 22 44 12 Q32 28 20 12 Z\" fill=\"${d}\"/>`,\n backpack: (c, d) => `<path d=\"M24 18 Q32 4 40 18\" fill=\"none\" stroke=\"${d}\" stroke-width=\"3\"/><rect x=\"15\" y=\"16\" width=\"34\" height=\"40\" rx=\"9\" fill=\"${c}\"/><rect x=\"21\" y=\"35\" width=\"22\" height=\"16\" rx=\"3\" fill=\"${d}\"/>`,\n jerrycan: (c, d) => `<rect x=\"13\" y=\"17\" width=\"38\" height=\"39\" rx=\"3\" fill=\"${c}\"/><rect x=\"17\" y=\"8\" width=\"16\" height=\"10\" rx=\"2\" fill=\"${d}\"/><rect x=\"39\" y=\"9\" width=\"9\" height=\"9\" fill=\"#d9a441\"/>`,\n tank: (c, d) => `<rect x=\"21\" y=\"18\" width=\"22\" height=\"38\" rx=\"10\" fill=\"${c}\"/><rect x=\"28\" y=\"9\" width=\"8\" height=\"10\" fill=\"${BRASS}\"/><rect x=\"20\" y=\"43\" width=\"24\" height=\"3\" fill=\"${d}\"/>`,\n book: (c, d) => `<rect x=\"14\" y=\"9\" width=\"37\" height=\"47\" fill=\"${c}\"/><rect x=\"14\" y=\"9\" width=\"6\" height=\"47\" fill=\"${d}\"/><rect x=\"23\" y=\"13\" width=\"25\" height=\"39\" fill=\"#e9e1cc\"/>`,\n key: () => `<circle cx=\"16\" cy=\"32\" r=\"9\" fill=\"none\" stroke=\"#9a9da0\" stroke-width=\"5\"/><rect x=\"24\" y=\"30\" width=\"33\" height=\"5\" fill=\"${BRASS}\"/><rect x=\"45\" y=\"35\" width=\"4\" height=\"7\" fill=\"${BRASS}\"/><rect x=\"51\" y=\"35\" width=\"3\" height=\"5\" fill=\"${BRASS}\"/>`,\n battery: (c, d, l) => `<rect x=\"23\" y=\"14\" width=\"18\" height=\"42\" rx=\"2\" fill=\"${c}\"/><rect x=\"28\" y=\"9\" width=\"8\" height=\"6\" fill=\"#b9bdc0\"/><rect x=\"23\" y=\"26\" width=\"18\" height=\"16\" fill=\"${l}\"/><rect x=\"23\" y=\"47\" width=\"18\" height=\"9\" fill=\"${d}\"/>`,\n plank: (c) => `<rect x=\"5\" y=\"26\" width=\"54\" height=\"13\" fill=\"${WOOD}\"/><rect x=\"5\" y=\"30\" width=\"54\" height=\"2\" fill=\"${c === '#808080' ? '#6b4a2c' : c}\" fill-opacity=\".5\"/><circle cx=\"12\" cy=\"32\" r=\"2\" fill=\"#7d8186\"/><circle cx=\"52\" cy=\"32\" r=\"2\" fill=\"#7d8186\"/>`,\n device: (c) => `<rect x=\"15\" y=\"7\" width=\"34\" height=\"50\" rx=\"5\" fill=\"${c}\"/><rect x=\"20\" y=\"13\" width=\"24\" height=\"18\" rx=\"2\" fill=\"#9fbf8a\"/><circle cx=\"26\" cy=\"43\" r=\"4\" fill=\"#b9bdc0\"/><rect x=\"35\" y=\"40\" width=\"9\" height=\"6\" rx=\"1\" fill=\"#b9bdc0\"/>`,\n}\n\n/** The SVG picture of a shape in the colour of an item: a 64 x 64 board with plain shapes, no script and no reference. */\nexport function shapeThumbnailSvg(shape: ShapeId, color: number = DEFAULT_COLOR): string {\n const art = ART[shape]\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 64 64\">${art(hex(color), hex(shade(color, 0.7)), hex(shade(color, 1.3)))}</svg>`\n}\n\n/**\n * The picture of an item for catalogues and inventories: an item that has a 3D model asks the host to draw it (`render: true`), every other gets the SVG of its shape in\n * its colour.\n */\nexport function itemThumbnail(item: DrawableItem, models: ItemModelRegistry = defaultItemModels()): Thumbnail {\n if (item.model !== undefined && models.has(item.model)) return { render: true }\n return { svg: shapeThumbnailSvg(shapeOf(item), item.color) }\n}\n\n/** The SVG of an item whatever it has: its shape in its colour (what a host with no renderer shows for a modeled item). */\nexport const itemThumbnailSvg = (item: DrawableItem): string => shapeThumbnailSvg(shapeOf(item), item.color)\n\n/** `{ id: { thumbnail } }` for `createItems({ patch })`, so that a catalog carries its pictures. */\nexport function thumbnailPatch(items: Iterable<DrawableItem>, models: ItemModelRegistry = defaultItemModels()): Record<string, { thumbnail: Thumbnail }> {\n const patch: Record<string, { thumbnail: Thumbnail }> = {}\n for (const item of items) patch[item.id] = { thumbnail: itemThumbnail(item, models) }\n return patch\n}\n\nexport interface ThumbnailRenderOptions {\n /** Side of the picture in pixels (default 128). */\n size?: number\n /** Turn of the item around y and the lift of the camera, radians (default a three-quarter view from above). */\n yaw?: number\n pitch?: number\n /** Multiplies the distance that just fits the item (default 1). */\n distance?: number\n wear?: WearStage\n /** The models to draw with; default the shared set behind `registerItemModel`. */\n models?: ItemModelRegistry\n}\n\nexport interface ThumbnailScene {\n scene: THREE_NS.Scene\n camera: THREE_NS.PerspectiveCamera\n}\n\nconst FIT_MARGIN = 1.15\nconst FIELD_OF_VIEW = 30\n\n/** The scene and camera that frame an item for its picture: the item at the origin, lit like the showcase (hemisphere, sun, rim), the camera far enough to fit all of it. */\nexport function composeThumbnailScene(T: typeof THREE_NS, item: DrawableItem, options: ThumbnailRenderOptions = {}): ThumbnailScene {\n const { yaw = -0.6, pitch = 0.45, distance = 1, wear = 0 } = options\n const scene = new T.Scene()\n const model = buildItem(T, item, options.models === undefined ? {} : { models: options.models })\n if (wear) setWear(model.root, wear)\n scene.add(model.root)\n scene.add(new T.HemisphereLight(0xdfe6ee, 0x3a3428, 0.85))\n const sun = new T.DirectionalLight(0xffe2bf, 1.1)\n sun.position.set(2.5, 3.5, 2.5)\n scene.add(sun)\n const rim = new T.DirectionalLight(0x8fb2d6, 0.45)\n rim.position.set(-3, 1, -2.5)\n scene.add(rim)\n const box = new T.Box3().setFromObject(model.root)\n const centre = box.getCenter(new T.Vector3())\n const radius = box.getSize(new T.Vector3()).length() / 2\n const camera = new T.PerspectiveCamera(FIELD_OF_VIEW, 1, radius / 50, radius * 40)\n const fit = (radius * FIT_MARGIN) / Math.sin((FIELD_OF_VIEW * Math.PI) / 360)\n const away = fit * distance\n camera.position.set(centre.x + away * Math.cos(pitch) * Math.sin(yaw), centre.y + away * Math.sin(pitch), centre.z + away * Math.cos(pitch) * Math.cos(yaw))\n camera.lookAt(centre)\n camera.updateMatrixWorld(true)\n return { scene, camera }\n}\n\n/** What `renderItemThumbnail` needs of a renderer (a `WebGLRenderer`, or anything that draws a scene to a canvas). */\nexport interface ThumbnailRenderer {\n setSize(width: number, height: number): void\n setClearColor?(color: number, alpha?: number): void\n render(scene: THREE_NS.Scene, camera: THREE_NS.Camera): void\n domElement: { toDataURL(type?: string): string }\n}\n\n/**\n * Draws the item with the host's renderer and returns the PNG as a data URL (transparent background). The scene has lights of its own (the one allowlisted place for them, see `eslint.config.mjs`),\n * so pass a renderer made for thumbnails, never the game's: its lights would link programs on the game's renderer, which `ProgramWarmup.linkedSince` shows.\n */\nexport function renderItemThumbnail(T: typeof THREE_NS, renderer: ThumbnailRenderer, item: DrawableItem, options: ThumbnailRenderOptions = {}): string {\n const { scene, camera } = composeThumbnailScene(T, item, options)\n const size = options.size ?? 128\n renderer.setSize(size, size)\n renderer.setClearColor?.(0x000000, 0)\n renderer.render(scene, camera)\n return renderer.domElement.toDataURL('image/png')\n}\n"],"mappings":"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","names":["markKitOrigin","box","hex","tube","paper","FAMILIES","box","paper","paper","paper","paper","cloth","paper","cloth","cloth","paper","paper","paper","paper","paper","paper","cloth","paper","eggs","paper","cloth","paper","paper","paper","paper","paper","salt","paper","paper","paper","paper","paper","paper","paper","paper","paper","paper","paper","paper","bottle","paper","paper","paper","fruit","paper","bottle","paper","bottle","paper","bottle","paper","paper","paper","paper","paper","paper","paper","paper","cloth","roll","paper","paper","bottle","paper","paper","cloth","paper","cup","paper","bottle","paper","bottle","paper","paper","paper","bag","paper","bottle","paper","paper","paper","cloth","cloth","paper","cloth","cloth","cloth","blade","blade","cloth","cloth","blade","cloth","cloth","blade","cloth","orange","cloth","cloth","paper","tube","paper","cloth","orange","cloth","paper","paper","paper","cloth","rope","cloth","cloth","paper","cloth","cloth","cloth","paper","cloth","cloth","paper","blade","paper","paper","paper","paper","cloth","paper","cloth","cloth","cloth","paper","bottle","paper","cloth","paper","cloth","paper","cloth","cloth","cloth","paper","can","paper","bottle","cloth","cloth","cloth","key","cloth","paper","paper","bottle","cloth","cloth","cloth","paper","cloth","paper","cloth","cloth","paper","bottle","paper","cloth","paper","paper","paper","cloth","cup","cloth","cloth","paper","cloth","cloth","cloth","paper","cloth","cloth","cloth","SHAPES","backpack","tube","hex","box","DEFAULT_COLOR","box","key","tool","state","markKitOrigin","box","tessellated","days"]}