private void LoadPreloadedFiles(List <ObjectTreeNode> nodes)
        {
            ProgressWindow.Start(() =>
            {
                foreach (var node in nodes)
                {
                    ProgressWindow.Update($"Opening {ArchiveFileInfo.FileName}", 0, true);

                    ArchiveFileInfo.FileFormat = ArchiveFileInfo.OpenFile();
                    if (ArchiveFileInfo.FileFormat != null)
                    {
                        var fileNode = ObjectListWrapperLoader.OpenFormat(new ImageList(), ArchiveFileInfo.FileFormat);
                        node.Tag     = ArchiveFileInfo.FileFormat;
                        foreach (var child in fileNode.Children)
                        {
                            AddChild(child);
                        }
                    }
                }

                ProgressWindow.Wait(1000);
                ProgressWindow.Update($"Finished!", 100);
                ProgressWindow.CloseProgressBar();
            });
        }
Example #2
0
        public void ReloadFile(IFileFormat fileFormat)
        {
            ObjectTreeNode hiearchyNode = ObjectListWrapperLoader.OpenFormat(imgList, fileFormat);

            ObjectHiearchy.ClearItems();
            ObjectHiearchy.Add(hiearchyNode);
            ObjectAssetView.LoadRoot(hiearchyNode);
            ObjectHiearchy.UpdateCache(hiearchyNode);

            if (fileFormat is ITextureContainer && hiearchyNode.ChildCount >= 1)
            {
                ObjectHiearchy.SelectedNode = hiearchyNode.Children.FirstOrDefault();
            }
            else if (ObjectHiearchy.Children.Count > 0)
            {
                ObjectHiearchy.SelectedNode = ObjectHiearchy.Children.LastOrDefault();
            }
        }
Example #3
0
        private void ObjectList_DoubleClick(object sender, EventArgs e)
        {
            var nodes = GetSelectedObjects();

            for (int i = 0; i < nodes.Count; i++)
            {
                if (nodes[i].Tag is ArchiveFileInfo)
                {
                    var archiveInfo = (ArchiveFileInfo)nodes[i].Tag;
                    archiveInfo.FileFormat = archiveInfo.OpenFile();

                    if (archiveInfo.FileFormat != null)
                    {
                        var fileNode = ObjectListWrapperLoader.OpenFormat(imgList, archiveInfo.FileFormat);
                        nodes[i].Tag = archiveInfo.FileFormat;
                        foreach (var child in fileNode.Children)
                        {
                            nodes[i].AddChild(child);
                        }
                    }
                    SelectionChanged(nodes[i]);
                }
            }
        }
Example #4
0
        public void LoadFormat(IFileFormat fileFormat)
        {
            fileFormats.Add(fileFormat);
            ObjectTreeNode hiearchyNode = ObjectListWrapperLoader.OpenFormat(imgList, fileFormat);

            ObjectHiearchy.Add(hiearchyNode);
            ObjectAssetView.LoadRoot(hiearchyNode);
            ObjectHiearchy.UpdateCache(hiearchyNode);

            if (fileFormat is ITextureContainer && hiearchyNode.ChildCount >= 1)
            {
                ObjectHiearchy.Expand(hiearchyNode);
                ObjectHiearchy.SelectedNode = hiearchyNode.Children.FirstOrDefault();

                if (((ITextureContainer)fileFormat).DisplayIcons)
                {
                    ReloadTextureIcons((ITextureContainer)fileFormat, hiearchyNode.Children);
                }
            }
            else
            {
                ObjectHiearchy.SelectedNode = hiearchyNode;
            }
        }
