private void TryLoadCourseDir(string folder)
        {
            if (System.IO.File.Exists($"{folder}\\course.bgenv"))
            {
                var archive = (IArchiveFile)STFileLoader.OpenFileFormat($"{folder}\\course.bgenv");

                LightingEngine lightingEngine = new LightingEngine();
                lightingEngine.LoadArchive(archive.Files.ToList());
                LightingEngine.LightSettings = lightingEngine;
                LightingEngine.LightSettings.UpdateColorCorrectionTable();
            }
            if (System.IO.File.Exists($"{folder}\\course_bglpbd.szs"))
            {
                //ProbeMapManager.Prepare(EveryFileExplorer.YAZ0.Decompress($"{dir}\\course_bglpbd.szs"));
                //  DataCache.ModelCache.Add(bfres.Renderer.Name, bfres.Renderer);
            }
        }
Exemplo n.º 2
0
        private void TryLoadCourseDir(string folder)
        {
            if (System.IO.File.Exists($"{folder}\\course_muunt.byaml") && MapLoader.HasValidPath)
            {
                MapLoader.LoadSkybox($"{folder}\\course_muunt.byaml");

                foreach (var render in MapLoader.Renders)
                {
                    AddDrawable(render);
                }
            }
            if (System.IO.File.Exists($"{folder}\\course.bgenv"))
            {
                var archive = (IArchiveFile)STFileLoader.OpenFileFormat($"{folder}\\course.bgenv");

                LightingEngine lightingEngine = new LightingEngine();
                lightingEngine.LoadArchive(archive.Files.ToList());
                LightingEngine.LightSettings = lightingEngine;
                LightingEngine.LightSettings.UpdateColorCorrectionTable();

                //Generate light maps (area based lighting from directional and hemi lighting)
                foreach (var lmap in lightingEngine.Resources.LightMapFiles.Values)
                {
                    foreach (var lightMapArea in lmap.LightAreas)
                    {
                        LightingEngine.LightSettings.UpdateLightmap(Pipeline._context, lightMapArea.Settings.Name);
                    }
                }

                if (MapLoader.HasValidPath)
                {
                    //Create a list of models that can render onto cubemaps
                    List <GenericRenderer> cubemapRenderModels = new List <GenericRenderer>();
                    foreach (BfresRender model in Pipeline.SceneObjects)
                    {
                        if (model.IsSkybox) //Only load skybox (VR) map objects. Todo this should be improved.
                        {
                            cubemapRenderModels.Add(model);
                        }
                    }

                    //Load the main models (which in this case would be the course model)
                    foreach (var model in Pipeline.Files)
                    {
                        cubemapRenderModels.Add(model.Renderer);
                    }

                    //Generate cubemaps in the scene.

                    //Todo need to fixup cubemap generation as it typically has bugs on certain hardware.
                    //Certain games are also missing cubemap array support atm.
                    LightingEngine.LightSettings.UpdateCubemap(cubemapRenderModels, false);
                }
            }
            if (System.IO.File.Exists($"{folder}\\course_bglpbd.szs"))
            {
                //Todo handle probe lighting (they alter lightmaps for map objects)
                ProbeMapManager.Prepare(Toolbox.Core.IO.YAZ0.Decompress($"{folder}\\course_bglpbd.szs"));
            }
            if (System.IO.File.Exists($"{folder}\\course.bglpbd"))
            {
                //Todo handle probe lighting (they alter lightmaps for map objects)
                ProbeMapManager.Prepare(File.ReadAllBytes($"{folder}\\course.bglpbd"));
            }
        }