1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-20 15:40:26 +00:00
This commit is contained in:
Zeno Rogue 2019-06-28 09:44:40 +02:00
parent 08145d5446
commit de05d11cbd
2 changed files with 22 additions and 15 deletions

View File

@ -320,8 +320,16 @@ void geometry_information::addtri(array<hyperpoint, 3> hs, int kind) {
}
}
void disable(hpcshape& sh) {
sh.s = sh.e = 0;
}
void geometry_information::make_armor_3d(hpcshape& sh, int kind) {
if(BADMODEL) {
disable(sh);
return;
}
auto body = get_shape(sh);
vector<vector<array<ld, 2> >> pts(2);
@ -374,8 +382,8 @@ void geometry_information::make_head_only() {
bshape(shPHeadOnly, shPHeadOnly.prio);
last->flags |= POLY_TRIANGLES;
for(int d=0; d<360; d+=30)
for(int u=-90; u<=90; u+=30) {
for(int d=0; d<360; d+=(BADMODEL ? 60 : 30))
for(int u=-90; u<=90; u+=(BADMODEL ? 90 : 30)) {
addpt(d, u);
addpt(d+30, u);
addpt(d, u+30);
@ -480,7 +488,7 @@ void geometry_information::make_skeletal(hpcshape& sh, ld push) {
void geometry_information::make_revolution(hpcshape& sh, int mx, ld push) {
auto body = get_shape(sh);
bshape(sh, PPR::MONSTER_BODY);
int step = (mx == 360 ? 24 : 10);
int step = (BADMODEL ? 60 : (mx == 360 ? 24 : 10));
for(int i=0; i<isize(body); i++) {
hyperpoint h0 = body[i];
hyperpoint h1 = body[(i+1) % isize(body)];
@ -543,11 +551,11 @@ void geometry_information::make_revolution_cut(hpcshape &sh, int each, ld push,
}
bshape(sh, PPR::MONSTER_BODY);
int step = 10;
int step = (BADMODEL ? 60 : 10);
for(int i=0; i<n; i++) {
for(int s=0; s<360; s+=step) {
auto& tbody = (s % each ? gbody : body);
auto& nbody = ((s+step) % each ? gbody : body);
auto& tbody = BADMODEL ? gbody : (s % each ? gbody : body);
auto& nbody = BADMODEL ? gbody : ((s+step) % each ? gbody : body);
int i1 = (i+1) % isize(body);
hyperpoint h0 = tbody[i];
hyperpoint h1 = tbody[i1];
@ -577,10 +585,6 @@ void geometry_information::make_revolution_cut(hpcshape &sh, int each, ld push,
}
}
void disable(hpcshape& sh) {
sh.s = sh.e = 0;
}
void geometry_information::clone_shape(hpcshape& sh, hpcshape& target) {
target = sh;
target.s = isize(hpc);
@ -667,14 +671,15 @@ void geometry_information::make_star(hpcshape& sh, ld rad) {
bshape(sh, sh.prio);
rad = sinh(rad);
sh.flags |= POLY_TRIANGLES | POLY_INTENSE;
for(int a=0; a<64; a++) {
ld z0 = (a-32)/32.;
ld z1 = (a-31)/32.;
int steps = (BADMODEL ? 8 : 64);
for(int a=0; a<steps; a++) {
ld z0 = (a-steps/2)*2.0/steps;
ld z1 = (a-steps/2-1)*2.0/steps;
ld r0 = sqrt(1 - z0*z0) * rad;
ld r1 = sqrt(1 - z1*z1) * rad;
z0 *= rad;
z1 *= rad;
for(int b=0; b<360; b+=15) {
for(int b=0; b<360; b+=(BADMODEL?60:15)) {
ld b0 = b * degree;
ld b1 = (b+15) * degree;
hpcsquare(

View File

@ -4334,7 +4334,9 @@ void initShape(int sg, int id);
extern int usershape_changes;
static const int WINGS = 4;
#define BADMODEL 0
static const int WINGS = (BADMODEL ? 1 : 4);
typedef array<hpcshape, WINGS+1> hpcshape_animated;