コード例 #1
0
        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);
        }
コード例 #2
0
        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 = "";
        }