1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-09-06 04:17:58 +00:00

rogueviz::objmodel:: precision is now configurable via o-key

This commit is contained in:
Zeno Rogue
2021-03-31 12:55:31 +02:00
parent 084fa5ea5e
commit 599d446038
2 changed files with 35 additions and 1 deletions

View File

@@ -22,6 +22,8 @@ bool model::available() {
}
void model::load_obj(model_data& md) {
md.prec_used = prec;
auto& objects = md.objs;
fhstream fs(path+fname, "rt");
@@ -246,6 +248,12 @@ model_data& model::get() {
md = std::make_unique<model_data>();
load_obj(*md);
}
if(md && md->prec_used < prec) {
println(hlog, "need prec=", prec, " used = ", md->prec_used);
md->objs.clear();
load_obj(*md);
}
return *md;
}
@@ -256,5 +264,28 @@ void model_data::render(const shiftmatrix& V) {
}
}
void model_settings() {
emptyscreen();
dialog::init();
add_edit(prec);
dialog::addBack();
dialog::display();
}
void o_key(o_funcs& v) {
v.push_back(named_dialog("set model settings", model_settings));
}
void add_model_settings() {
rogueviz::rv_hook(hooks_o_key, 200, o_key);
}
auto cf = addHook(hooks_configfile, 100, [] {
param_f(prec, "obj_prec")
->editable(1, 100, 1, "3D model precision", "higher-precision models take more time to load and to render.", 'p')
->set_sets([] { dialog::numberdark = dialog::DONT_SHOW; })
;
});
}
}