diff --git a/Content/Editor/Scripting/CSharpEmptyTemplate.cs b/Content/Editor/Scripting/CSharpEmptyTemplate.cs
new file mode 100644
index 000000000..ea9626f7b
--- /dev/null
+++ b/Content/Editor/Scripting/CSharpEmptyTemplate.cs
@@ -0,0 +1,6 @@
+%copyright%using System;
+using System.Collections.Generic;
+using FlaxEngine;
+
+namespace %namespace%;
+
diff --git a/Source/Editor/Content/Items/CSharpScriptItem.cs b/Source/Editor/Content/Items/CSharpScriptItem.cs
index 26e7e98ac..b5e02f9ed 100644
--- a/Source/Editor/Content/Items/CSharpScriptItem.cs
+++ b/Source/Editor/Content/Items/CSharpScriptItem.cs
@@ -5,7 +5,7 @@ using FlaxEngine;
namespace FlaxEditor.Content
{
///
- /// Content item that contains C# script file with source code.
+ /// Content item that contains C# file with source code.
///
///
public class CSharpScriptItem : ScriptItem
diff --git a/Source/Editor/Content/Proxy/CSharpScriptProxy.cs b/Source/Editor/Content/Proxy/CSharpProxy.cs
similarity index 58%
rename from Source/Editor/Content/Proxy/CSharpScriptProxy.cs
rename to Source/Editor/Content/Proxy/CSharpProxy.cs
index 0ea4df501..334592354 100644
--- a/Source/Editor/Content/Proxy/CSharpScriptProxy.cs
+++ b/Source/Editor/Content/Proxy/CSharpProxy.cs
@@ -9,19 +9,15 @@ using FlaxEngine;
namespace FlaxEditor.Content
{
///
- /// Context proxy object for C# script files.
+ /// Proxy object for C# files
///
- ///
- [ContentContextMenu("New/C# Script")]
- public class CSharpScriptProxy : ScriptProxy
+ /// ///
+ public abstract class CSharpProxy : ScriptProxy
{
///
/// The script files extension filter.
///
- public static readonly string ExtensionFiler = "*.cs";
-
- ///
- public override string Name => "C# Script";
+ public static readonly string ExtensionFilter = "*.cs";
///
public override bool IsProxyFor(ContentItem item)
@@ -29,11 +25,17 @@ namespace FlaxEditor.Content
return item is CSharpScriptItem;
}
+ ///
+ /// Gets the path for the C# template.
+ ///
+ /// The path to the template
+ protected abstract void GetTemplatePath(out string path);
+
///
public override void Create(string outputPath, object arg)
{
// Load template
- var templatePath = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/ScriptTemplate.cs");
+ GetTemplatePath(out var templatePath);
var scriptTemplate = File.ReadAllText(templatePath);
// Find the module that this script is being added (based on the path)
@@ -63,4 +65,38 @@ namespace FlaxEditor.Content
///
public override Color AccentColor => Color.FromRGB(0x1c9c2b);
}
+
+ ///
+ /// Context proxy object for C# script files.
+ ///
+ ///
+ [ContentContextMenu("New/C#/C# Script")]
+ public class CSharpScriptProxy : CSharpProxy
+ {
+ ///
+ public override string Name => "C# Script";
+
+ ///
+ protected override void GetTemplatePath(out string path)
+ {
+ path = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/ScriptTemplate.cs");
+ }
+ }
+
+ ///
+ /// Context proxy object for empty C# files.
+ ///
+ ///
+ [ContentContextMenu("New/C#/C# Empty File")]
+ public class CSharpEmptyProxy : CSharpProxy
+ {
+ ///
+ public override string Name => "C# Empty File";
+
+ ///
+ protected override void GetTemplatePath(out string path)
+ {
+ path = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/CSharpEmptyTemplate.cs");
+ }
+ }
}
diff --git a/Source/Editor/Content/Proxy/CppProxy.cs b/Source/Editor/Content/Proxy/CppProxy.cs
index f4b92322b..46ba365ef 100644
--- a/Source/Editor/Content/Proxy/CppProxy.cs
+++ b/Source/Editor/Content/Proxy/CppProxy.cs
@@ -11,7 +11,7 @@ namespace FlaxEditor.Content
///
/// Context proxy object for C++ files.
///
- ///
+ ///
public abstract class CppProxy : ScriptProxy
{
///
@@ -74,7 +74,7 @@ namespace FlaxEditor.Content
///
/// Context proxy object for C++ script files.
///
- ///
+ ///
[ContentContextMenu("New/C++/C++ Script")]
public class CppScriptProxy : CppProxy
{
@@ -98,7 +98,7 @@ namespace FlaxEditor.Content
///
/// Context proxy object for C++ Json Asset files.
///
- ///
+ ///
[ContentContextMenu("New/C++/C++ Function Library")]
public class CppStaticClassProxy : CppProxy
{
@@ -116,7 +116,7 @@ namespace FlaxEditor.Content
///
/// Context proxy object for C++ Json Asset files.
///
- ///
+ ///
[ContentContextMenu("New/C++/C++ Json Asset")]
public class CppAssetProxy : CppProxy
{
diff --git a/Source/Editor/Modules/ContentDatabaseModule.cs b/Source/Editor/Modules/ContentDatabaseModule.cs
index aab5d1b39..98359b31f 100644
--- a/Source/Editor/Modules/ContentDatabaseModule.cs
+++ b/Source/Editor/Modules/ContentDatabaseModule.cs
@@ -1093,6 +1093,7 @@ namespace FlaxEditor.Modules
Proxy.Add(new ParticleSystemProxy());
Proxy.Add(new SceneAnimationProxy());
Proxy.Add(new CSharpScriptProxy());
+ Proxy.Add(new CSharpEmptyProxy());
Proxy.Add(new CppAssetProxy());
Proxy.Add(new CppStaticClassProxy());
Proxy.Add(new CppScriptProxy());