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..e6cb9b933 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) @@ -59,8 +61,42 @@ namespace FlaxEditor.Content /// public override string FileExtension => "cs"; - + /// 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());