diff --git a/Assets/Images/accelerate.svg b/Assets/Images/accelerate.svg
new file mode 100644
index 0000000..b260706
--- /dev/null
+++ b/Assets/Images/accelerate.svg
@@ -0,0 +1,213 @@
+
+
+
+
diff --git a/Assets/Images/decelerate.svg b/Assets/Images/decelerate.svg
new file mode 100644
index 0000000..9e28e2b
--- /dev/null
+++ b/Assets/Images/decelerate.svg
@@ -0,0 +1,213 @@
+
+
+
+
diff --git a/Assets/Images/shield.svg b/Assets/Images/shield.svg
new file mode 100644
index 0000000..4a231bd
--- /dev/null
+++ b/Assets/Images/shield.svg
@@ -0,0 +1,549 @@
+
+
+
+
diff --git a/Assets/Images/strafe.svg b/Assets/Images/strafe.svg
new file mode 100644
index 0000000..447371b
--- /dev/null
+++ b/Assets/Images/strafe.svg
@@ -0,0 +1,390 @@
+
+
+
+
diff --git a/Assets/Src/UI/InterfaceIcon.cs b/Assets/Src/UI/InterfaceIcon.cs
new file mode 100644
index 0000000..c73e4e9
--- /dev/null
+++ b/Assets/Src/UI/InterfaceIcon.cs
@@ -0,0 +1,55 @@
+class InterfaceIcon : VisualElement {
+ public enum Icon {
+ // Outputs
+ Acceleration,
+ Deceleration,
+ Strafing,
+ Shield,
+
+ Crosshair,
+
+ Logo,
+ }
+
+ public new class UxmlFactory : UxmlFactory {}
+ public new class UxmlTraits : VisualElement.UxmlTraits {
+ readonly UxmlEnumAttributeDescription _iconAttribute = new() { name = "icon" };
+
+ public override void Init(VisualElement ve, IUxmlAttributes bag, CreationContext cc) {
+ base.Init(ve, bag, cc);
+ var InterfaceIcon = (InterfaceIcon)ve;
+ InterfaceIcon.icon = _iconAttribute.GetValueFromBag(bag, cc);
+ }
+ }
+
+ static readonly Dictionary _iconGlyphMap = new() {
+ { Icon.CandyCane, '\uf786' },
+ { Icon.Sleigh, '\uf7cc' },
+ { Icon.Snowflake, '\uf2dc' },
+ };
+
+ public Icon icon {
+ get => _icon;
+ set {
+ _icon = value;
+ _iconLabel.text = _iconGlyphMap[value].ToString();
+ }
+ }
+
+ Icon _icon;
+ Label _iconLabel;
+
+ public InterfaceIcon() : this(Icon.CandyCane) {}
+
+ public InterfaceIcon(Icon icon) {
+ _iconLabel = new Label {
+ style = {
+ unityFont = Resources.Load("fontawesome-solid"),
+ unityFontDefinition = StyleKeyword.None,
+ },
+ };
+
+ Add(_iconLabel);
+ this.icon = icon;
+ }
+}
\ No newline at end of file