UI/SpawnMenu/Props/LocalProps.cs
/// <summary>
/// Hardcoded models that ship with the game and aren't available on the workshop.
/// Add new entries here — they'll appear automatically in the Local props section.
/// </summary>
public static class LocalProps
{
public record Entry( string Path, string Category )
{
/// <summary>
/// Derives a display name from the filename: strips the extension,
/// replaces underscores with spaces, and title-cases each word.
/// </summary>
public string DisplayName
{
get
{
var file = System.IO.Path.GetFileNameWithoutExtension( Path );
// strip a second extension for compiled paths like .vmdl_c
file = System.IO.Path.GetFileNameWithoutExtension( file );
var words = file.Split( '_' );
return string.Join( " ", words.Select( w => char.ToUpperInvariant( w[0] ) + w[1..] ) );
}
}
}
public static List<Entry> All => new()
{
// Characters
new( "models/citizen_mannequin/mannequin.vmdl", "characters" ),
new( "models/citizen/citizen.vmdl", "characters" ),
new( "models/citizen_human/citizen_human_male.vmdl", "characters" ),
new( "models/citizen_human/citizen_human_female.vmdl", "characters" ),
// Props (citizen_props)
new( "models/citizen_props/beachball.vmdl", "props" ),
new( "models/citizen_props/broom01.vmdl", "props" ),
new( "models/citizen_props/cardboardbox01.vmdl", "props" ),
new( "models/citizen_props/chair01.vmdl", "props" ),
new( "models/citizen_props/chair02.vmdl", "props" ),
new( "models/citizen_props/chair03.vmdl", "props" ),
new( "models/citizen_props/chair04blackleather.vmdl", "props" ),
new( "models/citizen_props/chair05bluefabric.vmdl", "props" ),
new( "models/citizen_props/coffeemug01.vmdl", "props" ),
new( "models/citizen_props/concreteroaddivider01.vmdl", "props" ),
new( "models/citizen_props/crate01.vmdl", "props" ),
new( "models/citizen_props/crowbar01.vmdl", "props" ),
new( "models/citizen_props/gritbin01_combined.vmdl", "props" ),
new( "models/citizen_props/newspaper01.vmdl", "props" ),
new( "models/citizen_props/oldoven.vmdl", "props" ),
new( "models/citizen_props/recyclingbin01.vmdl", "props" ),
new( "models/citizen_props/roadcone01.vmdl", "props" ),
new( "models/citizen_props/sodacan01.vmdl", "props" ),
new( "models/citizen_props/trashbag02.vmdl", "props" ),
new( "models/citizen_props/trashcan01.vmdl", "props" ),
new( "models/citizen_props/trashcan02.vmdl", "props" ),
new( "models/citizen_props/wheel01.vmdl", "props" ),
new( "models/citizen_props/wheel02.vmdl", "props" ),
new( "models/citizen_props/wineglass01.vmdl", "props" ),
new( "models/citizen_props/wineglass02.vmdl", "props" ),
};
}