Beispiel #1
0
        private void UpdateSearch(string searchText)
        {
            searchText = ImGuiUtility.TrimToNullByte(searchText);

            if (searchText == _searchText)
            {
                return;
            }

            _searchText = searchText;

            _items.Clear();

            var isEmptySearch = string.IsNullOrWhiteSpace(_searchText);

            var assetStore = Context.Game.AssetStore;

            foreach (var asset in assetStore.GetAllAssets())
            {
                if (isEmptySearch || asset.FullName.IndexOf(_searchText, StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    if (!AssetViewConstructors.TryGetValue(asset.GetType(), out var assetViewConstructor))
                    {
                        assetViewConstructor = DefaultAssetViewConstructor;
                    }

                    AssetView createAssetView() => (AssetView)assetViewConstructor.Invoke(new object[] { Context, asset });

                    _items.Add(new AssetListItem(asset.FullName, createAssetView));
                }
            }
        }
Beispiel #2
0
        private void UpdateSearch(string searchText)
        {
            searchText = ImGuiUtility.TrimToNullByte(searchText);

            if (searchText == _searchText)
            {
                return;
            }

            _searchText = searchText;

            _files.Clear();

            if (_bigArchive == null)
            {
                return;
            }

            if (string.IsNullOrWhiteSpace(_searchText))
            {
                _files.AddRange(_bigArchive.Entries.OrderBy(x => x.FullName));
            }
            else
            {
                _files.AddRange(_bigArchive.Entries
                                .Where(entry => entry.FullName.IndexOf(_searchText, StringComparison.OrdinalIgnoreCase) >= 0)
                                .OrderBy(x => x.FullName));
            }
        }
Beispiel #3
0
        private void UpdateSearch(string searchText)
        {
            searchText = ImGuiUtility.TrimToNullByte(searchText);

            if (searchText == _searchText)
            {
                return;
            }

            _searchText = searchText;

            _items.Clear();

            var isEmptySearch = string.IsNullOrWhiteSpace(_searchText);

            var assetStore = Context.Game.AssetStore;

            foreach (var asset in assetStore.GetAllAssets())
            {
                if (isEmptySearch || asset.FullName.IndexOf(_searchText, StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    _items.Add(new AssetListItem(asset.FullName, asset));
                }
            }
        }
Beispiel #4
0
        private void UpdateSearch(string searchText)
        {
            searchText = ImGuiUtility.TrimToNullByte(searchText);

            if (searchText == _searchText)
            {
                return;
            }

            _searchText = searchText;
            UpdateFilesList();
        }
Beispiel #5
0
        private void UpdateSearch(string searchText)
        {
            searchText = ImGuiUtility.TrimToNullByte(searchText);

            if (searchText == _searchText)
            {
                return;
            }

            _searchText = searchText;

            _items.Clear();

            var isEmptySearch = string.IsNullOrWhiteSpace(_searchText);

            void AddItem(string assetName, Func <AssetView> createAssetView)
            {
                if (isEmptySearch || assetName.IndexOf(_searchText, StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    _items.Add(new AssetListItem(assetName, createAssetView));
                }
            }

            foreach (var asset in Game.ContentManager.CachedObjects)
            {
                var assetName = AssetView.GetAssetName(asset);
                if (assetName == null)
                {
                    continue;
                }

                AddItem(assetName, () => AssetView.CreateAssetView(Context, asset));
            }

            // TODO: Remove these, once audio assets are handled the same as other assets.
            foreach (var objectDefinition in Context.Game.ContentManager.IniDataContext.Objects)
            {
                AddItem($"GameObject:{objectDefinition.Name}", () => new GameObjectView(Context, objectDefinition));
            }
            foreach (var audioFilename in _audioFilenames)
            {
                AddItem($"Audio:{audioFilename}", () => new SoundView(Context, audioFilename));
            }
            foreach (var particleSystemDefinition in Context.Game.ContentManager.IniDataContext.ParticleSystems)
            {
                AddItem($"ParticleSystem:{particleSystemDefinition.Name}", () => new ParticleSystemView(Context, particleSystemDefinition.ToFXParticleSystemTemplate()));
            }
            foreach (var particleSystemTemplate in Context.Game.ContentManager.IniDataContext.FXParticleSystems)
            {
                AddItem($"FXParticleSystem:{particleSystemTemplate.Name}", () => new ParticleSystemView(Context, particleSystemTemplate));
            }
        }
Beispiel #6
0
        private void DrawOpenFileDialog()
        {
            ImGuiUtility.InputText("File Path", _filePathBuffer, out var filePath);

            if (ImGui.Button("Open"))
            {
                filePath = ImGuiUtility.TrimToNullByte(filePath);

                OpenBigFile(filePath);

                ImGui.CloseCurrentPopup();
            }

            ImGui.SetItemDefaultFocus();

            ImGui.SameLine();

            if (ImGui.Button("Cancel"))
            {
                ImGui.CloseCurrentPopup();
            }
        }
Beispiel #7
0
        private void UpdateSearch(string searchText)
        {
            searchText = ImGuiUtility.TrimToNullByte(searchText);

            if (searchText == _searchText)
            {
                return;
            }

            _searchText = searchText;

            _labels.Clear();

            foreach (var label in Context.Game.ContentManager.TranslationManager.Labels)
            {
                var matchesSearch = label.Contains(searchText, StringComparison.OrdinalIgnoreCase);

                if (matchesSearch)
                {
                    _labels.Add(label);
                }
            }
        }
Beispiel #8
0
        private void UpdateSearch(string searchText)
        {
            searchText = ImGuiUtility.TrimToNullByte(searchText);

            if (searchText == _searchText)
            {
                return;
            }

            _searchText = searchText;

            _items.Clear();

            var isEmptySearch = string.IsNullOrWhiteSpace(_searchText);

            foreach (var asset in Context.Game.Scene3D.GameObjects.Items)
            {
                var name = GetObjectName(asset);
                if (isEmptySearch || name.IndexOf(_searchText, StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    _items.Add(asset);
                }
            }
        }
Beispiel #9
0
        private void DrawFilesList()
        {
            ImGui.BeginChild("sidebar", new Vector2(350, 0), true, 0);

            ImGui.PushItemWidth(-1);
            ImGuiUtility.InputText("##search", _searchTextBuffer, out var searchText);
            UpdateSearch(searchText);
            ImGui.PopItemWidth();

            ImGui.BeginChild("files list", Vector2.Zero, true);

            ImGui.Columns(2, "Files", false);

            ImGui.SetColumnWidth(0, 250);

            ImGui.Separator();
            ImGui.Text("Name"); ImGui.NextColumn();
            ImGui.Text("Size"); ImGui.NextColumn();
            ImGui.Separator();

            for (var i = 0; i < _files.Count; i++)
            {
                var entry = _files[i];

                if (ImGui.Selectable(entry.FullName, i == _currentFile, ImGuiSelectableFlags.SpanAllColumns))
                {
                    _currentFile = i;

                    switch (Path.GetExtension(entry.FullName).ToLowerInvariant())
                    {
                    case ".ini":
                    case ".txt":
                    case ".wnd":
                        using (var stream = entry.Open())
                            using (var reader = new StreamReader(stream))
                            {
                                _currentFileText = reader.ReadToEnd();
                            }
                        break;

                    default:
                        _currentFileText = null;
                        break;
                    }
                }

                var shouldOpenSaveDialog = false;

                if (ImGui.BeginPopupContextItem("context" + i))
                {
                    _currentFile = i;

                    if (ImGui.Selectable("Export..."))
                    {
                        shouldOpenSaveDialog = true;
                    }

                    ImGui.EndPopup();
                }

                ImGui.NextColumn();

                ImGui.Text(entry.Length.ToString());
                ImGui.NextColumn();

                var exportId = "Export##ExportDialog" + i;
                if (shouldOpenSaveDialog)
                {
                    ImGui.OpenPopup(exportId);
                }

                bool contextMenuOpen = true;
                if (ImGui.BeginPopupModal(exportId, ref contextMenuOpen, ImGuiWindowFlags.AlwaysAutoResize))
                {
                    ImGuiUtility.InputText("File Path", _filePathBuffer, out var filePath);

                    if (ImGui.Button("Save"))
                    {
                        filePath = ImGuiUtility.TrimToNullByte(filePath);

                        using (var entryStream = entry.Open())
                        {
                            using (var fileStream = File.OpenWrite(filePath))
                            {
                                entryStream.CopyTo(fileStream);
                            }
                        }

                        ImGui.CloseCurrentPopup();
                    }

                    ImGui.SetItemDefaultFocus();

                    ImGui.SameLine();

                    if (ImGui.Button("Cancel"))
                    {
                        ImGui.CloseCurrentPopup();
                    }

                    ImGui.EndPopup();
                }
            }

            ImGui.Columns(1, null, false);

            ImGui.EndChild();

            ImGui.EndChild();
        }