Editor/FoliageRendererButtons.cs
using Foliage;
namespace Editor.FoliagePainter;
using Editor;
using Sandbox;
using System;
using System.IO;
using System.Linq;
[Sandbox.CustomEditor( typeof( FoliageRenderer.OptionsWidget ) )]
public class FoliageRendererButtons : ControlWidget
{
FoliageRenderer FoliageManager { get; set; }
public FoliageRendererButtons( Sandbox.SerializedProperty property ) : base( property )
{
FoliageManager = property.Parent.Targets.First() as FoliageRenderer;
Layout = Layout.Column();
Layout.Spacing = 2;
Rebuild();
}
[EditorEvent.Hotload]
void Rebuild()
{
Layout.Clear( true );
{
var button = new Button( this );
button.Text = "Delete All Foliage";
button.ToolTip = "Removes all foliage from this renderer";
button.Clicked += ResetResource;
Layout.Add( button );
}
{
var button = new Button( this );
button.Text = "Update Foliage";
button.ToolTip = "Update all foliage renderers if a model was changed in a .fol asset";
button.Clicked += UpdateResource;
Layout.Add( button );
}
}
void ResetResource()
{
FoliageManager.ClearAll();
Rebuild();
}
void UpdateResource()
{
FoliageManager.UpdateRenderers();
}
}