From 4cd788cedca1a8ba51db3ba34220dd475ff00f44 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 22 Mar 2024 11:59:04 +0100 Subject: [PATCH] Add `UI Widget` to new asset creation for quick UI setup --- Source/Editor/Content/Proxy/PrefabProxy.cs | 61 +++++++++++++++++++ .../Editor/Modules/ContentDatabaseModule.cs | 1 + 2 files changed, 62 insertions(+) diff --git a/Source/Editor/Content/Proxy/PrefabProxy.cs b/Source/Editor/Content/Proxy/PrefabProxy.cs index ee3674daa..18860995e 100644 --- a/Source/Editor/Content/Proxy/PrefabProxy.cs +++ b/Source/Editor/Content/Proxy/PrefabProxy.cs @@ -1,6 +1,7 @@ // Copyright (c) 2012-2024 Wojciech Figat. All rights reserved. using System; +using System.IO; using FlaxEditor.Content.Thumbnails; using FlaxEditor.Viewport.Previews; using FlaxEditor.Windows; @@ -194,4 +195,64 @@ namespace FlaxEditor.Content base.Dispose(); } } + + /// + /// Content proxy for quick UI Control prefab creation as widget. + /// + [ContentContextMenu("New/Widget")] + internal sealed class WidgetProxy : AssetProxy + { + /// + public override string Name => "UI Widget"; + + /// + public override bool IsProxyFor(ContentItem item) + { + return false; + } + + /// + public override string FileExtension => PrefabProxy.Extension; + + /// + public override EditorWindow Open(Editor editor, ContentItem item) + { + return null; + } + + /// + public override Color AccentColor => Color.Transparent; + + /// + public override string TypeName => PrefabProxy.AssetTypename; + + /// + public override AssetItem ConstructItem(string path, string typeName, ref Guid id) + { + return null; + } + + /// + public override bool CanCreate(ContentFolder targetLocation) + { + return targetLocation.CanHaveAssets; + } + + /// + public override void Create(string outputPath, object arg) + { + // Create prefab with UI Control + var actor = new UIControl + { + Name = Path.GetFileNameWithoutExtension(outputPath), + StaticFlags = StaticFlags.None, + }; + actor.Control = new Button + { + Text = "Button", + }; + PrefabManager.CreatePrefab(actor, outputPath, false); + Object.Destroy(actor, 20.0f); + } + } } diff --git a/Source/Editor/Modules/ContentDatabaseModule.cs b/Source/Editor/Modules/ContentDatabaseModule.cs index fd830db86..0e4e96d30 100644 --- a/Source/Editor/Modules/ContentDatabaseModule.cs +++ b/Source/Editor/Modules/ContentDatabaseModule.cs @@ -1106,6 +1106,7 @@ namespace FlaxEditor.Modules Proxy.Add(new VisualScriptProxy()); Proxy.Add(new BehaviorTreeProxy()); Proxy.Add(new LocalizedStringTableProxy()); + Proxy.Add(new WidgetProxy()); Proxy.Add(new FileProxy()); Proxy.Add(new SpawnableJsonAssetProxy());