diff --git a/graph.cpp b/graph.cpp index 3f47734c..801261e8 100644 --- a/graph.cpp +++ b/graph.cpp @@ -3016,15 +3016,16 @@ EX transmatrix applyDowndir(cell *c, const cellfunction& cf) { return ddspin(c, patterns::downdir(c, cf), M_PI); } -void draw_movement_arrows(cell *c, const transmatrix& V) { +void draw_movement_arrows(cell *c, const transmatrix& V, int df) { if(viewdists) return; for(int d=0; d<8; d++) { movedir md = vectodir(spin(-d * M_PI/4) * smalltangent()); - int u = md.d; - cellwalker xc = cwt + u + wstep; + cellwalker xc = cwt + md.d; + if(xc.spin != df) continue; + xc += wstep; if(xc.at == c) { transmatrix fixrot = sphereflip * rgpushxto0(sphereflip * tC0(V)); // make it more transparent @@ -4020,7 +4021,7 @@ EX void drawMarkers() { #if CAP_SHAPES if((vid.axes == 4 || (vid.axes == 1 && !mousing)) && !shmup::on && GDIM == 2) { if(multi::players == 1) { - forCellIdAll(c2, d, cwt.at) IG(c2) draw_movement_arrows(c2, Gm(cwt.at) * currentmap->adj(cwt.at, d)); + forCellIdAll(c2, d, cwt.at) IG(c2) draw_movement_arrows(c2, Gm(cwt.at) * currentmap->adj(cwt.at, d), d); } else if(multi::players > 1) for(int p=0; p ttm(cwtV, multi::whereis[p]); dynamicval tcw(cwt, multi::player[p]); - draw_movement_arrows(c2, Gm(cwt.at) * currentmap->adj(cwt.at, d)); + draw_movement_arrows(c2, Gm(cwt.at) * currentmap->adj(cwt.at, d), d); } } }