diff --git a/Assets/BetterAttributes/Editor/Comparers/SelectImplementationTypeComparer.cs b/Assets/BetterAttributes/Editor/Comparers/SelectImplementationTypeComparer.cs new file mode 100644 index 0000000..eaf3b92 --- /dev/null +++ b/Assets/BetterAttributes/Editor/Comparers/SelectImplementationTypeComparer.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using Better.Commons.Runtime.Comparers; + +namespace Better.Attributes.EditorAddons.Comparers +{ + public class SelectImplementationTypeComparer : BaseComparer, IEqualityComparer + { + public bool Equals(Type x, Type y) + { + if (ReferenceEquals(x, y)) return true; + if (ReferenceEquals(x, null)) return false; + if (ReferenceEquals(y, null)) return false; + if (x.IsAssignableFrom(y) || x == y) return true; + if ((y.IsInterface || y.IsAbstract) && x == typeof(Type)) return true; + return x == typeof(Type); + } + + public int GetHashCode(Type obj) + { + return 0; + } + } +} \ No newline at end of file diff --git a/Assets/BetterAttributes/Editor/Comparers/SelectImplementationTypeComparer.cs.meta b/Assets/BetterAttributes/Editor/Comparers/SelectImplementationTypeComparer.cs.meta new file mode 100644 index 0000000..09913ba --- /dev/null +++ b/Assets/BetterAttributes/Editor/Comparers/SelectImplementationTypeComparer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4d010b6bc3674e49b4b426837abd4c6f +timeCreated: 1728271758 \ No newline at end of file diff --git a/Assets/BetterAttributes/Editor/Drawers/HandlerMaps/SelectTypeHandlerBinder.cs b/Assets/BetterAttributes/Editor/Drawers/HandlerMaps/SelectTypeHandlerBinder.cs index fce98f0..396184a 100644 --- a/Assets/BetterAttributes/Editor/Drawers/HandlerMaps/SelectTypeHandlerBinder.cs +++ b/Assets/BetterAttributes/Editor/Drawers/HandlerMaps/SelectTypeHandlerBinder.cs @@ -20,7 +20,7 @@ protected override BaseHandlersTypeCollection GenerateCollection() return new HandlersTypeCollection(TypeComparer.Instance) { { - typeof(SelectAttribute), new Dictionary(TypeComparer.Instance) + typeof(SelectAttribute), new Dictionary(SelectImplementationTypeComparer.Instance) { { typeof(SerializedType), typeof(SelectSerializedTypeHandler) }, { typeof(Enum), typeof(SelectEnumHandler) }, diff --git a/Assets/BetterAttributes/Editor/Drawers/Select/Handlers/SelectImplementationHandler.cs b/Assets/BetterAttributes/Editor/Drawers/Select/Handlers/SelectImplementationHandler.cs index f649ece..7359a68 100644 --- a/Assets/BetterAttributes/Editor/Drawers/Select/Handlers/SelectImplementationHandler.cs +++ b/Assets/BetterAttributes/Editor/Drawers/Select/Handlers/SelectImplementationHandler.cs @@ -50,7 +50,7 @@ public override bool IsSkippingFieldDraw() public override bool CheckSupported() { var baseType = GetFieldOrElementType(); - return baseType.IsAbstract || baseType.IsInterface; + return baseType.IsAbstract || baseType.IsInterface || baseType.HasParameterlessConstructor(); } public override bool ValidateSelected(object item) diff --git a/Assets/BetterAttributes/package.json b/Assets/BetterAttributes/package.json index 98b8aa5..baf7c7d 100644 --- a/Assets/BetterAttributes/package.json +++ b/Assets/BetterAttributes/package.json @@ -1,7 +1,7 @@ { "name": "com.tdw.better.attributes", "displayName": "Better Attributes", - "version": "0.0.2", + "version": "0.0.3", "unity": "2021.3", "description": "Unity attributes, allows to serialize interfaces, draw handles for Vector3/Vector2/Quaternion/Bounds, create read only fields.", "dependencies": { diff --git a/Packages/manifest.json b/Packages/manifest.json index a64183a..fdfc287 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -47,8 +47,7 @@ "name": "Better Plugins", "url": "https://package.openupm.com", "scopes": [ - "com.tdw", - "com.uurha" + "com.tdw" ] } ] diff --git a/ProjectSettings/PackageManagerSettings.asset b/ProjectSettings/PackageManagerSettings.asset index 2b960c9..97e9c58 100644 --- a/ProjectSettings/PackageManagerSettings.asset +++ b/ProjectSettings/PackageManagerSettings.asset @@ -12,12 +12,12 @@ MonoBehaviour: m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} m_Name: m_EditorClassIdentifier: - m_EnablePreReleasePackages: 0 - m_EnablePackageDependencies: 0 + m_EnablePreReleasePackages: 1 + m_EnablePackageDependencies: 1 m_AdvancedSettingsExpanded: 1 m_ScopedRegistriesSettingsExpanded: 1 m_SeeAllPackageVersions: 0 - oneTimeWarningShown: 0 + oneTimeWarningShown: 1 m_Registries: - m_Id: main m_Name: @@ -31,7 +31,6 @@ MonoBehaviour: m_Url: https://package.openupm.com m_Scopes: - com.tdw - - com.uurha m_IsDefault: 0 m_Capabilities: 0 m_ConfigSource: 4 @@ -40,6 +39,6 @@ MonoBehaviour: m_RegistryInfoDraft: m_Modified: 0 m_ErrorMessage: - m_UserModificationsInstanceId: -850 - m_OriginalInstanceId: -852 + m_UserModificationsInstanceId: -830 + m_OriginalInstanceId: -834 m_LoadAssets: 0