mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-01-11 18:00:34 +00:00
hrmap_h3 supports extra_origins
This commit is contained in:
parent
a920b837e1
commit
c3ba88cb6c
32
reg3.cpp
32
reg3.cpp
@ -1423,6 +1423,7 @@ EX namespace reg3 {
|
|||||||
|
|
||||||
heptagon *origin;
|
heptagon *origin;
|
||||||
hrmap *binary_map;
|
hrmap *binary_map;
|
||||||
|
vector<heptagon*> extra_origins;
|
||||||
|
|
||||||
map<heptagon*, pair<heptagon*, transmatrix>> reg_gmatrix;
|
map<heptagon*, pair<heptagon*, transmatrix>> reg_gmatrix;
|
||||||
map<heptagon*, vector<pair<heptagon*, transmatrix> > > altmap;
|
map<heptagon*, vector<pair<heptagon*, transmatrix> > > altmap;
|
||||||
@ -1636,6 +1637,7 @@ EX namespace reg3 {
|
|||||||
#endif
|
#endif
|
||||||
if(quotient_map) delete quotient_map;
|
if(quotient_map) delete quotient_map;
|
||||||
clearfrom(origin);
|
clearfrom(origin);
|
||||||
|
for(auto e: extra_origins) clearfrom(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
map<heptagon*, int> reducers;
|
map<heptagon*, int> reducers;
|
||||||
@ -1691,6 +1693,36 @@ EX namespace reg3 {
|
|||||||
return T;
|
return T;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cell* gen_extra_origin(int fv) override {
|
||||||
|
auto orig = isize(extra_origins) ? extra_origins.back() : origin;
|
||||||
|
|
||||||
|
auto& p1 = reg_gmatrix[orig];
|
||||||
|
heptagon *alt = p1.first;
|
||||||
|
#if CAP_FIELD
|
||||||
|
transmatrix T = p1.second * xpush(10);
|
||||||
|
#else
|
||||||
|
transmatrix T = p1.second * xpush(10);
|
||||||
|
#endif
|
||||||
|
#if CAP_BT
|
||||||
|
if(hyperbolic) {
|
||||||
|
dynamicval<eGeometry> g(geometry, gBinary3);
|
||||||
|
dynamicval<hrmap*> cm(currentmap, binary_map);
|
||||||
|
binary_map->virtualRebase(alt, T);
|
||||||
|
fixmatrix(T);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
heptagon *created = init_heptagon(S7);
|
||||||
|
created->c7 = newCell(S7, created);
|
||||||
|
created->s = hsOrigin;
|
||||||
|
created->fieldval = fv;
|
||||||
|
fixmatrix(T);
|
||||||
|
reg_gmatrix[created] = make_pair(alt, T);
|
||||||
|
altmap[alt].emplace_back(created, T);
|
||||||
|
|
||||||
|
extra_origins.push_back(created);
|
||||||
|
return created->c7;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user