About
An enhanced version of the built-in Dresser component. Works with both citizens and humans, built-in and custom player controllers.
š£ Features
Body attributes networked and updated in real time across all clients
Clothing sources are now easier to grasp for beginners
A new hybrid (Manual & OwnerUser at the same time) clothing source
Parallel workshop clothing loading
Clothing Sources
- Manual - Dress using hand-picked built-in clothing items or clothing straight from the workshop
- LocalUser - Each client sees their own avatar; you can change your avatar in s&box's main menu
- OwnerUser - All clients see the network owner's avatar of the GameObject where Dresser+ is attached
- Hybrid - Start from the network owner's avatar, strip selected clothing categories, and add hand-picked clothing on top
Hybrid Source
- Set Source to Hybrid
- Add categories to StrippedCategories (e.g. Hat, Jacket, Skin) to remove those slots from the owner's outfit
- Add your own items to Clothing or WorkshopClothing to dress your client specific clothes
Extremely useful for gamemodes where players keep their identity but wear role-specific equipment, like uniforms or team gear.
Body Attributes
- ManualHeight - Body height scale
- ManualAge - Skin aging intensity (smooth to wrinkled) - ONLY ON CITIZENS
- ManualTint - Skin color along the tint spectrum - ONLY ON CITIZENS
Editable in Manual and Hybrid modes. Changes are synced and propagate immediately via OnManualChange.
Workshop Clothing
- Retrieves clothing from workshop packages using their identifiers
- Fetched and mounted asynchronously at dress time
Editable in Manual and Hybrid modes. A warning will be logged if the package could not be fetched or mounted.
š Installation
- Install the DresserPlus library straight from your Library Manager in your s&box editor
OR
- Download the DresserPlus.cs C# script and move it to your project's Code/ folder
Once you've done either one of those, add the Dresser Plus component to a GameObject with a Citizen or Human body.
Set the BodyTarget to the body's SkinnedModelRenderer (auto-detected from children if left empty), pick a clothing source, and you're done.
š API
// Apply with current settings
await dresser.Apply();
// Apply with new clothing items (e.g. to set different clothes depending on a var in your code)
await dresser.Apply( myClothingList );
// Strip all clothing and reset body attributes
dresser.Clear();
// Cancel an in-progress async dressing operation
dresser.CancelDressing();
// Check if currently dressing
if ( dresser.IsDressing ) { /* ... */ }
āļø Properties
- BodyTarget - The SkinnedModelRenderer of the body to dress (auto-detected if empty)
- Source - Which clothing source to use
- RemoveUnownedItems - Strip items not in the owner's Steam Inventory (OwnerUser/Hybrid only)
- ApplyHeightScale - Whether height scaling is active
- ManualHeight - Body height scale, 0.5 to 1.5 (Manual/Hybrid only)
- ManualAge - Skin aging, 0 to 1 (Manual/Hybrid only)
- ManualTint - Skin color blend, 0 to 1 (Manual/Hybrid only)
- Clothing - List of clothing entries (Manual/Hybrid only)
- WorkshopClothing - Workshop package identifiers to fetch (Manual/Hybrid only)
- StrippedCategories - Clothing categories to remove from the owner's avatar (Hybrid only)
š Source Code