diff --git a/bigstuff.cpp b/bigstuff.cpp index 94b39388..107a9e31 100644 --- a/bigstuff.cpp +++ b/bigstuff.cpp @@ -1376,6 +1376,7 @@ EX int wallchance(cell *c, bool deepOcean) { /** \brief should we generate the horocycles in the current geometry? */ EX bool horo_ok() { if(INVERSE) return false; + if(currentmap->strict_tree_rules()) return false; return hyperbolic && !bt::in() && !arcm::in() && !kite::in() && !experimental && !hybri && !arb::in() && !quotient; } @@ -1929,6 +1930,7 @@ EX void gen_temple(cell *c) { } EX void moreBigStuff(cell *c) { + if(currentmap->strict_tree_rules()) return; if((bearsCamelot(c->land) && !euclid && !quotient && !nil) || c->land == laCamelot) if(have_alt(c)) if(!(bt::in() && specialland != laCamelot)) diff --git a/cell.cpp b/cell.cpp index 827f7c5e..fc63ba06 100644 --- a/cell.cpp +++ b/cell.cpp @@ -59,6 +59,8 @@ struct hrmap { virtual transmatrix spin_from(cell *c, int d, ld bonus=0); virtual double spacedist(cell *c, int i) { return hdist0(tC0(adj(c, i))); } + + virtual bool strict_tree_rules() { return false; } virtual void find_cell_connection(cell *c, int d); virtual int shvid(cell *c) { return 0; } diff --git a/floorshapes.cpp b/floorshapes.cpp index 939516f3..deaaeb0f 100644 --- a/floorshapes.cpp +++ b/floorshapes.cpp @@ -974,6 +974,8 @@ EX struct dqi_poly *draw_shapevec(cell *c, const shiftmatrix& V, const vectorstrict_tree_rules()) return &queuepolyat(V, shv[shvid(c)], col, prio); + #if CAP_GP else if(GOLDBERG) { int id = gp::get_plainshape_id(c); diff --git a/pattern2.cpp b/pattern2.cpp index 346bd47b..63033276 100644 --- a/pattern2.cpp +++ b/pattern2.cpp @@ -895,7 +895,7 @@ EX namespace patterns { } void val_all(cell *c, patterninfo &si, int sub, int pat) { - if(IRREGULAR || arcm::in() || bt::in() || arb::in() || WDIM == 3) si.symmetries = c->type; + if(IRREGULAR || arcm::in() || bt::in() || arb::in() || WDIM == 3 || currentmap->strict_tree_rules()) si.symmetries = c->type; else if(a46) val46(c, si, sub, pat); else if(a38) val38(c, si, sub, pat); else if(S7 < 6 && S3 == 3 && !INVERSE && !kite::in()) valSibling(c, si, sub, pat); @@ -1088,6 +1088,8 @@ EX namespace patterns { if(sub & SPF_EXTRASYM) si.reflect = true; return si; } + + if(currentmap->strict_tree_rules()) return si; if(arb::in()) { si.id = arb::id_of(c->master); @@ -2680,6 +2682,12 @@ EX namespace linepatterns { linepattern patTree("underlying tree", 0x00d0d000, cheating, ALLCELLS( + + if(currentmap->strict_tree_rules()) { + gridlinef(V, C0, V * currentmap->adj(c, 0), C0, col, 2 + vid.linequality); continue; + return; + } + if(is_master(c)) { int dir = updir(c->master); if(dir == -1) continue;