From 99aeb0418577ccc1548f333adad37c6d6737e461 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Tue, 18 Jun 2019 16:15:57 +0200 Subject: [PATCH] reduced the number of bird animation frames --- 3d-models.cpp | 6 +++--- graph.cpp | 5 +++-- hyper.h | 13 +++++++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/3d-models.cpp b/3d-models.cpp index 3f6e1402..b93688ea 100644 --- a/3d-models.cpp +++ b/3d-models.cpp @@ -588,11 +588,11 @@ void geometry_information::clone_shape(hpcshape& sh, hpcshape& target) { target.e = isize(hpc); } -void geometry_information::animate_bird(hpcshape& orig, hpcshape animated[30], ld body) { - for(int i=0; i<=15; i++) { +void geometry_information::animate_bird(hpcshape& orig, hpcshape_animated& animated, ld body) { + for(int i=0; i<=WINGS; i++) { auto& tgt = animated[i]; clone_shape(orig, tgt); - ld alpha = cos(12 * degree * i) * 30 * degree; + ld alpha = cos(180. * degree * i / WINGS) * 30 * degree; for(int i=tgt.s; i body) { ld off = hpc[i][1] > 0 ? body : -body; diff --git a/graph.cpp b/graph.cpp index bb88fbf8..2a30e656 100644 --- a/graph.cpp +++ b/graph.cpp @@ -1227,8 +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); - int ti = int(t * 30) % 30; - if(ti > 15) ti = 30 - ti; + const int WINGS2 = WINGS * 2; + int ti = int(t * WINGS2) % WINGS2; + if(ti > WINGS) ti = WINGS2 - ti; return ti; } diff --git a/hyper.h b/hyper.h index 5485d72e..dad56d38 100644 --- a/hyper.h +++ b/hyper.h @@ -4326,6 +4326,10 @@ void initShape(int sg, int id); extern int usershape_changes; +static const int WINGS = 4; + +typedef array hpcshape_animated; + struct geometry_information { /* basic geometry parameters */ @@ -4463,10 +4467,11 @@ hpcshape shPBodyOnly, shPBodyArm, shPBodyHand, shPHeadOnly, - shAnimatedEagle[16], shAnimatedTinyEagle[16], shAnimatedGadfly[16], shAnimatedHawk[16], shAnimatedButterfly[16], - shAnimatedGargoyle[16], shAnimatedGargoyle2[16], shAnimatedBat[16], shAnimatedBat2[16], - shDodeca; + + hpcshape_animated + shAnimatedEagle, shAnimatedTinyEagle, shAnimatedGadfly, shAnimatedHawk, shAnimatedButterfly, + shAnimatedGargoyle, shAnimatedGargoyle2, shAnimatedBat, shAnimatedBat2; vector shPlainWall3D, shWireframe3D, shWall3D, shMiniWall3D; @@ -4574,7 +4579,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[16], ld body); + void animate_bird(hpcshape& orig, hpcshape_animated& animated, 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);