diff --git a/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs b/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs
index 123c7252a..685bf9dfc 100644
--- a/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs
+++ b/Source/Editor/CustomEditors/Dedicated/ScriptsEditor.cs
@@ -102,11 +102,12 @@ namespace FlaxEditor.CustomEditors.Dedicated
var actors = ScriptsEditor.ParentEditor.Values;
foreach (var a in actors)
{
- if (a.GetType() != requireActor.RequiredType)
- {
- item.Enabled = false;
- break;
- }
+ if (a.GetType() == requireActor.RequiredType)
+ continue;
+ if (requireActor.IncludeInheritedTypes && a.GetType().IsSubclassOf(requireActor.RequiredType))
+ continue;
+ item.Enabled = false;
+ break;
}
}
cm.AddItem(item);
@@ -827,7 +828,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
if (attribute != null)
{
var actor = script.Actor;
- if (actor.GetType() != attribute.RequiredType && !actor.GetType().IsSubclassOf(attribute.RequiredType))
+ if (actor.GetType() != attribute.RequiredType && (attribute.IncludeInheritedTypes && !actor.GetType().IsSubclassOf(attribute.RequiredType)))
{
Editor.LogWarning($"`{Utilities.Utils.GetPropertyNameUI(scriptType.Name)}` on `{script.Actor}` is missing a required Actor of type `{attribute.RequiredType}`.");
hasAllRequirements = false;
diff --git a/Source/Engine/Scripting/Attributes/Editor/RequireActorAttribute.cs b/Source/Engine/Scripting/Attributes/Editor/RequireActorAttribute.cs
index 6e08217bf..3e5ad7f73 100644
--- a/Source/Engine/Scripting/Attributes/Editor/RequireActorAttribute.cs
+++ b/Source/Engine/Scripting/Attributes/Editor/RequireActorAttribute.cs
@@ -13,13 +13,20 @@ public class RequireActorAttribute : Attribute
/// The required type.
///
public Type RequiredType;
+
+ ///
+ /// Whether to include inherited types.
+ ///
+ public bool IncludeInheritedTypes;
///
/// Initializes a new instance of the class.
///
/// The required type.
- public RequireActorAttribute(Type type)
+ /// Whether to include inherited types.
+ public RequireActorAttribute(Type type, bool includeInheritedTypes = false)
{
RequiredType = type;
+ IncludeInheritedTypes = includeInheritedTypes;
}
}