mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-30 15:39:54 +00:00
separate shadows for Escher floorshapes
This commit is contained in:
parent
00f9409e06
commit
7382791dff
@ -399,6 +399,7 @@ void generate_floorshapes_for(int id, cell *c, int siid, int sidir) {
|
|||||||
auto& fsh = *pfsh;
|
auto& fsh = *pfsh;
|
||||||
|
|
||||||
sizeto(fsh.b, id);
|
sizeto(fsh.b, id);
|
||||||
|
sizeto(fsh.shadow, id);
|
||||||
|
|
||||||
if(!gp::on && !irr::on && !binarytiling && !syntetic) {
|
if(!gp::on && !irr::on && !binarytiling && !syntetic) {
|
||||||
generate_matrices_scale(fsh.scale, fsh.noftype);
|
generate_matrices_scale(fsh.scale, fsh.noftype);
|
||||||
@ -410,6 +411,15 @@ void generate_floorshapes_for(int id, cell *c, int siid, int sidir) {
|
|||||||
if(id == 0) bshape2(fsh.b[0], fsh.prio, fsh.shapeid0, hex_matrices);
|
if(id == 0) bshape2(fsh.b[0], fsh.prio, fsh.shapeid0, hex_matrices);
|
||||||
if(id == 1) bshape2(fsh.b[1], fsh.prio, fsh.shapeid1, hept_matrices);
|
if(id == 1) bshape2(fsh.b[1], fsh.prio, fsh.shapeid1, hept_matrices);
|
||||||
}
|
}
|
||||||
|
generate_matrices_scale(fsh.scale * SHADMUL, fsh.noftype);
|
||||||
|
if(nonbitrunc && geosupport_graveyard() < 2 && fsh.shapeid2) {
|
||||||
|
if(id == 0) bshape2(fsh.shadow[0], fsh.prio, fsh.shapeid2, hept_matrices);
|
||||||
|
if(id == 1) bshape2(fsh.shadow[1], fsh.prio, fsh.shapeid2, hept_matrices);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(id == 0) bshape2(fsh.shadow[0], fsh.prio, fsh.shapeid0, hex_matrices);
|
||||||
|
if(id == 1) bshape2(fsh.shadow[1], fsh.prio, fsh.shapeid1, hept_matrices);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
@ -421,32 +431,33 @@ void generate_floorshapes_for(int id, cell *c, int siid, int sidir) {
|
|||||||
|
|
||||||
m.n.sym = cor;
|
m.n.sym = cor;
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
int v = sidir+siid;
|
int v = sidir+siid;
|
||||||
|
|
||||||
for(int d=0; d<m.o.sym; d++) {
|
for(int ii=0; ii<2; ii++) {
|
||||||
hyperpoint center = hpxy(0,0);
|
int i = 0;
|
||||||
|
for(int d=0; d<m.o.sym; d++) {
|
||||||
for(int cid=0; cid<cor; cid++) {
|
hyperpoint center = hpxy(0,0);
|
||||||
hyperpoint nlcorner = get_corner_position(c, (d+cid+v+1) % cor, 3 / fsh.scale);
|
|
||||||
hyperpoint nrcorner = get_corner_position(c, (d+cid+v+2) % cor, 3 / fsh.scale);
|
for(int cid=0; cid<cor; cid++) {
|
||||||
|
hyperpoint nlcorner = get_corner_position(c, (d+cid+v+1) % cor, 3 / fsh.scale * (ii ? 1/SHADMUL : 1));
|
||||||
|
hyperpoint nrcorner = get_corner_position(c, (d+cid+v+2) % cor, 3 / fsh.scale * (ii ? 1/SHADMUL : 1));
|
||||||
|
|
||||||
|
hyperpoint nfar = nearcorner(c, (d+cid+v+1) % cor);
|
||||||
|
|
||||||
|
hyperpoint nlfar = farcorner(c, (d+cid+v+1) % cor, 0);
|
||||||
|
hyperpoint nrfar = farcorner(c, (d+cid+v+1) % cor, 1);
|
||||||
|
m.v[i].second[cid] = build_matrix(center, nlcorner, nrcorner);
|
||||||
|
m.v[i+1].second[cid] = build_matrix(nfar, nlcorner, nrcorner);
|
||||||
|
m.v[i+2].second[cid] = build_matrix(nfar, nlcorner, nlfar);
|
||||||
|
m.v[i+3].second[cid] = build_matrix(nfar, nrcorner, nrfar);
|
||||||
|
}
|
||||||
|
|
||||||
hyperpoint nfar = nearcorner(c, (d+cid+v+1) % cor);
|
i += 4;
|
||||||
|
|
||||||
hyperpoint nlfar = farcorner(c, (d+cid+v+1) % cor, 0);
|
|
||||||
hyperpoint nrfar = farcorner(c, (d+cid+v+1) % cor, 1);
|
|
||||||
m.v[i].second[cid] = build_matrix(center, nlcorner, nrcorner);
|
|
||||||
m.v[i+1].second[cid] = build_matrix(nfar, nlcorner, nrcorner);
|
|
||||||
m.v[i+2].second[cid] = build_matrix(nfar, nlcorner, nlfar);
|
|
||||||
m.v[i+3].second[cid] = build_matrix(nfar, nrcorner, nrfar);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
i += 4;
|
if(i != isize(m.v)) printf("warning: i=%d sm=%d\n", i, isize(m.v));
|
||||||
|
bshape2((ii?fsh.shadow:fsh.b)[id], fsh.prio, (fsh.shapeid2 && geosupport_graveyard() < 2) ? fsh.shapeid2 : siid?fsh.shapeid0:fsh.shapeid1, m);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(i != isize(m.v)) printf("warning: i=%d sm=%d\n", i, isize(m.v));
|
|
||||||
bshape2(fsh.b[id], fsh.prio, (fsh.shapeid2 && geosupport_graveyard() < 2) ? fsh.shapeid2 : siid?fsh.shapeid0:fsh.shapeid1, m);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user