Example #5
0
        private void SelectionChanged(ObjectTreeNode obj)
        {
            obj.OnClick();

            bool tryUpdateViewport = false;

            if (Runtime.SelectedBoneIndex != -1)
            {
                tryUpdateViewport         = true;
                Runtime.SelectedBoneIndex = -1;
            }

            if (obj.Tag is ArchiveFileInfo)
            {
                var fileInfo = (ArchiveFileInfo)obj.Tag;

                if (fileInfo.OpenFileFormatOnLoad)
                {
                    fileInfo.FileFormat = fileInfo.OpenFile();
                }
                if (fileInfo.FileFormat != null)
                {
                    var fileNode = ObjectListWrapperLoader.OpenFormat(imgList, fileInfo.FileFormat);
                    obj.Tag = fileInfo.FileFormat;
                    foreach (var child in fileNode.Children)
                    {
                        obj.AddChild(child);
                    }
                    SelectionChanged(obj);
                    return;
                }

                ArchiveFilePanel hexEditor = GetActiveEditor <ArchiveFilePanel>();
                hexEditor.LoadFile(this, fileInfo);
            }
            else if (obj.Tag is STGenericTexture)
            {
                var tex = (STGenericTexture)obj.Tag;

                ImageEditorBase editor = GetActiveEditor <ImageEditorBase>();
                editor.LoadProperties(tex.DisplayProperties);
                editor.LoadImage(tex);
            }
            else if (obj.Tag is IPropertyDisplay)
            {
                var property = (IPropertyDisplay)obj.Tag;

                STPropertyGrid editor = GetActiveEditor <STPropertyGrid>();
                editor.LoadProperty(property.PropertyDisplay);
            }
            else if (obj.Tag is IEditorDisplay)
            {
                var property = (IEditorDisplay)obj.Tag;
                Console.WriteLine($"IEditorDisplay {property}");

                var gui = GUIGenerator.Generate(property);
                gui.Dock = DockStyle.Fill;

                STPanel editor = GetActiveEditor <STPanel>();
                editor.Controls.Clear();
                editor.Controls.Add(gui);
            }
            else if (obj.Tag is System.IO.Stream)
            {
                var stream = (System.IO.Stream)obj.Tag;

                HexEditor hexEditor = GetActiveEditor <HexEditor>();
                hexEditor.LoadData(stream);
            }
            else if (obj.Tag is IVideoFormat)
            {
                VideoPlayer editor = GetActiveEditor <VideoPlayer>();
                editor.LoadVideoFile((IVideoFormat)obj.Tag);
            }
            else if (obj.Tag is STGenericMesh)
            {
                var mesh = (STGenericMesh)obj.Tag;
                mesh.SelectMesh?.Invoke(mesh, EventArgs.Empty);

                if (WorkspacePanel == null)
                {
                    WorkspacePanel = CreateWorkspacePanel();
                }

                WorkspacePanel workspace  = GetActiveEditor <WorkspacePanel>(WorkspacePanel);
                var            meshEditor = workspace.GetActiveEditor <MeshEditor>();
                meshEditor.LoadMesh(mesh);
                workspace.UpdateViewport();
                ObjectHiearchy.Focus();
            }
            else if (obj.Tag is STGenericMaterial)
            {
                var mat = (STGenericMaterial)obj.Tag;

                if (WorkspacePanel == null)
                {
                    WorkspacePanel = CreateWorkspacePanel();
                }

                WorkspacePanel workspace      = GetActiveEditor <WorkspacePanel>(WorkspacePanel);
                var            materialEditor = workspace.GetActiveEditor <MaterialEditor>();
                materialEditor.LoadMaterial(mat);
                workspace.UpdateViewport();
            }
            else if (obj.Tag is IModelFormat)
            {
                if (WorkspacePanel == null)
                {
                    WorkspacePanel = CreateWorkspacePanel();
                }

                WorkspacePanel workspace = GetActiveEditor <WorkspacePanel>(WorkspacePanel);
                workspace.LoadFileFormat((IModelFormat)(obj.Tag));
                workspace.UpdateViewport();
            }
            else if (obj.Tag is IModelSceneFormat)
            {
                if (WorkspacePanel == null)
                {
                    WorkspacePanel = CreateWorkspacePanel();
                }

                WorkspacePanel workspace = GetActiveEditor <WorkspacePanel>(WorkspacePanel);
                workspace.LoadFileFormat((IModelSceneFormat)(obj.Tag));
                workspace.UpdateViewport();
            }
            else if (obj.Tag is STAnimation)
            {
                if (WorkspacePanel == null)
                {
                    WorkspacePanel = CreateWorkspacePanel();
                }

                WorkspacePanel workspace = GetActiveEditor <WorkspacePanel>(WorkspacePanel);
                workspace.LoadFileFormat((STAnimation)(obj.Tag));
                workspace.UpdateViewport();
            }
            else if (obj.Tag is STBone)
            {
                var bone = (STBone)obj.Tag;
                Runtime.SelectedBoneIndex = bone.Index;
                WorkspacePanel.UpdateViewport();
            }

            if (tryUpdateViewport && WorkspacePanel != null)
            {
                WorkspacePanel.UpdateViewport();
            }
            // else
            //    GetActiveEditor<STPanel>();
        }