1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-20 07:30:26 +00:00

arcm:: correct cgip is used for the altmap

This commit is contained in:
Zeno Rogue 2021-08-05 12:48:14 +02:00
parent fcf55f1852
commit f21a36a7aa
2 changed files with 21 additions and 7 deletions

View File

@ -524,6 +524,8 @@ EX bool use_gmatrix = true;
* not used by arcm itself, but used in fake arcm
*/
EX geometry_information *alt_cgip;
struct hrmap_archimedean : hrmap {
map<gp::loc, struct cdata> eucdata;
heptagon *origin;
@ -543,13 +545,20 @@ struct hrmap_archimedean : hrmap {
heptagon *alt = NULL;
if(hyperbolic) {
dynamicval<eGeometry> g(geometry, gNormal);
alt = init_heptagon(S7);
alt->s = hsOrigin;
alt->alt = alt;
current_altmap = newAltMap(alt);
dynamicval<eGeometry> g(geometry, gNormal);
dynamicval<eVariation> gv(variation, eVariation::pure);
if(1) {
dynamicval<geometry_information*> gi(cgip, cgip);
check_cgi();
cgi.require_basics();
alt_cgip = cgip;
alt = init_heptagon(S7);
alt->s = hsOrigin;
alt->alt = alt;
current_altmap = newAltMap(alt);
}
}
transmatrix T = xpush(.01241) * spin(1.4117) * xpush(0.1241) * Id;
archimedean_gmatrix[origin] = make_pair(alt, T);
altmap[alt].emplace_back(origin, T);
@ -591,6 +600,8 @@ struct hrmap_archimedean : hrmap {
archimedean_gmatrix.clear();
if(current_altmap) {
dynamicval<eGeometry> g(geometry, gNormal);
dynamicval<eVariation> gv(variation, eVariation::pure);
dynamicval<geometry_information*> gi(cgip, alt_cgip);
delete current_altmap;
current_altmap = NULL;
}
@ -619,7 +630,9 @@ struct hrmap_archimedean : hrmap {
transmatrix U = Id;
if(hyperbolic) {
dynamicval<eGeometry> g(geometry, gNormal);
dynamicval<eGeometry> g(geometry, gNormal);
dynamicval<eVariation> gv(variation, eVariation::pure);
dynamicval<geometry_information*> gi(cgip, alt_cgip);
dynamicval<hrmap*> cm(currentmap, current_altmap);
U = T;
current_altmap->virtualRebase(alt, T);

View File

@ -1194,6 +1194,7 @@ EX void check_cgi() {
cgi.timestamp = ++ntimestamp;
if(hybri) hybrid::underlying_cgip->timestamp = ntimestamp;
if(fake::in()) fake::underlying_cgip->timestamp = ntimestamp;
if(arcm::alt_cgip) arcm::alt_cgip->timestamp = ntimestamp;
if(isize(cgis) > 4) {
vector<pair<int, string>> timestamps;