Editor/AssetBrowserAddon/locations/MaterialLocation.cs
using System.IO;
using System;
using System.Collections.Generic;
using System.Linq;
using Editor;
using Sandbox;
namespace Editor;
public record MaterialLocation : LocalAssetBrowser.Location
{
public override bool IsAggregate => true;
public MaterialLocation() : base("Materials", "palette")
{
Path = "@materials";
}
public override bool CanGoUp() => false;
public override IEnumerable<LocalAssetBrowser.Location> GetDirectories() => Enumerable.Empty<LocalAssetBrowser.Location>();
public override IEnumerable<FileInfo> GetFiles()
{
var materialExtensions = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
{
".vmat", ".mat", ".material"
};
return AssetSystem.All
.Where(asset =>
{
var ext = System.IO.Path.GetExtension(asset.AbsolutePath);
return materialExtensions.Contains(ext);
})
.OrderBy(asset => System.IO.Path.GetFileNameWithoutExtension(asset.AbsolutePath),
StringComparer.OrdinalIgnoreCase)
.Select(asset => new FileInfo(asset.AbsolutePath));
}
}