pass in a settings, so BSP loading can use paths from light

This commit is contained in:
Jonathan 2023-05-23 22:12:11 -04:00
parent f73d71a7ca
commit 228f2057a2
3 changed files with 17 additions and 16 deletions

View File

@ -350,15 +350,8 @@ void GLView::takeScreenshot(int w, int h)
update();
}
void GLView::renderBSP(const QString &file, const mbsp_t &bsp, const bspxentries_t &bspx, const std::vector<entdict_t> &entities)
void GLView::renderBSP(const QString &file, const mbsp_t &bsp, const bspxentries_t &bspx, const std::vector<entdict_t> &entities, const settings::common_settings &settings)
{
// FIXME: move to a lightpreview_settings
settings::common_settings settings;
// FIXME: copy the -path args from light
settings.paths.copy_from(light_options.paths);
bsp.loadversion->game->init_filesystem(file.toStdString(), settings);
img::load_textures(&bsp, settings);
// build lightmap atlas

View File

@ -115,7 +115,7 @@ public:
GLView(QWidget *parent = nullptr);
~GLView();
void renderBSP(const QString &file, const mbsp_t &bsp, const bspxentries_t &bspx, const std::vector<entdict_t> &entities);
void renderBSP(const QString &file, const mbsp_t &bsp, const bspxentries_t &bspx, const std::vector<entdict_t> &entities, const settings::common_settings &settings);
void setCamera(const qvec3d &origin, const qvec3d &fwd);
void setLighmapOnly(bool lighmapOnly);
void setFullbright(bool fullbright);

View File

@ -307,6 +307,8 @@ void MainWindow::loadFileInternal(const QString &file, bool is_reload)
bspdata_t d;
settings::common_settings render_settings;
if (fs_path.extension().compare(".bsp") == 0) {
LoadBSPFile(fs_path, &d);
@ -321,26 +323,32 @@ void MainWindow::loadFileInternal(const QString &file, bool is_reload)
argPtrs.push_back(arg.data());
}
settings::common_settings settings;
render_settings.preinitialize(argPtrs.size(), argPtrs.data());
render_settings.initialize(argPtrs.size() - 1, argPtrs.data() + 1);
render_settings.postinitialize(argPtrs.size(), argPtrs.data());
settings.preinitialize(argPtrs.size(), argPtrs.data());
settings.initialize(argPtrs.size(), argPtrs.data());
settings.postinitialize(argPtrs.size(), argPtrs.data());
d.version->game->init_filesystem(fs_path, settings);
d.version->game->init_filesystem(fs_path, render_settings);
ConvertBSPFormat(&d, &bspver_generic);
} else {
d = QbspVisLight_Common(
fs_path, ParseArgs(qbsp_options), ParseArgs(vis_options), ParseArgs(light_options), vis_checkbox->isChecked());
// FIXME: move to a lightpreview_settings
settings::common_settings settings;
// FIXME: copy the -path args from light
settings.paths.copy_from(::light_options.paths);
d.loadversion->game->init_filesystem(file.toStdString(), settings);
}
const auto &bsp = std::get<mbsp_t>(d.bsp);
auto ents = EntData_Parse(bsp);
glView->renderBSP(file, bsp, d.bspx.entries, ents);
glView->renderBSP(file, bsp, d.bspx.entries, ents, render_settings);
if (!is_reload && !glView->getKeepOrigin()) {
for (auto &ent : ents) {