diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index fa4a9790..a47158b8 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -18,5 +18,5 @@ repos:
hooks:
- id: forbid-space-in-indent
language: script
- exclude: (^.*\.(csproj|glade|resx|svg|yaml|txt|uexml)$)|LICENSE
+ exclude: (^.*\.(csproj|glade|resx|svg|yaml|txt|uexml|cxxproj)$)|LICENSE
exclude_types: ['binary']
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{2dae6c31-c0c0-4097-ae95-60d201570baf}.uexml b/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{2dae6c31-c0c0-4097-ae95-60d201570baf}.uexml
new file mode 100644
index 00000000..7f87fb7e
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{2dae6c31-c0c0-4097-ae95-60d201570baf}.uexml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+ C/C++ Project
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{F184B08F-C81C-45F6-A57F-5ABD9991F28F}.uexml b/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{F184B08F-C81C-45F6-A57F-5ABD9991F28F}.uexml
new file mode 100644
index 00000000..5071138f
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/ProjectTypes/{F184B08F-C81C-45F6-A57F-5ABD9991F28F}.uexml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ VB.NET Project
+
+
+
+
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/ConsoleApplication.uexml b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/ConsoleApplication.uexml
new file mode 100644
index 00000000..4a4d98ea
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/ConsoleApplication.uexml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+ Console Application
+ ConsoleApplication
+ Creates a basic text-only (console) application in C#.
+
+
+ Software Development
+ C#
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/$(Project.Title).csproj b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/$(Project.Title).csproj
new file mode 100644
index 00000000..828c4b6d
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/$(Project.Title).csproj
@@ -0,0 +1,49 @@
+
+
+
+ Debug
+ AnyCPU
+ 10.0.0
+ 2.0
+ {7FB49F92-2DB6-42DE-8A9B-8568615CAD32}
+ {69878862-DA7D-4DC6-B0A1-50D8FAB4242F};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ PsmRuntime
+ PsmRuntime
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;
+ prompt
+ 4
+ false
+
+
+ none
+ false
+ bin\Release
+ prompt
+ 4
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/AppMain.cs b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/AppMain.cs
new file mode 100644
index 00000000..4757b2c4
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/AppMain.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+
+using Sce.PlayStation.Core;
+using Sce.PlayStation.Core.Environment;
+using Sce.PlayStation.Core.Graphics;
+using Sce.PlayStation.Core.Input;
+
+namespace $(Project.Title)
+{
+ public class AppMain
+ {
+ private static GraphicsContext graphics;
+
+ public static void Main (string[] args)
+ {
+ Initialize ();
+
+ while (true) {
+ SystemEvents.CheckEvents ();
+ Update ();
+ Render ();
+ }
+ }
+
+ public static void Initialize ()
+ {
+ // Set up the graphics system
+ graphics = new GraphicsContext ();
+ }
+
+ public static void Update ()
+ {
+ // Query gamepad for current state
+ var gamePadData = GamePad.GetData (0);
+ }
+
+ public static void Render ()
+ {
+ // Clear the screen
+ graphics.SetClearColor (0.0f, 0.0f, 0.0f, 0.0f);
+ graphics.Clear ();
+
+ // Present the screen
+ graphics.SwapBuffers ();
+ }
+ }
+}
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/app.xml b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/app.xml
new file mode 100644
index 00000000..9eaab357
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/app.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/shaders/Simple.fcg b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/shaders/Simple.fcg
new file mode 100644
index 00000000..27e20aec
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/shaders/Simple.fcg
@@ -0,0 +1,6 @@
+
+void main( float4 out Color : COLOR,
+ uniform float4 MaterialColor )
+{
+ Color = MaterialColor;
+}
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/shaders/Simple.vcg b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/shaders/Simple.vcg
new file mode 100644
index 00000000..a3a85c06
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C#/ConsoleApplication/content/shaders/Simple.vcg
@@ -0,0 +1,8 @@
+
+void main( float4 in a_Position : POSITION,
+ float4 out v_Position : POSITION,
+ uniform float4x4 WorldViewProj
+ )
+{
+ v_Position = mul( a_Position, WorldViewProj );
+}
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/ConsoleApplication.uexml b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/ConsoleApplication.uexml
new file mode 100644
index 00000000..99b1420c
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/ConsoleApplication.uexml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+ Cross-Platform Console Application
+ ConsoleApplication
+ Creates a basic text-only (console) application in C++.
+
+
+ Software Development
+ C++
+ Cross-Platform
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/$(Project.Title).csproj b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/$(Project.Title).csproj
new file mode 100644
index 00000000..828c4b6d
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/$(Project.Title).csproj
@@ -0,0 +1,49 @@
+
+
+
+ Debug
+ AnyCPU
+ 10.0.0
+ 2.0
+ {7FB49F92-2DB6-42DE-8A9B-8568615CAD32}
+ {69878862-DA7D-4DC6-B0A1-50D8FAB4242F};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ PsmRuntime
+ PsmRuntime
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;
+ prompt
+ 4
+ false
+
+
+ none
+ false
+ bin\Release
+ prompt
+ 4
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/AppMain.cs b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/AppMain.cs
new file mode 100644
index 00000000..4757b2c4
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/AppMain.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+
+using Sce.PlayStation.Core;
+using Sce.PlayStation.Core.Environment;
+using Sce.PlayStation.Core.Graphics;
+using Sce.PlayStation.Core.Input;
+
+namespace $(Project.Title)
+{
+ public class AppMain
+ {
+ private static GraphicsContext graphics;
+
+ public static void Main (string[] args)
+ {
+ Initialize ();
+
+ while (true) {
+ SystemEvents.CheckEvents ();
+ Update ();
+ Render ();
+ }
+ }
+
+ public static void Initialize ()
+ {
+ // Set up the graphics system
+ graphics = new GraphicsContext ();
+ }
+
+ public static void Update ()
+ {
+ // Query gamepad for current state
+ var gamePadData = GamePad.GetData (0);
+ }
+
+ public static void Render ()
+ {
+ // Clear the screen
+ graphics.SetClearColor (0.0f, 0.0f, 0.0f, 0.0f);
+ graphics.Clear ();
+
+ // Present the screen
+ graphics.SwapBuffers ();
+ }
+ }
+}
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/app.xml b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/app.xml
new file mode 100644
index 00000000..9eaab357
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/app.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/shaders/Simple.fcg b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/shaders/Simple.fcg
new file mode 100644
index 00000000..27e20aec
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/shaders/Simple.fcg
@@ -0,0 +1,6 @@
+
+void main( float4 out Color : COLOR,
+ uniform float4 MaterialColor )
+{
+ Color = MaterialColor;
+}
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/shaders/Simple.vcg b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/shaders/Simple.vcg
new file mode 100644
index 00000000..a3a85c06
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ConsoleApplication/content/shaders/Simple.vcg
@@ -0,0 +1,8 @@
+
+void main( float4 in a_Position : POSITION,
+ float4 out v_Position : POSITION,
+ uniform float4x4 WorldViewProj
+ )
+{
+ v_Position = mul( a_Position, WorldViewProj );
+}
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ControlPanel/CplApplet.uexml b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ControlPanel/CplApplet.uexml
new file mode 100644
index 00000000..7e4e3c27
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ControlPanel/CplApplet.uexml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+ Windows Control Panel Applet Project
+ CplApplet
+ Creates a basic Windows Control Panel applet.
+
+
+ Software Development
+ C++
+ Control Panel
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ControlPanel/content/$(Project.Title).cxxproj b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ControlPanel/content/$(Project.Title).cxxproj
new file mode 100644
index 00000000..828c4b6d
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ControlPanel/content/$(Project.Title).cxxproj
@@ -0,0 +1,49 @@
+
+
+
+ Debug
+ AnyCPU
+ 10.0.0
+ 2.0
+ {7FB49F92-2DB6-42DE-8A9B-8568615CAD32}
+ {69878862-DA7D-4DC6-B0A1-50D8FAB4242F};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ PsmRuntime
+ PsmRuntime
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;
+ prompt
+ 4
+ false
+
+
+ none
+ false
+ bin\Release
+ prompt
+ 4
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ControlPanel/content/Program.c b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ControlPanel/content/Program.c
new file mode 100644
index 00000000..4757b2c4
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/C++/ControlPanel/content/Program.c
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+
+using Sce.PlayStation.Core;
+using Sce.PlayStation.Core.Environment;
+using Sce.PlayStation.Core.Graphics;
+using Sce.PlayStation.Core.Input;
+
+namespace $(Project.Title)
+{
+ public class AppMain
+ {
+ private static GraphicsContext graphics;
+
+ public static void Main (string[] args)
+ {
+ Initialize ();
+
+ while (true) {
+ SystemEvents.CheckEvents ();
+ Update ();
+ Render ();
+ }
+ }
+
+ public static void Initialize ()
+ {
+ // Set up the graphics system
+ graphics = new GraphicsContext ();
+ }
+
+ public static void Update ()
+ {
+ // Query gamepad for current state
+ var gamePadData = GamePad.GetData (0);
+ }
+
+ public static void Render ()
+ {
+ // Clear the screen
+ graphics.SetClearColor (0.0f, 0.0f, 0.0f, 0.0f);
+ graphics.Clear ();
+
+ // Present the screen
+ graphics.SwapBuffers ();
+ }
+ }
+}
diff --git a/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/VBNET/ConsoleApplication/ConsoleApplication.uexml b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/VBNET/ConsoleApplication/ConsoleApplication.uexml
new file mode 100644
index 00000000..df81747f
--- /dev/null
+++ b/Content/UniversalEditor.Content.PlatformIndependent/Templates/Project/VBNET/ConsoleApplication/ConsoleApplication.uexml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+ Console Application
+ ConsoleApplication
+ Creates a basic text-only (console) application in VB.NET.
+
+
+ Software Development
+ VB.NET
+
+
+
+
+
+
diff --git a/Libraries/UniversalEditor.Essential/Template.cs b/Libraries/UniversalEditor.Essential/Template.cs
index 45813489..63ad4e09 100644
--- a/Libraries/UniversalEditor.Essential/Template.cs
+++ b/Libraries/UniversalEditor.Essential/Template.cs
@@ -93,8 +93,6 @@ namespace UniversalEditor
///
public string Description { get { return mvarDescription; } set { mvarDescription = value; } }
- public string Prefix { get; set; } = null;
-
private TemplateVariable.TemplateVariableCollection mvarVariables = new TemplateVariable.TemplateVariableCollection();
///
/// Variables that affect the content of this template.