diff --git a/Source/Editor/Content/Proxy/AssetProxy.cs b/Source/Editor/Content/Proxy/AssetProxy.cs index a752f697c..35a9c1213 100644 --- a/Source/Editor/Content/Proxy/AssetProxy.cs +++ b/Source/Editor/Content/Proxy/AssetProxy.cs @@ -30,9 +30,7 @@ namespace FlaxEditor.Content /// /// Determines whether [is virtual proxy]. /// - /// - /// true if [is virtual proxy]; otherwise, false. - /// + /// true if [is virtual proxy]; otherwise, false. public bool IsVirtualProxy() { return IsVirtual && CanExport == false; diff --git a/Source/Editor/Content/Proxy/CSharpScriptProxy.cs b/Source/Editor/Content/Proxy/CSharpScriptProxy.cs index 0ea4df501..afab13f5d 100644 --- a/Source/Editor/Content/Proxy/CSharpScriptProxy.cs +++ b/Source/Editor/Content/Proxy/CSharpScriptProxy.cs @@ -29,6 +29,12 @@ namespace FlaxEditor.Content return item is CSharpScriptItem; } + /// + public override ContentItem ConstructItem(string path) + { + return new CSharpScriptItem(path); + } + /// public override void Create(string outputPath, object arg) { diff --git a/Source/Editor/Content/Proxy/ContentProxy.cs b/Source/Editor/Content/Proxy/ContentProxy.cs index 1bb354717..3a8f66b2f 100644 --- a/Source/Editor/Content/Proxy/ContentProxy.cs +++ b/Source/Editor/Content/Proxy/ContentProxy.cs @@ -39,6 +39,16 @@ namespace FlaxEditor.Content return false; } + /// + /// Constructs the item for the file. + /// + /// The file path. + /// Created item or null. + public virtual ContentItem ConstructItem(string path) + { + return null; + } + /// /// Gets a value indicating whether this proxy if for assets. /// diff --git a/Source/Editor/Content/Proxy/CppProxy.cs b/Source/Editor/Content/Proxy/CppProxy.cs index f4b92322b..0a32ccec6 100644 --- a/Source/Editor/Content/Proxy/CppProxy.cs +++ b/Source/Editor/Content/Proxy/CppProxy.cs @@ -87,6 +87,12 @@ namespace FlaxEditor.Content return item is CppScriptItem; } + /// + public override ContentItem ConstructItem(string path) + { + return new CppScriptItem(path); + } + /// protected override void GetTemplatePaths(out string headerTemplate, out string sourceTemplate) { diff --git a/Source/Editor/Content/Proxy/FileProxy.cs b/Source/Editor/Content/Proxy/FileProxy.cs index 5f77dbd8f..4e12ab588 100644 --- a/Source/Editor/Content/Proxy/FileProxy.cs +++ b/Source/Editor/Content/Proxy/FileProxy.cs @@ -20,6 +20,12 @@ namespace FlaxEditor.Content return item is FileItem; } + /// + public override ContentItem ConstructItem(string path) + { + return new FileItem(path); + } + /// public override string FileExtension => string.Empty; diff --git a/Source/Editor/Modules/ContentDatabaseModule.cs b/Source/Editor/Modules/ContentDatabaseModule.cs index 0e4e96d30..9596f2df4 100644 --- a/Source/Editor/Modules/ContentDatabaseModule.cs +++ b/Source/Editor/Modules/ContentDatabaseModule.cs @@ -129,12 +129,9 @@ namespace FlaxEditor.Modules for (int i = 0; i < Proxy.Count; i++) { if (Proxy[i].IsProxyFor(item)) - { return Proxy[i]; - } } } - return null; } @@ -147,11 +144,8 @@ namespace FlaxEditor.Modules for (int i = 0; i < Proxy.Count; i++) { if (Proxy[i].IsProxyFor()) - { return Proxy[i]; - } } - return null; } @@ -164,17 +158,12 @@ namespace FlaxEditor.Modules { if (string.IsNullOrEmpty(extension)) throw new ArgumentNullException(); - extension = StringUtils.NormalizeExtension(extension); - for (int i = 0; i < Proxy.Count; i++) { - if (Proxy[i].FileExtension == extension) - { + if (string.Equals(Proxy[i].FileExtension, extension, StringComparison.Ordinal)) return Proxy[i]; - } } - return null; } @@ -189,30 +178,23 @@ namespace FlaxEditor.Modules for (int i = 0; i < Proxy.Count; i++) { if (Proxy[i] is AssetProxy proxy && proxy.AcceptsAsset(typeName, path)) - { return proxy; - } } - return null; } + /// /// Gets the virtual proxy object from given path. - ///

use case if the asset u trying to display is not a flax asset but u like to add custom functionality - ///

to context menu,or display it the asset ///
/// The asset path. /// Asset proxy or null if cannot find. - public AssetProxy GetAssetVirtuallProxy(string path) + public AssetProxy GetAssetVirtualProxy(string path) { for (int i = 0; i < Proxy.Count; i++) { if (Proxy[i] is AssetProxy proxy && proxy.IsVirtualProxy() && path.EndsWith(proxy.FileExtension, StringComparison.OrdinalIgnoreCase)) - { return proxy; - } } - return null; } @@ -1016,11 +998,13 @@ namespace FlaxEditor.Modules } if (item == null) { - var proxy = GetAssetVirtuallProxy(path); + var proxy = GetAssetVirtualProxy(path); item = proxy?.ConstructItem(path, assetInfo.TypeName, ref assetInfo.ID); if (item == null) { - item = new FileItem(path); + item = GetProxy(Path.GetExtension(path))?.ConstructItem(path); + if (item == null) + item = new FileItem(path); } }