Editor-side static utility defining default architectural pillar types and their part properties. Returns a list of ArchPillarType objects (pier, post, column, stanchion) with dimensions, footing, span and UI metadata.
using System.Collections.Generic;
using Sandbox;
namespace Sunless.Architecture;
public static class ArchPillarTypes
{
public static List<ArchPillarType> Defaults()
{
return new List<ArchPillarType> { Pier(), Post(), Column(), Stanchion() };
}
// A pier under a link is a blade - why pillars carry width and depth.
static ArchPillarType Pier()
{
return new ArchPillarType
{
Name = "pier",
Title = "Concrete pier",
Description = "Plain rectangular shaft on a bevelled pad. Carries walkways, landings and upper storeys.",
Icon = "view_column",
Shows = new List<ArchPillarGroup> { ArchPillarGroup.Section, ArchPillarGroup.Footing, ArchPillarGroup.Span },
Column = new ArchPillarPart
{
Width = 24f,
Depth = 24f,
Footing = PillarFooting.Bevelled,
FootingSpread = 10f,
FootingHeight = 12f,
FootingBuried = 4f,
Plinth = false,
Capital = false,
Spacing = new Vector2( 240f, 240f )
}
};
}
static ArchPillarType Post()
{
return new ArchPillarType
{
Name = "post",
Title = "Veranda post",
Description = "Slender square post standing on the deck, no footing, no capital.",
Icon = "power_input",
Shows = new List<ArchPillarGroup> { ArchPillarGroup.Section, ArchPillarGroup.Span },
Column = new ArchPillarPart
{
Width = 7f,
Depth = 7f,
Footing = PillarFooting.None,
Plinth = false,
Capital = false,
Spacing = new Vector2( 96f, 96f )
}
};
}
// The only place a plinth and capital read as anything but fuss - an arcade.
static ArchPillarType Column()
{
return new ArchPillarType
{
Name = "column",
Title = "Plastered column",
Description = "Plinth and capital on a stepped base. For an arcade or a porch colonnade.",
Icon = "account_balance",
Column = new ArchPillarPart
{
Width = 16f,
Depth = 16f,
Footing = PillarFooting.Stepped,
FootingSpread = 7f,
FootingHeight = 9f,
FootingBuried = 2f,
Plinth = true,
PlinthHeight = 10f,
PlinthOversize = 3f,
Capital = true,
CapitalHeight = 8f,
CapitalOversize = 3f,
Span = PillarSpan.Arch,
Spacing = new Vector2( 144f, 144f )
}
};
}
static ArchPillarType Stanchion()
{
return new ArchPillarType
{
Name = "stanchion",
Title = "Steel stanchion",
Description = "Narrow steel section on a square base plate, spanned by a beam. Clear-span sheds and factories.",
Icon = "hardware",
Shows = new List<ArchPillarGroup> { ArchPillarGroup.Section, ArchPillarGroup.Footing, ArchPillarGroup.Span },
Column = new ArchPillarPart
{
Width = 12f,
Depth = 16f,
Footing = PillarFooting.Square,
FootingSpread = 9f,
FootingHeight = 4f,
FootingBuried = 0f,
Plinth = false,
Capital = false,
Span = PillarSpan.Beam,
SpanDepth = 12f,
SpanHeight = 20f,
Spacing = new Vector2( 288f, 384f )
}
};
}
}