← All work

Workflow design

Foxbrow HUD Creation Tool

An in-world system for building clothing texture HUDs.

Invent / Case study / Second Life · LSL

Foxbrow HUD Creation Tool

I built an in-world LSL tool that guides HUD setup, tolerates inconsistent texture names, and generates the HUD and garment Receiver scripts.

PROJECTFoxbrow virtual clothing
MY ROLESystem design, LSL scripting, in-world testing
TOOLSSecond Life · LSL · three scripts
STATUSWorking guided setup
01

The problem

Each HUD button depended on several texture and garment details.

A Foxbrow HUD lets a customer change fabric and hardware by touching a button. Hand-writing its LSL meant mapping each button to a diffuse texture, optional Normal and Specular maps, a prim and face, and sometimes a down-piece variant. A mismatch might not show until another in-world test.

Texture names varied between exports: DNM01, DNM 1, and DNM_01 could refer to the same option. A strict name rule would miss real assets.

02

The process

I built the workflow around the creator’s touch and the inventory already inside the HUD.

  1. MAP

    Define the setup sequence

    I broke the job into choosing categories, touching HUD prims in button order, identifying target faces, matching maps, and generating two scripts.

  2. PARSE

    Handle imperfect file names

    A bounded-token scanner recognizes category codes and item numbers across glued, spaced, and underscored forms. Map type and down-piece state are detected separately.

  3. SPLIT

    Separate responsibilities across scripts

    Selector handles menus and touch assignment; Applier handles matching and setup-time application; Printer generates and delivers the HUD and Receiver scripts.

  4. DEBUG

    Trace the in-world failures

    Byte-length checks found a dialog label that prevented a menu from opening. Logging isolated a missed finalize signal; moving generation into Printer restored output.

  5. REFINE

    Carry details through to runtime

    The tool now asks for the hardware face index and applies Normal and Specular maps for hardware, the main garment, and its down variant when buttons are touched.

03

The solution

A guided setup session that generates both sides of the system.

Inside the HUD object, the creator touches prims in assignment order, answers category and material questions, and repeats for as many categories as needed. Auto-Detect can scan the HUD’s texture inventory when the full wizard is unnecessary.

Texture lookup tries the chosen Shared or Individual convention and its alternatives. A missing diffuse texture remains in the output as NULL_KEY for correction. When setup is done, Print sends the combined scripts in paginated local chat; Get Link serves them through the object’s llRequestURL webpage.

SELECTORGuideMenus + prim touches
APPLIERMatchInventory + maps
PRINTERGenerateHUD + Receiver scripts
04

The outcome

The full HUD can be configured in one continuous session.

Instead of editing LSL for every texture button, I can set up several categories and generate the HUD and Receiver pair from touches and the HUD’s own inventory. Unmatched entries stay visible so I can correct them. The Receiver reapplies the required map IDs on every touch for the main piece and down variant.

Evidence to add: the actual in-world menu recording, a sample generated script pair, setup instructions, and a timed comparison with hand-writing the HUD.

05

What I learned

Trace the actual failure point, then change one thing at a time.

One menu failure came from a button label over Second Life’s UTF-8 byte limit; another appeared as a missing one-way signal. Logging and small tests exposed the symptoms more reliably than guessing from the UI. Splitting the tool into three scripts resolved the print handoff; the precise platform mechanism behind that earlier signaling failure remains unconfirmed.