public void AddDrawable(IFileFormat format) { var wrappers = ObjectWrapperFileLoader.OpenFormat(format); if (wrappers != null) { Outliner.Nodes.Add(wrappers); } var modelRender = format as IRenderableFile; modelRender.Renderer.ID = DataCache.ModelCache.Values.Count.ToString(); DataCache.ModelCache.Add(modelRender.Renderer.ID.ToString(), modelRender.Renderer); Pipeline.AddFile(modelRender); }
public void LoadFileFormat(string fileName) { if (!initGlobalShaders) { return; } if (fileName.EndsWith(".byaml") && MapLoader.HasValidPath) { MapLoader.LoadMuunt(fileName); foreach (var render in MapLoader.Renders) { AddDrawable(render); } return; } if (!WorkspaceWindow.AddToActiveWorkspace) { ClearWorkspace(); } string name = System.IO.Path.GetFileName(fileName); status = $"Loading file {name}"; var fileFormat = STFileLoader.OpenFileFormat(fileName); if (fileFormat == null) { status_start = (float)ImGui.GetTime(); status_delay = 3.0f; status = $"File Format not supported for {name}."; return; } if (!recentFiles.Contains(fileName)) { SaveRecentFile(fileName); } Outliner.ActiveFileFormat = fileFormat; if (fileFormat is IRenderableFile) { AddDrawable(fileFormat); } else if (fileFormat is IArchiveFile) { foreach (var file in (((IArchiveFile)fileFormat).Files)) { if (file.FileName.EndsWith(".bfres") || file.FileName.EndsWith("sbfres")) { var bfres = file.OpenFile(); AddDrawable(bfres); } } } else if (fileFormat is ITextureContainer) { foreach (var tex in ((ITextureContainer)fileFormat).TextureList) { Runtime.TextureCache.Add(tex); } } else if (fileFormat is Toolbox.Core.ViewModels.NodeBase) { var wrappers = ObjectWrapperFileLoader.OpenFormat(fileFormat); if (wrappers != null) { Outliner.Nodes.Add(wrappers); } } string dir = System.IO.Path.GetDirectoryName(fileName); TryLoadCourseDir(dir); ForceFocused = true; status = ""; }