Files
sbox-public/game/editor/Hammer/Code/HammerAssetBrowser.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

62 lines
1.7 KiB
C#

namespace Editor.MapEditor;
[Dock( "Hammer", "Asset Browser", "snippet_folder" )]
internal class HammerAssetBrowser : LocalAssetBrowser
{
public static HammerAssetBrowser Instance { get; private set; }
public HammerAssetBrowser( Widget parent ) : base( parent, null )
{
Instance = this;
OnAssetHighlight += a => { if ( a.AssetType == AssetType.Material ) Hammer.SetCurrentMaterial( a ); };
OnAssetSelected += a => { if ( a.AssetType == AssetType.Material ) Hammer.SetCurrentMaterial( a ); };
}
[Event( "asset.contextmenu", Priority = 150 )]
protected static void OnAssetContextMenu_Hammer( AssetContextMenu e )
{
if ( e.AssetList?.Browser is not HammerAssetBrowser ) return;
var count = e.SelectedList.Count;
if ( count <= 0 ) return;
e.Menu.AddSeparator();
e.Menu.AddOption( "Select Objects Using Asset" + (count > 1 ? "s" : ""), "select_all", () =>
{
// GetHistory()->MarkUndoPosition( pActiveSession->GetSelection(), "Select Objects" );
Selection.SelectMode = SelectMode.Objects;
Selection.Clear();
foreach ( var entry in e.SelectedList )
{
Hammer.SelectObjectsUsingAsset( entry.Asset );
}
} );
if ( count == 1 )
{
var asset = e.SelectedList.First().Asset;
e.Menu.AddOption( "List Map Objects Using Asset", "summarize", () =>
{
Hammer.ShowEntityReportForAsset( asset );
} );
e.Menu.AddOption( "Assign To Selection", "assignment", () =>
{
Hammer.AssignAssetToSelection( asset );
} );
if ( asset.AssetType == AssetType.Material )
{
e.Menu.AddOption( "Select Faces Using Material", "photo_size_select_large", () =>
{
Hammer.SelectFacesUsingMaterial( asset );
} );
}
}
}
}