rogueviz:: improved the visualization of edges in quotient geometries

This commit is contained in:
Zeno Rogue 2018-07-04 14:38:08 +02:00
parent 6e1983baa9
commit 2efbccd334
1 changed files with 9 additions and 6 deletions

View File

@ -1060,7 +1060,7 @@ void drawVertex(const transmatrix &V, cell *c, shmup::monster *m) {
if(hilite) ghilite = true;
if(ei->lastdraw < frameid) {
if(ei->lastdraw < frameid || quotient) {
ei->lastdraw = frameid;
int xlalpha = (hilite || hiliteclick) ? 64 : 20;
@ -1072,9 +1072,12 @@ void drawVertex(const transmatrix &V, cell *c, shmup::monster *m) {
else xlalpha = int(pow(ld(.5), ggamma) * 255);
if(svg::in && xlalpha < 16) continue;
if(quotient && &vd != &vd1) continue;
transmatrix& gm1 = shmup::ggmatrix(vd1.m->base);
transmatrix& gm2 = shmup::ggmatrix(vd2.m->base);
transmatrix gm1 = V; // shmup::ggmatrix(vd1.m->base);
transmatrix gm2 =
quotient ? V * shmup::calc_relative_matrix(vd2.m->base, c, NOHINT) :
shmup::ggmatrix(vd2.m->base);
hyperpoint h1 = gm1 * vd1.m->at * C0;
hyperpoint h2 = gm2 * vd2.m->at * C0;
@ -1112,9 +1115,9 @@ void drawVertex(const transmatrix &V, cell *c, shmup::monster *m) {
}
else {
if(ei->orig && ei->orig->cpdist >= 3) ei->orig = NULL;
if(!quotient && ei->orig && ei->orig->cpdist >= 3) ei->orig = NULL;
if(!ei->orig) {
ei->orig = euclid ? cwt.c : viewctr.h->c7; // cwt.c;
ei->orig = quotient ? c : euclid ? cwt.c : viewctr.h->c7; // cwt.c;
ei->prec.clear();
transmatrix T = inverse(shmup::ggmatrix(ei->orig));
@ -1133,7 +1136,7 @@ void drawVertex(const transmatrix &V, cell *c, shmup::monster *m) {
else
storeline(ei->prec, T*h1, T*h2);
}
queuetable(shmup::ggmatrix(ei->orig), ei->prec, isize(ei->prec), col, 0,
queuetable(quotient ? V : shmup::ggmatrix(ei->orig), ei->prec, isize(ei->prec), col, 0,
PPR_STRUCT0);
}
}