diff --git a/3d-models.cpp b/3d-models.cpp index 39628f89..3f6e1402 100644 --- a/3d-models.cpp +++ b/3d-models.cpp @@ -589,10 +589,10 @@ void geometry_information::clone_shape(hpcshape& sh, hpcshape& target) { } void geometry_information::animate_bird(hpcshape& orig, hpcshape animated[30], ld body) { - for(int i=0; i<30; i++) { + for(int i=0; i<=15; i++) { auto& tgt = animated[i]; clone_shape(orig, tgt); - ld alpha = sin(12 * degree * i) * 30 * degree; + ld alpha = cos(12 * degree * i) * 30 * degree; for(int i=tgt.s; i body) { ld off = hpc[i][1] > 0 ? body : -body; @@ -990,6 +990,7 @@ void geometry_information::make_3d_models() { make_revolution_cut(shButterflyWing, 180, 0, 0.05*S); finishshape(); + DEBB(DF_POLY, ("animatebirds")); animate_bird(shEagle, shAnimatedEagle, 0.05*S); animate_bird(shTinyBird, shAnimatedTinyEagle, 0.05*S/2); @@ -1001,6 +1002,8 @@ void geometry_information::make_3d_models() { animate_bird(shBatWings, shAnimatedBat, 0.05*S); animate_bird(shBatBody, shAnimatedBat2, 0.05*S); + DEBB(DF_POLY, ("disablers")); + disable(shWolfRearLeg); disable(shWolfFrontLeg); disable(shDogRearLeg); diff --git a/graph.cpp b/graph.cpp index c5a3d483..bb88fbf8 100644 --- a/graph.cpp +++ b/graph.cpp @@ -1227,7 +1227,9 @@ void drawPlayer(eMonster m, cell *where, const transmatrix& V, color_t col, doub int wingphase(int period, int phase = 0) { ld t = fractick(period, phase); - return int(t * 30) % 30; + int ti = int(t * 30) % 30; + if(ti > 15) ti = 30 - ti; + return ti; } transmatrix wingmatrix(int period, int phase = 0) { diff --git a/hyper.h b/hyper.h index d9e0cad2..5485d72e 100644 --- a/hyper.h +++ b/hyper.h @@ -4463,8 +4463,8 @@ hpcshape shPBodyOnly, shPBodyArm, shPBodyHand, shPHeadOnly, - shAnimatedEagle[30], shAnimatedTinyEagle[30], shAnimatedGadfly[30], shAnimatedHawk[30], shAnimatedButterfly[30], - shAnimatedGargoyle[30], shAnimatedGargoyle2[30], shAnimatedBat[30], shAnimatedBat2[30], + shAnimatedEagle[16], shAnimatedTinyEagle[16], shAnimatedGadfly[16], shAnimatedHawk[16], shAnimatedButterfly[16], + shAnimatedGargoyle[16], shAnimatedGargoyle2[16], shAnimatedBat[16], shAnimatedBat2[16], shDodeca; @@ -4574,7 +4574,7 @@ hpcshape void make_revolution(hpcshape& sh, int mx = 180, ld push = 0); void make_revolution_cut(hpcshape &sh, int each = 180, ld push = 0, ld width = 99); void clone_shape(hpcshape& sh, hpcshape& target); - void animate_bird(hpcshape& orig, hpcshape animated[30], ld body); + void animate_bird(hpcshape& orig, hpcshape animated[16], ld body); void slimetriangle(hyperpoint a, hyperpoint b, hyperpoint c, ld rad, int lev); void balltriangle(hyperpoint a, hyperpoint b, hyperpoint c, ld rad, int lev); void make_ball(hpcshape& sh, ld rad, int lev);