A generated static class that defines horn shape profiles for a character editor. It declares a record struct Profile with Length, Radius and an array of Vector2 Angles, and populates a dictionary All with named horn profiles and their numeric sampled points.
namespace CharacterEditor;
// Tangent profiles authored in horns/build_horns.py and horns.blend.
internal static class HornProfiles {
internal readonly record struct Profile(float Length,float Radius,Vector2[] Angles);
internal static readonly Dictionary<string,Profile> All = new() {
{"spike",new(7.5f,0.8f,new Vector2[]{new(-8f,0f),new(-8.375f,0f),new(-8.75f,0f),new(-9.125f,0f),new(-9.5f,0f),new(-9.875f,0f),new(-10.25f,0f),new(-10.625f,0f),new(-11f,0f),new(-11.375f,0f),new(-11.75f,0f),new(-12.125f,0f),new(-12.5f,0f),new(-12.875f,0f),new(-13.25f,0f),new(-13.625f,0f),new(-14f,0f),new(-14.375f,0f),new(-14.75f,0f),new(-15.125f,0f),new(-15.5f,0f),new(-15.875f,0f),new(-16.25f,0f),new(-16.625f,0f),new(-17f,0f),new(-17.375f,0f),new(-17.75f,0f),new(-18.125f,0f),new(-18.5f,0f),new(-18.875f,0f),new(-19.25f,0f),new(-19.625f,0f),new(-20f,0f),new(-20.375f,0f),new(-20.75f,0f),new(-21.125f,0f),new(-21.5f,0f),new(-21.875f,0f),new(-22.25f,0f),new(-22.625f,0f),new(-23f,0f),new(-23.375f,0f),new(-23.75f,0f),new(-24.125f,0f),new(-24.5f,0f),new(-24.875f,0f),new(-25.25f,0f),new(-25.625f,0f),new(-26f,0f),new(-26.375f,0f),new(-26.75f,0f),new(-27.125f,0f),new(-27.5f,0f),new(-27.875f,0f),new(-28.25f,0f),new(-28.625f,0f),new(-29f,0f),new(-29.375f,0f),new(-29.75f,0f),new(-30.125f,0f),new(-30.5f,0f),new(-30.875f,0f),new(-31.25f,0f),new(-31.625f,0f),new(-32f,0f)})},
{"swept",new(11f,1.0f,new Vector2[]{new(-12f,0f),new(-15.30251f,0f),new(-17.75f,0f),new(-19.95318f,0f),new(-22.01133f,0f),new(-23.96795f,0f),new(-25.84729f,0f),new(-27.66471f,0f),new(-29.43074f,0f),new(-31.15305f,0f),new(-32.83742f,0f),new(-34.48837f,0f),new(-36.10954f,0f),new(-37.70387f,0f),new(-39.27384f,0f),new(-40.82152f,0f),new(-42.34868f,0f),new(-43.85686f,0f),new(-45.34739f,0f),new(-46.82144f,0f),new(-48.28005f,0f),new(-49.72413f,0f),new(-51.15453f,0f),new(-52.57197f,0f),new(-53.97714f,0f),new(-55.37064f,0f),new(-56.75304f,0f),new(-58.12484f,0f),new(-59.48651f,0f),new(-60.83849f,0f),new(-62.18118f,0f),new(-63.51494f,0f),new(-64.84012f,0f),new(-66.15705f,0f),new(-67.46602f,0f),new(-68.76731f,0f),new(-70.06118f,0f),new(-71.34788f,0f),new(-72.62765f,0f),new(-73.9007f,0f),new(-75.16723f,0f),new(-76.42745f,0f),new(-77.68153f,0f),new(-78.92966f,0f),new(-80.17199f,0f),new(-81.40869f,0f),new(-82.63991f,0f),new(-83.86578f,0f),new(-85.08645f,0f),new(-86.30204f,0f),new(-87.51267f,0f),new(-88.71848f,0f),new(-89.91957f,0f),new(-91.11604f,0f),new(-92.30801f,0f),new(-93.49557f,0f),new(-94.67882f,0f),new(-95.85785f,0f),new(-97.03275f,0f),new(-98.20361f,0f),new(-99.37051f,0f),new(-100.5335f,0f),new(-101.6927f,0f),new(-102.8482f,0f),new(-104f,0f)})},
{"recurved",new(11f,0.95f,new Vector2[]{new(-15f,0f),new(-18.55672f,0.3925414f),new(-22.10279f,0.7841371f),new(-25.62762f,1.173844f),new(-29.12063f,1.560723f),new(-32.57134f,1.943841f),new(-35.96937f,2.322277f),new(-39.30446f,2.695119f),new(-42.56651f,3.061467f),new(-45.74558f,3.420441f),new(-48.83196f,3.771174f),new(-51.81612f,4.112822f),new(-54.68882f,4.444562f),new(-57.44106f,4.765594f),new(-60.06415f,5.075146f),new(-62.54968f,5.372472f),new(-64.88961f,5.656854f),new(-67.07623f,5.927609f),new(-69.10219f,6.184084f),new(-70.96055f,6.42566f),new(-72.64477f,6.651757f),new(-74.1487f,6.861829f),new(-75.46666f,7.05537f),new(-76.59341f,7.231914f),new(-77.52416f,7.391036f),new(-78.25459f,7.532353f),new(-78.78088f,7.655523f),new(-79.09969f,7.76025f),new(-79.20818f,7.846282f),new(-79.10401f,7.913412f),new(-78.78538f,7.961478f),new(-78.25097f,7.990364f),new(-77.5f,8f),new(-76.53222f,7.990364f),new(-75.34788f,7.961478f),new(-73.94776f,7.913412f),new(-72.33318f,7.846282f),new(-70.50594f,7.76025f),new(-68.46838f,7.655523f),new(-66.22334f,7.532353f),new(-63.77416f,7.391036f),new(-61.12466f,7.231914f),new(-58.27916f,7.05537f),new(-55.24245f,6.861829f),new(-52.01977f,6.651757f),new(-48.6168f,6.42566f),new(-45.03969f,6.184084f),new(-41.29498f,5.927609f),new(-37.38961f,5.656854f),new(-33.33093f,5.372472f),new(-29.12665f,5.075146f),new(-24.78481f,4.765594f),new(-20.31382f,4.444562f),new(-15.72237f,4.112822f),new(-11.01946f,3.771174f),new(-6.214333f,3.420441f),new(-1.316509f,3.061467f),new(3.664288f,2.695119f),new(8.718129f,2.322277f),new(13.83491f,1.943841f),new(19.00437f,1.560723f),new(24.21613f,1.173844f),new(29.45971f,0.7841371f),new(34.72453f,0.3925414f),new(40f,9.797174e-16f)})},
{"hooked",new(8.5f,1.05f,new Vector2[]{new(-12f,0f),new(-11.55594f,0f),new(-10.82812f,0f),new(-9.932674f,0f),new(-8.907403f,0f),new(-7.77334f,0f),new(-6.544293f,0f),new(-5.230189f,0f),new(-3.838588f,0f),new(-2.375486f,0f),new(-0.8457777f,0f),new(0.7464444f,0f),new(2.397697f,0f),new(4.104973f,0f),new(5.865639f,0f),new(7.67737f,0f),new(9.538094f,0f),new(11.44595f,0f),new(13.39924f,0f),new(15.39645f,0f),new(17.43617f,0f),new(19.5171f,0f),new(21.63807f,0f),new(23.79796f,0f),new(25.99575f,0f),new(28.23049f,0f),new(30.50128f,0f),new(32.80728f,0f),new(35.1477f,0f),new(37.52181f,0f),new(39.92889f,0f),new(42.36829f,0f),new(44.83937f,0f),new(47.34154f,0f),new(49.87423f,0f),new(52.43689f,0f),new(55.02901f,0f),new(57.65009f,0f),new(60.29967f,0f),new(62.97729f,0f),new(65.68252f,0f),new(68.41493f,0f),new(71.17414f,0f),new(73.95975f,0f),new(76.77139f,0f),new(79.60872f,0f),new(82.47138f,0f),new(85.35904f,0f),new(88.27139f,0f),new(91.20811f,0f),new(94.1689f,0f),new(97.15347f,0f),new(100.1615f,0f),new(103.1928f,0f),new(106.2471f,0f),new(109.3241f,0f),new(112.4235f,0f),new(115.5452f,0f),new(118.6888f,0f),new(121.8542f,0f),new(125.0412f,0f),new(128.2494f,0f),new(131.4788f,0f),new(134.729f,0f),new(138f,0f)})},
{"ram",new(18f,1.15f,new Vector2[]{new(-20f,0f),new(-24.45312f,0f),new(-28.90625f,0f),new(-33.35938f,0f),new(-37.8125f,0f),new(-42.26562f,0f),new(-46.71875f,0f),new(-51.17188f,0f),new(-55.625f,0f),new(-60.07812f,0f),new(-64.53125f,0f),new(-68.98438f,0f),new(-73.4375f,0f),new(-77.89062f,0f),new(-82.34375f,0f),new(-86.79688f,0f),new(-91.25f,0f),new(-95.70312f,0f),new(-100.1562f,0f),new(-104.6094f,0f),new(-109.0625f,0f),new(-113.5156f,0f),new(-117.9688f,0f),new(-122.4219f,0f),new(-126.875f,0f),new(-131.3281f,0f),new(-135.7812f,0f),new(-140.2344f,0f),new(-144.6875f,0f),new(-149.1406f,0f),new(-153.5938f,0f),new(-158.0469f,0f),new(-162.5f,0f),new(-166.9531f,0f),new(-171.4062f,0f),new(-175.8594f,0f),new(-180.3125f,0f),new(-184.7656f,0f),new(-189.2188f,0f),new(-193.6719f,0f),new(-198.125f,0f),new(-202.5781f,0f),new(-207.0312f,0f),new(-211.4844f,0f),new(-215.9375f,0f),new(-220.3906f,0f),new(-224.8438f,0f),new(-229.2969f,0f),new(-233.75f,0f),new(-238.2031f,0f),new(-242.6562f,0f),new(-247.1094f,0f),new(-251.5625f,0f),new(-256.0156f,0f),new(-260.4688f,0f),new(-264.9219f,0f),new(-269.375f,0f),new(-273.8281f,0f),new(-278.2812f,0f),new(-282.7344f,0f),new(-287.1875f,0f),new(-291.6406f,0f),new(-296.0938f,0f),new(-300.5469f,0f),new(-305f,0f)})},
{"spiral",new(14f,0.85f,new Vector2[]{new(15f,0f),new(19.14062f,6.5625f),new(23.28125f,13.125f),new(27.42188f,19.6875f),new(31.5625f,26.25f),new(35.70312f,32.8125f),new(39.84375f,39.375f),new(43.98438f,45.9375f),new(48.125f,52.5f),new(52.26562f,59.0625f),new(56.40625f,65.625f),new(60.54688f,72.1875f),new(64.6875f,78.75f),new(68f,85.3125f),new(68f,91.875f),new(68f,98.4375f),new(68f,105f),new(68f,111.5625f),new(68f,118.125f),new(68f,124.6875f),new(68f,131.25f),new(68f,137.8125f),new(68f,144.375f),new(68f,150.9375f),new(68f,157.5f),new(68f,164.0625f),new(68f,170.625f),new(68f,177.1875f),new(68f,183.75f),new(68f,190.3125f),new(68f,196.875f),new(68f,203.4375f),new(68f,210f),new(68f,216.5625f),new(68f,223.125f),new(68f,229.6875f),new(68f,236.25f),new(68f,242.8125f),new(68f,249.375f),new(68f,255.9375f),new(68f,262.5f),new(68f,269.0625f),new(68f,275.625f),new(68f,282.1875f),new(68f,288.75f),new(68f,295.3125f),new(68f,301.875f),new(68f,308.4375f),new(68f,315f),new(68f,321.5625f),new(68f,328.125f),new(68f,334.6875f),new(68f,341.25f),new(68f,347.8125f),new(68f,354.375f),new(68f,360.9375f),new(68f,367.5f),new(68f,374.0625f),new(68f,380.625f),new(68f,387.1875f),new(68f,393.75f),new(68f,400.3125f),new(68f,406.875f),new(68f,413.4375f),new(68f,420f)})},
}; }