mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-09-27 13:48:15 +00:00
rv:: intra-demos improvements
This commit is contained in:
parent
decdfc7806
commit
e93187a81f
@ -453,6 +453,84 @@ void create_intra_sol() {
|
|||||||
println(hlog, "finished create_intra_sol");
|
println(hlog, "finished create_intra_sol");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
map<int, cell*> starter;
|
||||||
|
|
||||||
|
bool vr_keys(int sym, int uni) {
|
||||||
|
if(intra::in && !starter.count(intra::current)) starter[intra::current] = cwt.at;
|
||||||
|
const Uint8 *keystate = SDL12_GetKeyState(NULL);
|
||||||
|
#if CAP_SDL2
|
||||||
|
if(keystate[SDL_SCANCODE_LALT] || keystate[SDL_SCANCODE_RALT])
|
||||||
|
#else
|
||||||
|
if(keystate[SDLK_LALT] || keystate[SDLK_RALT])
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
if(sym == 'e' && intra::in) {
|
||||||
|
println(hlog, "intra::current = ", intra::current);
|
||||||
|
intra::switch_to(2);
|
||||||
|
if(starter.count(intra::current)) cwt.at = centerover = starter[intra::current];
|
||||||
|
fullcenter();
|
||||||
|
View = cspin90(0, 1);
|
||||||
|
playermoved = false;
|
||||||
|
walking::handle();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(sym == 'h' && intra::in) {
|
||||||
|
intra::switch_to(0);
|
||||||
|
if(starter.count(intra::current)) cwt.at = centerover = starter[intra::current];
|
||||||
|
fullcenter();
|
||||||
|
View = cspin90(0, 1);
|
||||||
|
playermoved = false;
|
||||||
|
walking::handle();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(sym == 's' && intra::in) {
|
||||||
|
intra::switch_to(6);
|
||||||
|
if(starter.count(intra::current)) cwt.at = centerover = starter[intra::current];
|
||||||
|
fullcenter();
|
||||||
|
View = cspin90(0, 1);
|
||||||
|
playermoved = false;
|
||||||
|
walking::handle();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(sym == ',') {
|
||||||
|
camera_speed *= 1.2;
|
||||||
|
println(hlog, "camera_speed set to ", camera_speed);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(sym == '.') {
|
||||||
|
camera_speed /= 1.2;
|
||||||
|
println(hlog, "camera_speed set to ", camera_speed);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#if CAP_VR
|
||||||
|
if(sym == 'a') {
|
||||||
|
vrhr::absolute_unit_in_meters *= 1.2;
|
||||||
|
walking::eye_level *= 1.2;
|
||||||
|
println(hlog, "vr absolute unit set to ", vrhr::absolute_unit_in_meters);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if(sym == 'z') {
|
||||||
|
vrhr::absolute_unit_in_meters /= 1.2;
|
||||||
|
walking::eye_level /= 1.2;
|
||||||
|
println(hlog, "vr absolute unit set to ", vrhr::absolute_unit_in_meters);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if(sym == 'w') {
|
||||||
|
walking::switch_walking();
|
||||||
|
println(hlog, "walking set to ", ONOFF(walking::on));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#if CAP_VR
|
||||||
|
if(sym == 'x') {
|
||||||
|
vrhr::always_show_hud = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// all generators will add to the current scene
|
// all generators will add to the current scene
|
||||||
|
|
||||||
auto hooks =
|
auto hooks =
|
||||||
@ -500,12 +578,20 @@ auto hooks =
|
|||||||
slide_backup(vrhr::eyes, vrhr::eEyes::truesim);
|
slide_backup(vrhr::eyes, vrhr::eEyes::truesim);
|
||||||
slide_backup(vrhr::cscr, vrhr::eCompScreen::eyes);
|
slide_backup(vrhr::cscr, vrhr::eCompScreen::eyes);
|
||||||
#endif
|
#endif
|
||||||
|
starter.clear();
|
||||||
|
rogueviz::rv_hook(hooks_handleKey, 101, vr_keys);
|
||||||
popScreenAll();
|
popScreenAll();
|
||||||
resetGL();
|
resetGL();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
auto add = [&] (string s, string desc, string youtube, string twitter, reaction_t loader) {
|
struct loader {
|
||||||
|
string desc;
|
||||||
|
char key;
|
||||||
|
reaction_t loader;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto add = [&] (string s, string desc, string youtube, string twitter, vector<loader> loaders) {
|
||||||
v.push_back(tour::slide{
|
v.push_back(tour::slide{
|
||||||
s, 10, tour::LEGAL::NONE | tour::QUICKSKIP | tour::QUICKGEO | tour::ALWAYS_TEXT, desc,
|
s, 10, tour::LEGAL::NONE | tour::QUICKSKIP | tour::QUICKGEO | tour::ALWAYS_TEXT, desc,
|
||||||
[=] (tour::presmode mode) {
|
[=] (tour::presmode mode) {
|
||||||
@ -516,7 +602,9 @@ auto hooks =
|
|||||||
slide_url(mode, 't', "Twitter link", twitter);
|
slide_url(mode, 't', "Twitter link", twitter);
|
||||||
|
|
||||||
slide_url(mode, 'b', "Bridges paper link", "https://archive.bridgesmathart.org/2022/bridges2022-297.html");
|
slide_url(mode, 'b', "Bridges paper link", "https://archive.bridgesmathart.org/2022/bridges2022-297.html");
|
||||||
slide_action(mode, 'r', "run this visualization", loader);
|
|
||||||
|
for(auto& loader: loaders)
|
||||||
|
slide_action(mode, loader.key, loader.desc, loader.loader);
|
||||||
slidecommand = "portal options";
|
slidecommand = "portal options";
|
||||||
if(mode == tour::pmKey) pushScreen(intra::show_portals);
|
if(mode == tour::pmKey) pushScreen(intra::show_portals);
|
||||||
rogueviz::pres::non_game_slide_scroll(mode);
|
rogueviz::pres::non_game_slide_scroll(mode);
|
||||||
@ -525,16 +613,21 @@ auto hooks =
|
|||||||
};
|
};
|
||||||
|
|
||||||
add("inter-geometric portals",
|
add("inter-geometric portals",
|
||||||
"In this world we can find portals between six different geometries. The camera is in 'walking mode' i.e. restricted to keep close to the floor (this can be disabled with '5').",
|
"In this world we can find portals between six different geometries. The camera is in 'walking mode' i.e. restricted to keep close to the floor (this can be disabled with '5').\n\n"
|
||||||
|
"In VR, you might want to prefer the VR version, which adds extra blocks to Solv to improve the performance.\n\n"
|
||||||
|
"Note: this is a very complex shader, so compiling it may take long time!\n\n"
|
||||||
|
"Hotkeys, mostly useful when showing VR to someone:\n\n"
|
||||||
|
"Alt+EHS -- go to Euclidean/hyperbolic/spherical space, Alt+,. -- change the camera speed, Alt+AZ -- change altitude, Alt+W -- switch walking, Alt+X -- change HUD"
|
||||||
|
,
|
||||||
"https://youtu.be/yqUv2JO2BCs", "https://twitter.com/ZenoRogue/status/1496867204419452935",
|
"https://youtu.be/yqUv2JO2BCs", "https://twitter.com/ZenoRogue/status/1496867204419452935",
|
||||||
load("portalscene3.lev", 0.2174492, 600)
|
{loader{"run this visualization", 'r', load("portalscene3.lev", 0.2174492, 600)},
|
||||||
|
loader{"run this visualization (VR)", 'v', load("portalscene3-solv.lev", 0.2174492, 600)}}
|
||||||
);
|
);
|
||||||
add("curved landscape",
|
add("curved landscape",
|
||||||
"Here we create portals between Solv and H3 geometries, resulting in a scene looking a bit like a curved landscape.",
|
"Here we create portals between Solv and H3 geometries, resulting in a scene looking a bit like a curved landscape.",
|
||||||
"", "https://twitter.com/ZenoRogue/status/1446127100516130826",
|
"", "https://twitter.com/ZenoRogue/status/1446127100516130826",
|
||||||
load("solv-h3-scene.lev", 0.05, 3000));
|
{loader{"run this visualization", 'r', load("solv-h3-scene.lev", 0.05, 3000)}});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user