Editor/Brush/Brush.cs
using System.Collections.Generic;
using System.Linq;
using Editor;
using Sandbox;
namespace Foliage.BrushGlue;
/// <summary>
/// Brushes you can use
/// </summary>
public class BrushList
{
public Brush Selected { get; set; } = null!;
public List<Brush> Brushes = [];
public BrushList()
{
LoadAll();
}
public void LoadAll()
{
// Not available in unit test
if ( Editor.FileSystem.Content is null )
return;
foreach ( var filename in Editor.FileSystem.Content.FindFile( "materials/tools/terrain/brushes", "*.png" ) )
{
Brushes.Add( Brush.LoadFromFile( $"materials/tools/terrain/brushes/{filename}" ) );
}
Selected = Brushes.FirstOrDefault()!;
}
}
public class Brush
{
public string Name { get; private set; }
public Texture Texture { get; private set; }
public Pixmap Pixmap { get; private set; }
public void Set( string name )
{
Texture = Texture.Load( $"materials/tools/terrain/brushes/{name}.png" );
}
internal static Brush LoadFromFile( string filename )
{
var brush = new Brush();
brush.Name = System.IO.Path.GetFileNameWithoutExtension( filename );
brush.Texture = Texture.Load( filename );
brush.Pixmap = Pixmap.FromFile( Editor.FileSystem.Content.GetFullPath( filename ) );
return brush;
}
}