shmup should work in euc_in_product

This commit is contained in:
Zeno Rogue 2023-01-07 22:19:31 +01:00
parent 6d0c0daa40
commit 8e49baef0e
3 changed files with 11 additions and 3 deletions

View File

@ -1838,7 +1838,8 @@ EX void apply_shift_object(transmatrix& Position, const transmatrix orientation,
}
EX void rotate_object(transmatrix& Position, transmatrix& orientation, transmatrix R) {
if(gproduct && WDIM == 3) orientation = orientation * R;
if(geom3::euc_in_product()) orientation = orientation * R;
else if(gproduct && WDIM == 3) orientation = orientation * R;
else Position = Position * R;
}

View File

@ -2078,7 +2078,10 @@ EX void centerpc(ld aspd) {
if(gproduct) NLP = ortho_inverse(pc->ori);
if(WDIM == 2) {
if(vid.wall_height < 0) rotate_view(cspin180(2, 1));
rotate_view( cspin(2, 1, -90._deg - shmup::playerturny[id]) * default_spin());
if(gproduct)
rotate_view( cspin(2, 1, -90._deg - shmup::playerturny[id]) * cspin90(0, 1));
else
rotate_view( cspin(2, 1, -90._deg - shmup::playerturny[id]) * default_spin());
}
return;
}

View File

@ -69,6 +69,7 @@ struct monster {
stunoff = 0; blowoff = 0; fragoff = 0; footphase = 0;
inertia = Hypc; ori = Id; vel = 0;
swordangle = 0;
if(geom3::euc_in_product()) ori = cgi.intermediate_to_logical_scaled;
}
monster() {
@ -939,7 +940,10 @@ void movePlayer(monster *m, int delta) {
if(playerturn[cpid] && canmove && !blown && WDIM == 2) {
m->swordangle -= playerturn[cpid];
rotate_object(nat.T, m->ori, spin(playerturn[cpid]));
if(geom3::euc_in_product())
rotate_object(nat.T, m->ori, cspin(0, 1, playerturn[cpid]));
else
rotate_object(nat.T, m->ori, spin(playerturn[cpid]));
if(inertia_based) m->inertia = spin(-playerturn[cpid]) * m->inertia;
}
shiftmatrix nat0 = nat;