diff --git a/Content/Editor/Scripting/ActorTemplate.cpp b/Content/Editor/Scripting/ActorTemplate.cpp
new file mode 100644
index 000000000..826c361cc
--- /dev/null
+++ b/Content/Editor/Scripting/ActorTemplate.cpp
@@ -0,0 +1,19 @@
+%copyright%#include "%filename%.h"
+
+%class%::%class%(const SpawnParams& params)
+ : Actor(params)
+{
+
+}
+
+void %class%::OnEnable()
+{
+ Actor::OnEnable();
+ // Here you can add code that needs to be called when script is enabled (eg. register for events)
+}
+
+void %class%::OnDisable()
+{
+ Actor::OnDisable();
+ // Here you can add code that needs to be called when script is disabled (eg. unregister from events)
+}
diff --git a/Content/Editor/Scripting/ActorTemplate.cs b/Content/Editor/Scripting/ActorTemplate.cs
new file mode 100644
index 000000000..20714b22b
--- /dev/null
+++ b/Content/Editor/Scripting/ActorTemplate.cs
@@ -0,0 +1,39 @@
+%copyright%using System;
+using System.Collections.Generic;
+using FlaxEngine;
+
+namespace %namespace%;
+
+///
+/// %class% Actor.
+///
+public class %class% : Actor
+{
+ ///
+ public override void OnBeginPlay()
+ {
+ base.OnBeginPlay();
+ // Here you can add code that needs to be called when Actor added to the game. This is called during edit time as well.
+ }
+
+ ///
+ public override void OnEndPlay()
+ {
+ base.OnEndPlay();
+ // Here you can add code that needs to be called when Actor removed to the game. This is called during edit time as well.
+ }
+
+ ///
+ public override void OnEnable()
+ {
+ base.OnEnable();
+ // Here you can add code that needs to be called when Actor is enabled (eg. register for events). This is called during edit time as well.
+ }
+
+ ///
+ public override void OnDisable()
+ {
+ base.OnDisable();
+ // Here you can add code that needs to be called when Actor is disabled (eg. unregister from events). This is called during edit time as well.
+ }
+}
diff --git a/Content/Editor/Scripting/ActorTemplate.h b/Content/Editor/Scripting/ActorTemplate.h
new file mode 100644
index 000000000..e97651a51
--- /dev/null
+++ b/Content/Editor/Scripting/ActorTemplate.h
@@ -0,0 +1,13 @@
+%copyright%#pragma once
+
+#include "Engine/Level/Actor.h"
+
+API_CLASS() class %module%%class% : public Actor
+{
+API_AUTO_SERIALIZATION();
+DECLARE_SCENE_OBJECT(%class%);
+
+ // [Actor]
+ void OnEnable() override;
+ void OnDisable() override;
+};
diff --git a/Content/Editor/Scripting/EmptyClassTemplate.cs b/Content/Editor/Scripting/EmptyClassTemplate.cs
new file mode 100644
index 000000000..613f80cfa
--- /dev/null
+++ b/Content/Editor/Scripting/EmptyClassTemplate.cs
@@ -0,0 +1,13 @@
+%copyright%using System;
+using System.Collections.Generic;
+using FlaxEngine;
+
+namespace %namespace%;
+
+///
+/// %class% class.
+///
+public class %class%
+{
+
+}
diff --git a/Content/Editor/Scripting/EmptyInterfaceTemplate.cs b/Content/Editor/Scripting/EmptyInterfaceTemplate.cs
new file mode 100644
index 000000000..9738379bd
--- /dev/null
+++ b/Content/Editor/Scripting/EmptyInterfaceTemplate.cs
@@ -0,0 +1,13 @@
+%copyright%using System;
+using System.Collections.Generic;
+using FlaxEngine;
+
+namespace %namespace%;
+
+///
+/// %class% interface.
+///
+public interface %class%
+{
+
+}
diff --git a/Content/Editor/Scripting/EmptyStructTemplate.cs b/Content/Editor/Scripting/EmptyStructTemplate.cs
new file mode 100644
index 000000000..3cca5aed4
--- /dev/null
+++ b/Content/Editor/Scripting/EmptyStructTemplate.cs
@@ -0,0 +1,13 @@
+%copyright%using System;
+using System.Collections.Generic;
+using FlaxEngine;
+
+namespace %namespace%;
+
+///
+/// %class% struct.
+///
+public struct %class%
+{
+
+}
diff --git a/Source/Editor/Content/Proxy/CSharpProxy.cs b/Source/Editor/Content/Proxy/CSharpProxy.cs
index 099ad6109..8abdf8b30 100644
--- a/Source/Editor/Content/Proxy/CSharpProxy.cs
+++ b/Source/Editor/Content/Proxy/CSharpProxy.cs
@@ -73,7 +73,7 @@ namespace FlaxEditor.Content
}
///
- /// Context proxy object for C# script files.
+ /// Context proxy object for C# Script files.
///
///
[ContentContextMenu("New/C#/C# Script")]
@@ -89,6 +89,23 @@ namespace FlaxEditor.Content
}
}
+ ///
+ /// Context proxy object for C# Actor files.
+ ///
+ ///
+ [ContentContextMenu("New/C#/C# Actor")]
+ public class CSharpActorProxy : CSharpProxy
+ {
+ ///
+ public override string Name => "C# Actor";
+
+ ///
+ protected override void GetTemplatePath(out string path)
+ {
+ path = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/ActorTemplate.cs");
+ }
+ }
+
///
/// Context proxy object for empty C# files.
///
@@ -105,4 +122,55 @@ namespace FlaxEditor.Content
path = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/CSharpEmptyTemplate.cs");
}
}
+
+ ///
+ /// Context proxy object for empty C# class files.
+ ///
+ ///
+ [ContentContextMenu("New/C#/C# Class")]
+ public class CSharpEmptyClassProxy : CSharpProxy
+ {
+ ///
+ public override string Name => "C# Class";
+
+ ///
+ protected override void GetTemplatePath(out string path)
+ {
+ path = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/EmptyClassTemplate.cs");
+ }
+ }
+
+ ///
+ /// Context proxy object for empty C# struct files.
+ ///
+ ///
+ [ContentContextMenu("New/C#/C# Struct")]
+ public class CSharpEmptyStructProxy : CSharpProxy
+ {
+ ///
+ public override string Name => "C# Struct";
+
+ ///
+ protected override void GetTemplatePath(out string path)
+ {
+ path = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/EmptyStructTemplate.cs");
+ }
+ }
+
+ ///
+ /// Context proxy object for empty C# interface files.
+ ///
+ ///
+ [ContentContextMenu("New/C#/C# Interface")]
+ public class CSharpEmptyInterfaceProxy : CSharpProxy
+ {
+ ///
+ public override string Name => "C# Interface";
+
+ ///
+ protected override void GetTemplatePath(out string path)
+ {
+ path = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/EmptyInterfaceTemplate.cs");
+ }
+ }
}
diff --git a/Source/Editor/Content/Proxy/CppProxy.cs b/Source/Editor/Content/Proxy/CppProxy.cs
index af5f93421..3d3b6588f 100644
--- a/Source/Editor/Content/Proxy/CppProxy.cs
+++ b/Source/Editor/Content/Proxy/CppProxy.cs
@@ -100,6 +100,24 @@ namespace FlaxEditor.Content
sourceTemplate = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/ScriptTemplate.cpp");
}
}
+
+ ///
+ /// Context proxy object for C++ Actor files.
+ ///
+ ///
+ [ContentContextMenu("New/C++/C++ Actor")]
+ public class CppActorProxy : CppProxy
+ {
+ ///
+ public override string Name => "C++ Actor";
+
+ ///
+ protected override void GetTemplatePaths(out string headerTemplate, out string sourceTemplate)
+ {
+ headerTemplate = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/ActorTemplate.h");
+ sourceTemplate = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/ActorTemplate.cpp");
+ }
+ }
///
/// Context proxy object for C++ Json Asset files.
diff --git a/Source/Editor/Modules/ContentDatabaseModule.cs b/Source/Editor/Modules/ContentDatabaseModule.cs
index c42bd9d86..7a85107d9 100644
--- a/Source/Editor/Modules/ContentDatabaseModule.cs
+++ b/Source/Editor/Modules/ContentDatabaseModule.cs
@@ -1136,9 +1136,14 @@ namespace FlaxEditor.Modules
Proxy.Add(new SceneAnimationProxy());
Proxy.Add(new CSharpScriptProxy());
Proxy.Add(new CSharpEmptyProxy());
+ Proxy.Add(new CSharpEmptyClassProxy());
+ Proxy.Add(new CSharpEmptyStructProxy());
+ Proxy.Add(new CSharpEmptyInterfaceProxy());
+ Proxy.Add(new CSharpActorProxy());
Proxy.Add(new CppAssetProxy());
Proxy.Add(new CppStaticClassProxy());
Proxy.Add(new CppScriptProxy());
+ Proxy.Add(new CppActorProxy());
Proxy.Add(new SceneProxy());
Proxy.Add(new PrefabProxy());
Proxy.Add(new IESProfileProxy());