From 502cee47e78fa3f2ae4f9dcac90cab06e56a6a3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Sun, 1 Jan 2023 16:53:58 +0100 Subject: [PATCH] EditorContentManager Part 2 --- .../src/EditWindows/ContentBrowserWindow.bf | 6 +- GlitchyEditor/src/EditorContentManager.bf | 43 +++++++++----- .../System/Collections/IEnumerable.bf | 58 +------------------ 3 files changed, 33 insertions(+), 74 deletions(-) diff --git a/GlitchyEditor/src/EditWindows/ContentBrowserWindow.bf b/GlitchyEditor/src/EditWindows/ContentBrowserWindow.bf index f4e2bba..6e90727 100644 --- a/GlitchyEditor/src/EditWindows/ContentBrowserWindow.bf +++ b/GlitchyEditor/src/EditWindows/ContentBrowserWindow.bf @@ -61,7 +61,7 @@ namespace GlitchyEditor.EditWindows } } - private void ImGuiPrintEntityTree(TreeNode tree) + private void ImGuiPrintEntityTree(TreeNode tree) { if (!tree->IsDirectory) return; @@ -127,7 +127,7 @@ namespace GlitchyEditor.EditWindows } } - private void DrawDirectoryItem(TreeNode entry) + private void DrawDirectoryItem(TreeNode entry) { ImGui.BeginChild("item", (.)DirectoryItemSize); @@ -197,7 +197,7 @@ namespace GlitchyEditor.EditWindows ImGui.EndChild(); } - private void EntryDoubleClicked(TreeNode entry) + private void EntryDoubleClicked(TreeNode entry) { if (entry->IsDirectory) { diff --git a/GlitchyEditor/src/EditorContentManager.bf b/GlitchyEditor/src/EditorContentManager.bf index 0db767f..daece58 100644 --- a/GlitchyEditor/src/EditorContentManager.bf +++ b/GlitchyEditor/src/EditorContentManager.bf @@ -111,7 +111,7 @@ class EditorContentManager : IContentManager bool _fileSystemDirty = false; - internal TreeNode _assetHierarchy = new TreeNode() ~ DeleteTreeAndChildren!(_); + internal TreeNode _assetHierarchy = null /*new TreeNode()*/ ~ DeleteTreeAndChildren!(_); private append String _contentDirectory = .(); @@ -169,15 +169,29 @@ class EditorContentManager : IContentManager } } + public IAssetLoader GetDefaultAssetLoader(StringView fileExtension) + { + if (_defaultAssetLoaders.TryGetValue(fileExtension, let value)) + return value; + + return null; + } + + /// Rebuilds the asset file hierarchy. private void UpdateFiles() { // TODO: we don't need to rebuild the entire tree! - DeleteTreeAndChildren!(_assetHierarchy); + //DeleteTreeAndChildren!(_assetHierarchy); + + if (_assetHierarchy == null) + { + // TODO: move to init? + + _assetHierarchy = new TreeNode(new AssetNode()); + _assetHierarchy->Path = new String(ContentDirectory); + _assetHierarchy->Name = new String("Content"); + } - _assetHierarchy = new TreeNode(new AssetNode()); - _assetHierarchy->Path = new String(ContentDirectory); - _assetHierarchy->Name = new String("Content"); - String str = scope .(ContentDirectory); /*void GrabSubAssets(TreeNode assetNode) @@ -250,6 +264,15 @@ class EditorContentManager : IContentManager void AddDirectoryToTree(String path, TreeNode parentNode) { + bool b (AssetNode node) + { + return false; + } + + //void V() : + + var v = parentNode.Children.First(); + AssetNode node = new AssetNode(); node.Path = new String(path); node.Name = new String(); @@ -283,14 +306,6 @@ class EditorContentManager : IContentManager _fileSystemDirty = false; } - public IAssetLoader GetDefaultAssetLoader(StringView fileExtension) - { - if (_defaultAssetLoaders.TryGetValue(fileExtension, let value)) - return value; - - return null; - } - private append List _supportedExtensions = .() ~ ClearAndDeleteItems!(_); private append List _assetLoaders = .() ~ ClearAndDeleteItems!(_); private append Dictionary _defaultAssetLoaders = .(); diff --git a/GlitchyEngine/src/Extension/System/Collections/IEnumerable.bf b/GlitchyEngine/src/Extension/System/Collections/IEnumerable.bf index f48dd7e..f80469d 100644 --- a/GlitchyEngine/src/Extension/System/Collections/IEnumerable.bf +++ b/GlitchyEngine/src/Extension/System/Collections/IEnumerable.bf @@ -1,5 +1,3 @@ -// https://github.com/Moneyl/Beef.Linq/blob/master/src/src/Enumerable.bf - using System.Collections; using System; using internal System.Linq; @@ -164,7 +162,7 @@ namespace System.Linq } public static bool Any(this TCollection items, TPredicate predicate) - where TCollection : concrete, IEnumerable, class, new + where TCollection : concrete, IEnumerable where TPredicate : delegate bool(TSource) { for (var it in items) @@ -557,24 +555,6 @@ namespace System.Linq return false; } - public static bool InternalFirst(TEnum items, out TSource val, TPredicate predicate) - where TEnum : concrete, IEnumerator - where TPredicate : delegate bool(TSource) - { - val = default; - using (var iterator = Iterator.Wrap(items)) - { - var enumerator = iterator.mEnum; - if (enumerator.GetNext() case .Ok(out val)) - { - if (predicate(val)) - return true; - } - } - - return false; - } - public static TSource First(this TCollection items) where TCollection : concrete, IEnumerable { @@ -582,15 +562,6 @@ namespace System.Linq return val; Runtime.FatalError("Sequence contained no elements."); } - - public static TSource First(this TCollection items, TPredicate predicate) - where TCollection : concrete, IEnumerable - where TPredicate : delegate bool(TSource) - { - if (InternalFirst(items.GetEnumerator(), let val, predicate)) - return val; - Runtime.FatalError("Sequence contained no elements."); - } public static TSource First(this TEnum items) where TEnum : concrete, IEnumerator @@ -600,15 +571,6 @@ namespace System.Linq Runtime.FatalError("Sequence contained no elements."); } - public static TSource First(this TEnum items, TPredicate predicate) - where TEnum : concrete, IEnumerator - where TPredicate : delegate bool(TSource) - { - if (InternalFirst(items, let val, predicate)) - return val; - Runtime.FatalError("Sequence contained no elements."); - } - public static TSource FirstOrDefault(this TCollection items) where TCollection : concrete, IEnumerable { @@ -618,24 +580,6 @@ namespace System.Linq return default; } - public static TSource FirstOrDefault(this TCollection items, TPredicate predicate) - where TCollection : concrete, IEnumerable - where TPredicate : delegate bool(TSource) - { - if (InternalFirst(items.GetEnumerator(), let val, predicate)) - return val; - - return default; - } - - /*public static WhereEnumerable - Where(this TCollection items, TPredicate predicate) - where TCollection : concrete, IEnumerable - where TPredicate : delegate bool(TSource) - { - return .(items.GetEnumerator(), predicate); - }*/ - public static TSource FirstOrDefault(this TEnum items) where TEnum : concrete, IEnumerator {