diff --git a/geom-exp.cpp b/geom-exp.cpp index d8ed262e..aa368122 100644 --- a/geom-exp.cpp +++ b/geom-exp.cpp @@ -1102,8 +1102,14 @@ EX void showEuclideanMenu() { dialog::add_action_push(show3D); } menuitem_projection('1'); - if(nonisotropic && !sl2 && !embedded_plane) - dialog::addBoolItem_action(XLAT("geodesic movement in Sol/Nil"), nisot::geodesic_movement, 'G'); + if(nonisotropic && !sl2 && !embedded_plane) { + dialog::addBoolItem(XLAT("geodesic movement in Sol/Nil"), nisot::geodesic_movement, 'G'); + dialog::add_action([] { + nisot::geodesic_movement = !nisot::geodesic_movement; + if(pmodel == mdLiePerspective && nisot::geodesic_movement) pmodel = mdGeodesic; + if(pmodel == mdGeodesic && !nisot::geodesic_movement) pmodel = mdLiePerspective; + }); + } #if CAP_CRYSTAL && MAXMDIM >= 4 crystal::add_crystal_transform('x'); #endif diff --git a/system.cpp b/system.cpp index da782a2b..f0c4d744 100644 --- a/system.cpp +++ b/system.cpp @@ -1368,7 +1368,8 @@ EX void stop_game() { } EX eModel default_model() { - if(nonisotropic) return mdGeodesic; + if(sl2) return mdGeodesic; + if(nonisotropic) return nisot::geodesic_movement ? mdGeodesic : mdLiePerspective; if(GDIM == 3) return mdPerspective; return mdDisk; }