diff --git a/graph.cpp b/graph.cpp index 3100aef2..b66ec456 100644 --- a/graph.cpp +++ b/graph.cpp @@ -5665,6 +5665,7 @@ purehookset hooks_drawmap; transmatrix cview() { sphereflip = Id; + if(DIM == 3) return View; if(sphereflipped()) sphereflip[DIM][DIM] = -1; return ypush(vid.yshift) * sphereflip * View; } diff --git a/hypgraph.cpp b/hypgraph.cpp index b2a9d854..6d9939c3 100644 --- a/hypgraph.cpp +++ b/hypgraph.cpp @@ -1040,7 +1040,7 @@ void centerpc(ld aspd) { #endif if(shmup::on && DIM == 3 && vid.sspeed > -5) { - transmatrix at = cpush(2, -vid.yshift) * ggmatrix(shmup::pc[0]->base) * shmup::pc[0]->at; + transmatrix at = ggmatrix(shmup::pc[0]->base) * shmup::pc[0]->at * cpush(2, -vid.yshift); View = inverse(at) * View; return; } diff --git a/shmup.cpp b/shmup.cpp index c9c0a04b..4c0a4934 100644 --- a/shmup.cpp +++ b/shmup.cpp @@ -3424,8 +3424,9 @@ bool drawMonster(const transmatrix& V, cell *c, const transmatrix*& Vboat, trans switch(m->type) { case moPlayer: playerfound = true; - if(playermoved && DIM == 3) continue; + if(playermoved && DIM == 3 && vid.yshift == 0 && vid.sspeed > -5) continue; cpid = m->pid; + if(DIM == 3) view = view * spin(-M_PI/2); drawPlayerEffects(view, c, true); if(m->inBoat) m->footphase = 0; if(mapeditor::drawplayer) drawMonsterType(moPlayer, c, view, 0xFFFFFFC0, m->footphase);