Skip to content

Steam Controller: enable body color theming (closes #13)#21

Merged
petegordon merged 1 commit into
mainfrom
feat/steam-controller-body-color
May 24, 2026
Merged

Steam Controller: enable body color theming (closes #13)#21
petegordon merged 1 commit into
mainfrom
feat/steam-controller-body-color

Conversation

@petegordon

Copy link
Copy Markdown
Member

The Steam Controller profile shipped with `bodyColorMeshes: []`, so `setBodyColor()` had no meshes to recolor. Other controllers (DualSense / Switch Pro / Xbox) split mesh names between body and accent groups; the Steam Controller is single-color, so all 29 split meshes go under `bodyColorMeshes`.

What changes

  • `packages/visualizer/src/controller-profiles.js` — Steam Controller `bodyColorMeshes` populated with every split-mesh name: shell, face buttons (A/B/X/Y), bumpers, triggers, system buttons (view/menu/steam/qucick access), stick assemblies (base + cap + top button × 2), dpad (4 directions), trackpads, back paddles (L4/L5/R4/R5).

Why all 29 meshes

The Steam Controller is single-color — no light/dark separation like DualSense's shell vs. accents. Per the user request, everything reads as one body color. Per-press emissive glow still animates on top because the visualizer drives glow via `material.emissive`, independent of `material.color`.

Future split (e.g. darker accents on trackpads or system buttons) is a one-line move from `bodyColorMeshes` into `accentColorMeshes` per region.

Test plan

  • Open color picker in the overlay with Steam Controller selected, change body color — every painted region + the shell recolors as one
  • Press any button / pull trigger / tilt stick — the per-input emissive glow still shows over the themed base color
  • Default white (`#ffffff`) still renders the controller as before

Closes #13.

bodyColorMeshes was [] so setBodyColor() had nothing to recolor. The
Steam Controller is a single-color shell, so wire every painted region
(buttons, dpad, sticks, triggers, trackpads, back paddles, system
buttons) plus the residual body mesh into bodyColorMeshes. Per-press
emissive glow still animates on top because the visualizer drives glow
via material.emissive — independent from material.color.

Move any individual region to accentColorMeshes later if it should
take a distinct theme color.

Closes #13.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@petegordon petegordon merged commit e334fcc into main May 24, 2026
@petegordon petegordon deleted the feat/steam-controller-body-color branch May 24, 2026 22:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Steam Controller 2026: per-button mesh GLB for press / stick highlighting

1 participant