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(); }); }
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(); } }
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]); } } }
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; } }
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>(); }