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);
}
}