diff --git a/Source/Editor/CustomEditors/Editors/BehaviorKnowledgeSelectorEditor.cs b/Source/Editor/CustomEditors/Editors/BehaviorKnowledgeSelectorEditor.cs
index 8ac6a51cb..b3c5792ac 100644
--- a/Source/Editor/CustomEditors/Editors/BehaviorKnowledgeSelectorEditor.cs
+++ b/Source/Editor/CustomEditors/Editors/BehaviorKnowledgeSelectorEditor.cs
@@ -171,11 +171,13 @@ namespace FlaxEditor.CustomEditors.Editors
tree.Select(typeNode);
if (addItems)
{
- var items = GenericEditor.GetItemsForType(type, type.IsClass, true);
+ var items = GenericEditor.GetItemsForType(type, type.IsClass, true, true);
foreach (var item in items)
{
if (typed && !typed.IsAssignableFrom(item.Info.ValueType))
continue;
+ if (item.Info.DeclaringType.Type == typeof(FlaxEngine.Object))
+ continue; // Skip engine internals
var itemPath = typePath + item.Info.Name;
var node = new TreeNode
{
diff --git a/Source/Editor/CustomEditors/Editors/GenericEditor.cs b/Source/Editor/CustomEditors/Editors/GenericEditor.cs
index 55ac453a9..68c24a675 100644
--- a/Source/Editor/CustomEditors/Editors/GenericEditor.cs
+++ b/Source/Editor/CustomEditors/Editors/GenericEditor.cs
@@ -247,8 +247,9 @@ namespace FlaxEditor.CustomEditors.Editors
/// The type.
/// True if use type properties.
/// True if use type fields.
+ /// True if use type properties that have only getter method without setter method (aka read-only).
/// The items.
- public static List GetItemsForType(ScriptType type, bool useProperties, bool useFields)
+ public static List GetItemsForType(ScriptType type, bool useProperties, bool useFields, bool usePropertiesWithoutSetter = false)
{
var items = new List();
@@ -264,7 +265,7 @@ namespace FlaxEditor.CustomEditors.Editors
var showInEditor = attributes.Any(x => x is ShowInEditorAttribute);
// Skip properties without getter or setter
- if (!p.HasGet || (!p.HasSet && !showInEditor))
+ if (!p.HasGet || (!p.HasSet && !showInEditor && !usePropertiesWithoutSetter))
continue;
// Skip hidden fields, handle special attributes