Skip to content

Commit 16d5b04

Browse files
authored
Merge pull request #57 from lordubbe/ClassesOnly-attribute
2 parents 809922d + 08cf75a commit 16d5b04

File tree

5 files changed

+42
-6
lines changed

5 files changed

+42
-6
lines changed

Editor/Attributes.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using System.Collections;
2+
using System.Collections.Generic;
3+
using UnityEngine;
4+
5+
namespace TNRD
6+
{
7+
/// <summary>An attribute to use when you want to exclude non-raw references in the reference picker.</summary>
8+
public class ClassesOnlyAttribute : PropertyAttribute { }
9+
}

Editor/Attributes/ClassesOnlyAttribute.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/Drawers/ReferenceDrawer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ private void OnButtonClicked(Rect position, SerializedProperty property)
7171
{
7272
AdvancedDropdownState state = new AdvancedDropdownState();
7373
SerializableInterfaceAdvancedDropdown dropdown =
74-
new SerializableInterfaceAdvancedDropdown(state, GenericType, GetRelevantScene(property), property);
74+
new SerializableInterfaceAdvancedDropdown(state, GenericType, GetRelevantScene(property), property, FieldInfo.GetCustomAttribute<ClassesOnlyAttribute>() != null);
7575
dropdown.ItemSelectedEvent += OnItemSelected;
7676
dropdown.Show(position);
7777
}

Editor/Utilities/SerializableInterfaceAdvancedDropdown.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ internal sealed class SerializableInterfaceAdvancedDropdown : AdvancedDropdown
1616
private readonly Type interfaceType;
1717
private readonly MethodInfo sortChildrenMethod;
1818
private readonly bool canSort;
19+
private readonly bool classesOnly;
1920
private readonly Scene? relevantScene;
2021
private readonly SerializedProperty property;
2122

@@ -28,7 +29,8 @@ public SerializableInterfaceAdvancedDropdown(
2829
AdvancedDropdownState state,
2930
Type interfaceType,
3031
Scene? relevantScene,
31-
SerializedProperty property
32+
SerializedProperty property,
33+
bool classesOnly
3234
)
3335
: base(state)
3436
{
@@ -42,15 +44,21 @@ SerializedProperty property
4244
this.interfaceType = interfaceType;
4345
this.relevantScene = relevantScene;
4446
this.property = property;
47+
this.classesOnly = classesOnly;
4548
}
4649

4750
/// <inheritdoc />
4851
protected override AdvancedDropdownItem BuildRoot()
4952
{
50-
AdvancedDropdownItemWrapper item = new AdvancedDropdownItemWrapper(interfaceType.Name)
51-
.AddChild(new AssetsItemBuilder(interfaceType).Build())
52-
.AddChild(new ClassesItemBuilder(interfaceType).Build())
53-
.AddChild(new SceneItemBuilder(interfaceType, relevantScene).Build());
53+
AdvancedDropdownItemWrapper item = new AdvancedDropdownItemWrapper(interfaceType.Name);
54+
55+
item.AddChild(new ClassesItemBuilder(interfaceType).Build());
56+
57+
if (!classesOnly)
58+
{
59+
item.AddChild(new AssetsItemBuilder(interfaceType).Build());
60+
item.AddChild(new SceneItemBuilder(interfaceType, relevantScene).Build());
61+
}
5462

5563
foreach (AdvancedDropdownItem dropdownItem in item.children)
5664
{

0 commit comments

Comments
 (0)