From 739ff253ec06ffb33df027535c73c003510b713a Mon Sep 17 00:00:00 2001 From: Robin Gilh Date: Sat, 25 Apr 2020 15:20:37 +0200 Subject: [PATCH 01/19] Dragon work --- assets/common/npc_names.json | 14 + .../voxygen/voxel/dragon_center_manifest.ron | 46 ++ .../voxygen/voxel/dragon_lateral_manifest.ron | 70 +++ assets/voxygen/voxel/npc/dragon/wing_in_l.vox | Bin 2884 -> 0 bytes assets/voxygen/voxel/npc/dragon/wing_in_r.vox | Bin 2884 -> 0 bytes .../voxygen/voxel/npc/dragon/wing_out_l.vox | Bin 3544 -> 0 bytes .../voxygen/voxel/npc/dragon/wing_out_r.vox | Bin 3544 -> 0 bytes .../female}/chest_front.vox | Bin .../female}/chest_rear.vox | Bin .../{dragon => reddragon/female}/foot_bl.vox | Bin .../{dragon => reddragon/female}/foot_br.vox | Bin .../{dragon => reddragon/female}/foot_fl.vox | Bin .../{dragon => reddragon/female}/foot_fr.vox | Bin .../npc/{dragon => reddragon/female}/head.vox | Bin .../female}/tail_front.vox | Bin .../female}/tail_rear.vox | Bin .../voxel/npc/reddragon/female/wing_in_l.vox | Bin 0 -> 57352 bytes .../voxel/npc/reddragon/female/wing_in_r.vox | Bin 0 -> 57352 bytes .../voxel/npc/reddragon/female/wing_out_l.vox | Bin 0 -> 58012 bytes .../voxel/npc/reddragon/female/wing_out_r.vox | Bin 0 -> 58012 bytes .../voxel/npc/reddragon/male/chest_front.vox | Bin 0 -> 4556 bytes .../voxel/npc/reddragon/male/chest_rear.vox | Bin 0 -> 6080 bytes .../voxel/npc/reddragon/male/foot_bl.vox | Bin 0 -> 1408 bytes .../voxel/npc/reddragon/male/foot_br.vox | Bin 0 -> 1408 bytes .../voxel/npc/reddragon/male/foot_fl.vox | Bin 0 -> 1408 bytes .../voxel/npc/reddragon/male/foot_fr.vox | Bin 0 -> 1408 bytes .../voxygen/voxel/npc/reddragon/male/head.vox | Bin 0 -> 3040 bytes .../voxel/npc/reddragon/male/tail_front.vox | Bin 0 -> 1784 bytes .../voxel/npc/reddragon/male/tail_rear.vox | Bin 0 -> 1392 bytes .../voxel/npc/reddragon/male/wing_in_l.vox | Bin 0 -> 57352 bytes .../voxel/npc/reddragon/male/wing_in_r.vox | Bin 0 -> 57352 bytes .../voxel/npc/reddragon/male/wing_out_l.vox | Bin 0 -> 58012 bytes .../voxel/npc/reddragon/male/wing_out_r.vox | Bin 0 -> 58012 bytes common/src/comp/body.rs | 2 + common/src/comp/body/dragon.rs | 165 ++---- common/src/generation.rs | 3 + common/src/npc.rs | 13 +- voxygen/src/anim/dragon/mod.rs | 81 ++- voxygen/src/scene/figure/cache.rs | 95 +++- voxygen/src/scene/figure/load.rs | 477 ++++++++++++------ world/src/lib.rs | 2 +- 41 files changed, 662 insertions(+), 306 deletions(-) create mode 100644 assets/voxygen/voxel/dragon_center_manifest.ron create mode 100644 assets/voxygen/voxel/dragon_lateral_manifest.ron delete mode 100644 assets/voxygen/voxel/npc/dragon/wing_in_l.vox delete mode 100644 assets/voxygen/voxel/npc/dragon/wing_in_r.vox delete mode 100644 assets/voxygen/voxel/npc/dragon/wing_out_l.vox delete mode 100644 assets/voxygen/voxel/npc/dragon/wing_out_r.vox rename assets/voxygen/voxel/npc/{dragon => reddragon/female}/chest_front.vox (100%) rename assets/voxygen/voxel/npc/{dragon => reddragon/female}/chest_rear.vox (100%) rename assets/voxygen/voxel/npc/{dragon => reddragon/female}/foot_bl.vox (100%) rename assets/voxygen/voxel/npc/{dragon => reddragon/female}/foot_br.vox (100%) rename assets/voxygen/voxel/npc/{dragon => reddragon/female}/foot_fl.vox (100%) rename assets/voxygen/voxel/npc/{dragon => reddragon/female}/foot_fr.vox (100%) rename assets/voxygen/voxel/npc/{dragon => reddragon/female}/head.vox (100%) rename assets/voxygen/voxel/npc/{dragon => reddragon/female}/tail_front.vox (100%) rename assets/voxygen/voxel/npc/{dragon => reddragon/female}/tail_rear.vox (100%) create mode 100644 assets/voxygen/voxel/npc/reddragon/female/wing_in_l.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/wing_in_r.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/wing_out_l.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/wing_out_r.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/chest_front.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/chest_rear.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/head.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/tail_front.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/tail_rear.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/wing_in_l.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/wing_in_r.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/wing_out_l.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/wing_out_r.vox diff --git a/assets/common/npc_names.json b/assets/common/npc_names.json index bced2a7ad1..88b237ac4d 100644 --- a/assets/common/npc_names.json +++ b/assets/common/npc_names.json @@ -539,5 +539,19 @@ "generic": "Fungome" } } + }, + "dragon": { + "body": { + "keyword": "dragon", + "names": [ + "Smaug" + ] + }, + "species": { + "reddragon": { + "keyword": "reddragon", + "generic": "Reddragon" + } + } } } diff --git a/assets/voxygen/voxel/dragon_center_manifest.ron b/assets/voxygen/voxel/dragon_center_manifest.ron new file mode 100644 index 0000000000..a4f492c4e1 --- /dev/null +++ b/assets/voxygen/voxel/dragon_center_manifest.ron @@ -0,0 +1,46 @@ +({ + (Reddragon, Male): ( + head: ( + offset: (-7.0, -9.0, -5.5), + center: ("npc.reddragon.male.head"), + ), + chest_front: ( + offset: (-7.0, 4.5, 5.0), + center: ("npc.reddragon.male.chest_front"), + ), + chest_rear: ( + offset: (-7.0, -4.5, 5.0), + center: ("npc.reddragon.male.chest_rear"), + ), + tail_front: ( + offset: (-7.0, -4.5, -5.0), + center: ("npc.reddragon.male.tail_front"), + ), + tail_rear: ( + offset: (-7.0, -4.5, -5.0), + center: ("npc.reddragon.male.tail_rear"), + ) + ), + (Reddragon, Female): ( + head: ( + offset: (-7.0, -9.0, -5.5), + center: ("npc.reddragon.female.head"), + ), + chest_front: ( + offset: (-7.0, 4.5, 5.0), + center: ("npc.reddragon.female.chest_front"), + ), + chest_rear: ( + offset: (-7.0, -4.5, 5.0), + center: ("npc.reddragon.female.chest_rear"), + ), + tail_front: ( + offset: (-7.0, -4.5, -5.0), + center: ("npc.reddragon.female.tail_front"), + ), + tail_rear: ( + offset: (-7.0, -4.5, -5.0), + center: ("npc.reddragon.female.tail_rear"), + ) + ), +}) diff --git a/assets/voxygen/voxel/dragon_lateral_manifest.ron b/assets/voxygen/voxel/dragon_lateral_manifest.ron new file mode 100644 index 0000000000..d9e64fb684 --- /dev/null +++ b/assets/voxygen/voxel/dragon_lateral_manifest.ron @@ -0,0 +1,70 @@ +({ + (Reddragon, Male): ( + wing_in_l: ( + offset: (20.0, 20.0, 5.0), + lateral: ("npc.reddragon.male.wing_in_l"), + ), + wing_in_r: ( + offset: (20.0, 20.0, 5.0), + lateral: ("npc.reddragon.male.wing_in_r"), + ), + wing_out_l: ( + offset: (20.0, 20.0, 5.0), + lateral: ("npc.reddragon.male.wing_out_l"), + ), + wing_out_r: ( + offset: (20.0, 20.0, 5.0), + lateral: ("npc.reddragon.male.wing_out_r"), + ), + foot_fl: ( + offset: (-2.5, -4.0, -1.5), + lateral: ("npc.reddragon.male.foot_fl"), + ), + foot_fr: ( + offset: (-2.5, -4.0, -1.5), + lateral: ("npc.reddragon.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.0, -3.0), + lateral: ("npc.reddragon.male.foot_bl"), + ), + foot_br: ( + offset: (-2.5, -4.0, -3.0), + lateral: ("npc.reddragon.male.foot_br"), + ) + ), + (Reddragon, Female): ( + wing_in_l: ( + offset: (20.0, 20.0, 5.0), + lateral: ("npc.reddragon.female.wing_in_l"), + ), + wing_in_r: ( + offset: (20.0, 20.0, 5.0), + lateral: ("npc.reddragon.female.wing_in_r"), + ), + wing_out_l: ( + offset: (20.0, 20.0, 5.0), + lateral: ("npc.reddragon.female.wing_out_l"), + ), + wing_out_r: ( + offset: (20.0, 20.0, 5.0), + lateral: ("npc.reddragon.female.wing_out_r"), + ), + foot_fl: ( + offset: (-2.5, -4.0, -1.5), + lateral: ("npc.reddragon.female.foot_fl"), + ), + foot_fr: ( + offset: (-2.5, -4.0, -1.5), + lateral: ("npc.reddragon.female.foot_fr"), + ), + foot_bl: ( + offset: (-2.5, -4.0, -3.0), + lateral: ("npc.reddragon.female.foot_bl"), + ), + foot_br: ( + offset: (-2.5, -4.0, -3.0), + lateral: ("npc.reddragon.female.foot_br"), + ) + ), +}) \ No newline at end of file diff --git a/assets/voxygen/voxel/npc/dragon/wing_in_l.vox b/assets/voxygen/voxel/npc/dragon/wing_in_l.vox deleted file mode 100644 index 3d7e37036e36fbb2335d7023cabf78aaa3147420..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2884 zcmchYZD^L)8ON_^lIP`qe|_?zNsNgm+SS+kGHn;Du8meR>+0IfO1rhJnUp>Rkyb*7 zbt`kN&zuvj(9XFbZj`!KqHOGglOm;1inuZcLrNKAU-w~*ef#fsBHM?;*tb3K<2vWu z_w~R2*E#1-_DwuKaK_AbZ5iK9u$7+K-to!pzMJstfl+9K$Df!Sw+aJ(*I8)mwu!bL zo8YC1wq7FCQ)||{t=X7ohZ=2msNQAGF2-GqyUY%CL!;d$8XeFH6{tcD>fnJ70fZ1i z3<;!=K@J6!(10$$O9LMbJTw--Lg<5j7=T4E2#a9|hG7XTg%O*mEyVMDn<(*C;;nGt zFL&TEbKo;|;5BjJH+JATa^O33;5~5Q-*?c1=b(>b5&J_gH3$7v9rRRj&{wB}-ikqM zcFFBX$xdfJ4t5^cVFl5bq$XfYgYi5hBm7$pqS}Vmv zvdCI7F=igI9`QV69I_VhEEuq+KVU7t-(wY)xj_gSk(tTC^$Ugdd(afS5?``5Y9 zTAd5zK&zlufnGt~0?h&s1-b=( z3bYHn6#*LfEPNuK3y+BZqE4?)ug3m3ZE6k{daF52YS!8BoSHd%nO8aEf-^25hX!QO1@xCuE2F=R zS~avY=tM80Rz`mrwK8he-JJgF?j8E8^M1x&W}H>Vex}q;$xG=crJt03s^q5BsFGXb z{ggAWv7T}Vs_s4RLmC2pQ}!^WpOk)5_AsTNls!zTk)WNRosg5DouE;1bF?eYH$7DG zRb{QpJc+E8P&2`Qf`uOl=gyhdn5>~)042+au35t^OuIhs}X z9L)&L2))SZvA-eb7jk|fK0`D^e1_zNXolp3XohHpXohHpXomD3q8Z{dL@z`yL@z)i zz+-?$fX@JpfIAVO5pX90Gy*gOGy*gO^a8X3bOLk&bbK^?G<-CCG<-CCeEDej`0~;4 z`L2D=+b7>A-zVQE-y_!}*CW>>*CV%+T#sCjT#wowbv^Eg$NligtMh&*I(2d@Xw}Kh zxi=XeQ^?(U^PQyB%^*Q5=KD!qjv~|>UV1wzA_IAC&`ku8tn%X|7BYQ@4=GoPnd2GGTJhxRhzW+7- z_2QJ4FD|utb-#9gX++QNTd#vVOvj!yoj+u{{zKEcz8;M)8`A!D_iB3EM(tZxYHDq- zPCPWM*#j%Iee)_!e0ifLzp_OKpW3Y>FHGv>_YP|I(yO}t{#%-TbH8r<;@k2(PhDA} zfq?<78XeTSdza{ot4DS6y9;#rr-SToxOX8FZXbF`ug;p;nP~VqN!(IdsSTr8v6KG z!@4%vtyApP=lB1CO{eCxp4j`5rk|5uI(tdSem<+#mG^b-ceiz4^SB;(<-B(Op5ScmiIg;7awSA&c$6zr{>}p+BPY9YN6d(Pcb7IkY)+th!a{rjEIMf(>y83_mg diff --git a/assets/voxygen/voxel/npc/dragon/wing_in_r.vox b/assets/voxygen/voxel/npc/dragon/wing_in_r.vox deleted file mode 100644 index 249db770c865e4474384a467c403d605b9da3a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2884 zcmchYTZmQn6~@=>+u3LDJ?B1`Gov%(IHNO~#%sJ(W5=jXMx(pN#wJrENt@72C1e;x z5*bp=w4pZf)Y?HKB(=7PEg?3MQCj+7B}fQ_AU2djkq}DhYadGK+t=TJLi-RXed~db zwJ-nmecxK^fA;@i{@B1-Guyj;d>_G9r)CGnCw67-hF=dD1#RH5$0x?Ezy-e>Jm~7S zysK$>H)!?}L9>SlI=U?HbYM+Kr{xWY4$I3G%S#Sr%iA4FmS+y_mZuJx<%vUTdC?)U zJa#BrUT}ylj~oh?hoHS-Q(3=FwReCz=ma&;1*)JMR6x^O?LDBE>qTHO=(DL3`6Y5o z3;c6zrM(BlF#sFGV?9u>F>%(Q~9s>{Vw)%C||FoP=33uqPGdUOitL`8tV z2)#1zqm+42Uz8Eyi0~T05#cT3zD{1m`-)rR)>D5(Emij%y@bwFRE2A~HKJqTlF zGYE?C;yq08iGE0J6>_VN)Aa<-7@m+?Luw7t57DpjK19C)LU+x63R%lv?`X(g3ds%G zOCd7|sW+s~kUB%SLv(_IwSuL@7+szR_-L>uz(+uj1L_XwaX{Sxx&b{7&<&_NKr>+O z0lEQm56}&$J3uqQYk+2eX5jc7H<|&Oeq=2lT^~)KKKu08r(U1heCqPy_Tly6^x^a2 z^5OB}@LfJUKAb-MK3YDyJ|2Ah_;~a2>EqeQzt0SP`s-7pKLm!E72lV7!}6L#oo^5S zmkxM3*dqz%ZaU;Sl?TK1KMA(DO$4#w-WR_|DL$ zgngUP`-B-3@m9oRk(m|oU1V-WR}-~V-96rFXch5R!-F>r&k$G&2Eh_A0Qx~6SPT{c z&IXTj!Q-s(I1@b129GnrV`d)n^6=r+KoxL4c$^I$=Yq$X;Bg*!oCO}|fX5l&@%{Js z_IrHyJieJ8-^?nx6$kRmpz3PDXU#==RCM12>WHZ)X0|c)#mqKle-^2u$Q~@xgCgr= zX3g<-w5<(zcC<{s$F=9K;Vd(UM;?4&y9EnJp>5ierh0m#gcLY3KypXH8pgnCz?QACF~o zCE3-6PA;$N^6CzKe1EUBdx_@EbRGNw`~}RtV7l^S)6L7K58mZ|%ye;=>DP~#?taTO z!Tk#dO{bsc`7zUuQPbf~riX(-uk(EW`W{X08r1RqBRc!cTFpGVQD>jsp_||Tn*Mre zQY)8sYU|p5?fKG(o;kQtM|PWLpDxT+yk?^}Rav z;IQTouhOoqYm|R^vnIZ>T}PhWr{m90==ArFX#Vmmy7S(fnt$VvZvNuiO4C%`^{NI2 z2DD~$P#f-DrZ27?)#>jp(v_bM>W?3+(A|$#>J2pKFPT34t?AFdHyxiG(d)D8bnERM z`rDrlX!_NPPW`f>cW*a!SN;FB{$o4s|5E?Db?fw_jTf|P%|&fF`Ldd`O}+m!)5l*o zy)`nT(a}-eSG!*iKXg?#dt4pU9lCz*vl+hB!`|uZ(|3mFw0hN)o__Tebsz51N52}@ z^@*m=(5uh)f7_Nb3tW#M_)yc&N-v(ftl6K>t9A7~o&Vh(-8Xeo+g`q)JwLgj1Ml3? z*w~mpHOXS2f5^XM`s6pC`TK$H-GcQLcHhvZPm+7t!tb7&%1xG`CPPr0YO3i!~g&Q diff --git a/assets/voxygen/voxel/npc/dragon/wing_out_l.vox b/assets/voxygen/voxel/npc/dragon/wing_out_l.vox deleted file mode 100644 index f8b1875b49cc4290ca66945945c8dc09541a5c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3544 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 diff --git a/assets/voxygen/voxel/npc/dragon/chest_front.vox b/assets/voxygen/voxel/npc/reddragon/female/chest_front.vox similarity index 100% rename from assets/voxygen/voxel/npc/dragon/chest_front.vox rename to assets/voxygen/voxel/npc/reddragon/female/chest_front.vox diff --git a/assets/voxygen/voxel/npc/dragon/chest_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/chest_rear.vox similarity index 100% rename from assets/voxygen/voxel/npc/dragon/chest_rear.vox rename to assets/voxygen/voxel/npc/reddragon/female/chest_rear.vox diff --git a/assets/voxygen/voxel/npc/dragon/foot_bl.vox b/assets/voxygen/voxel/npc/reddragon/female/foot_bl.vox similarity index 100% rename from assets/voxygen/voxel/npc/dragon/foot_bl.vox rename to assets/voxygen/voxel/npc/reddragon/female/foot_bl.vox diff --git a/assets/voxygen/voxel/npc/dragon/foot_br.vox b/assets/voxygen/voxel/npc/reddragon/female/foot_br.vox similarity index 100% rename from assets/voxygen/voxel/npc/dragon/foot_br.vox rename to assets/voxygen/voxel/npc/reddragon/female/foot_br.vox diff --git a/assets/voxygen/voxel/npc/dragon/foot_fl.vox b/assets/voxygen/voxel/npc/reddragon/female/foot_fl.vox similarity index 100% rename from assets/voxygen/voxel/npc/dragon/foot_fl.vox rename to assets/voxygen/voxel/npc/reddragon/female/foot_fl.vox diff --git a/assets/voxygen/voxel/npc/dragon/foot_fr.vox b/assets/voxygen/voxel/npc/reddragon/female/foot_fr.vox similarity index 100% rename from assets/voxygen/voxel/npc/dragon/foot_fr.vox rename to assets/voxygen/voxel/npc/reddragon/female/foot_fr.vox diff --git a/assets/voxygen/voxel/npc/dragon/head.vox b/assets/voxygen/voxel/npc/reddragon/female/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/dragon/head.vox rename to assets/voxygen/voxel/npc/reddragon/female/head.vox diff --git a/assets/voxygen/voxel/npc/dragon/tail_front.vox b/assets/voxygen/voxel/npc/reddragon/female/tail_front.vox similarity index 100% rename from assets/voxygen/voxel/npc/dragon/tail_front.vox rename to assets/voxygen/voxel/npc/reddragon/female/tail_front.vox diff --git a/assets/voxygen/voxel/npc/dragon/tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/tail_rear.vox similarity index 100% rename from assets/voxygen/voxel/npc/dragon/tail_rear.vox rename to assets/voxygen/voxel/npc/reddragon/female/tail_rear.vox diff --git a/assets/voxygen/voxel/npc/reddragon/female/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/female/wing_in_l.vox new file mode 100644 index 0000000000000000000000000000000000000000..4248691c504188886c549aeeb41f1a43f1127a17 GIT binary patch literal 57352 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 M;Kq0=#T_F51y29oPyhe` literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/wing_in_r.vox b/assets/voxygen/voxel/npc/reddragon/female/wing_in_r.vox new file mode 100644 index 0000000000000000000000000000000000000000..10a75b0e8faa0744eab0d325bcc066bad64c4b88 GIT binary patch literal 57352 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 bAlK{U98G5@ZJUmEemRZ%O2fmpLdTB*Q!X;{ literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/chest_front.vox b/assets/voxygen/voxel/npc/reddragon/male/chest_front.vox new file mode 100644 index 0000000000000000000000000000000000000000..26f3dc5dc1bbce39f181fb2db9a2544e877bbe19 GIT binary patch literal 4556 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 DY)G-% literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/chest_rear.vox b/assets/voxygen/voxel/npc/reddragon/male/chest_rear.vox new file mode 100644 index 0000000000000000000000000000000000000000..84114c625a81ce45c6e0ef66a8228bb065cfa8c3 GIT binary patch literal 6080 zcmc(jZRp-r8OP7_xz4%o*>rPr)8?8^_h9Or?xCs8hoy5)o6Dt3MN7$lLmVSS$Dcx1 z(o$=!F%`6BAuCK%*~T3qHbg`aktGp?iA40a7ZJU?`dmM$7ryCbfB0~nbAIPs=X7&^fpHij6m5+^^<3w{_$84P&eDHv>)rtKV|#_KnlCDDd~^5L}zYERz_)%Oq1CCBEl6$%(ROOn?XpGSF`nfH5QM!KF6bPg z4k#$5{5B?%+i>$x9%=~CzEeTD@)`tEO+DGV4 z=!<9><9m#6htG(vIOt0Fql~UhpG^D6XU4*?M%wtE`98+yn3#<5n_Xv4^bwn}&B0m{ zYw0dBKV|eMG$)I@Pxu3i3!0N@VU98J95c_Dc#fGXF?T{!V!kxQDNGXclrhX8CNs=e z#1{~gLVb+yaRB^}iT#*4y2X+hkBCdPF^+j>uutGB>q29pJaS>uy{EsYpG*YOFpup; zU>?X|Izwa*=C$=F%FI6s_6>{AvH3-ZtE@B8PM;BaM#buU8`>Fbw%A!VZIwAIa}rM| zP(g-zrfz+(WAqe!);P)IHmQ)t=!L{Lfiz}32;?#2V8lL`5pf$4KNzFM!Pw@eo<@yt zjc@pbQ4M@&E$DNc6*rufGVz>C;d>epL#QAS@tvU3uhPHLuM+!gZ6MGfa6SU(Byes5 z@e7=z!2ZM$=LRBsABj=qEJR`*IUA9^%X}+PL7+hz(azb=*a8*A%AI*T>x2ra+u1`O zx)QpQ>7uQIKw)@KXz}VQC7cvxs_JZHSw}M}xtwHK&gUEU#>#dXp zQX|d~S$|B9HR6MM1%YPY8hRi@1%YPuQDU8mbtZgMh6#P$WWkyK!XlZ@DCXZR1j!ZXMd6~Hx#HKkZe7CYqo#3=hQuC$@2zy?tLBVXyndE z=O&(eE3^e{gapm{a1Jx&3Sw>Gx!*0gNv9mm2G4o+v&AxtE?Z)lD1kK%;LkYir<6N6N|G2PhC2 zSFr*OIuzlIN~gbRMKf!O^j4|lcN9p)|<%7t>FoGE9@ zk+nrzH?a|j!g~Xqn1#yOf&>`~R1j#;A=5Wj_8%)YmU6=e;m%Vo_6@|^A#k1}-x3Hk zh`d9QGZyWQ;;eVtf>4G8neUnJneW-&DcTxz2zC}&Phu^JH6`{bv8KeD;&4uQbFmEy zXD@ITBP7UBpn^byPCuz5)=n%SL56O9&>`p$bO<^s?E=ldL%@H81Q{x8_2hs7A|&u= z_2~3y6zUDSwUZ}i+ao)BoW;T&t^BT6e!naCvQRFR3*}5XQ_hryw?N1xgnJwCQSEJ@ zUa42kS){F4oWQ>@)1FU3_j69y_zP@VjFyNMrkY5 z`{0kWN9;qkD))xdCbnxWQ z0U{*GP@sZ9gAS>XcR~e$P}omMkfDM=gASgYJV1m79XvUDfCK^^Jh^&=1Q{v_G_&M{ zLY^q(i;cXmk^eRFz(zjU$Q6bBRmf?D+*ZhOgT>NzWH2gGtG{#rXS!aB={F(8c@!d4g-t3!!uRi!EiGLvGf!KF+ zb$mwNn8;fb*~7@*MfNbVmmR&G`8;|(^96gWAwh-$6$Bb|@Z1+~_l4Y7Sck9bb9v_u|i&Xqna{G#}O1@w5SGa=(U2)iJ`mz57GNhr*?+1PhelxxbR1hmO zCi1P>yy&Usi#yRN7v6n&x{93rX5z z>&hVPd4&QQl9h>RvF~%EfX~>rXuob?$VdpFwV&u-VGw_?4W#lH*s(h1@?6IX>fty1jX} zxAf(V6wXUwuM+Xiw)eJoW-X?+-{4uRCtjX-d1CL`n>xgY7!lWspUR%r;qLJc;9uBt zA@;(aSKF)M>{y-yocX}n58MIIz3|)-&wY_02jjf+dmZ`R7JggA-f!M&;Vl<_dxW>U z@te^2ZD^eNX1{6n{_>ti-qpzaD&#tmw>$E7N8av8-Vn(fB6&mLd!S#Se_&i-p1^#b z`{&W+(d6vS#7BV)4IK>~4IK>~4IK>~9SxoNll38g63d~WK!ya-`PU->^}`M*mtudqR6cdqR6cd!SADF65&^Um>>@ z#tFG)pkJVmXAK_x9_^0UI^yln?}&F}o=%@m--e%tk7na(uTUU^&_|e4=qG3po0mMi z@lG~;R>oG#i5XwfQ1MaG(1=fCFB@m9v7eo|bmG#9OD8UZCLykZKC$0+viDab=v6H>DTGk>DSQI(9}#jni`tg5GUe=hJ==6n&?;QSLs*jSLs*Lp3t1JnR=$Z zP%rc^j4O;Utf4S>W?W``#!o;`mRKqHQwGth}+C!XEv){fSO)`r%G)@E8+Q=?C# zZ^2K&U%_v&d6~ahEX^0O?8K}Svuyg%lhKpWlhKnc7R0jKedX?X%eS}_H(hh(6^=mJ z-E9zVWW?eE2nNA-qH7wTQNuhZ!VHtEs58};b^ zyY%RjJ9YKZ`*r5}IXdsog}U%t%XR6YwdyuxbvwGc=T1@g<{X{5+3DQ-oSw1I>3J_Z zl^srJ>~T7a`kWV>Uc7mv*WEW$w?8~fzklr0diAu^EeD)_^(Chdy~o%s^L4@0B0YP0 znXWprUQgdOTNgbsUza_9rmlGFT%CKH)3YDO_d%zZzV6h0iTQVnx&tSvdv&(%J@;fi zeBr73{$;1DUiTS2;G7Ft3ib6)pWEPca+A{!zV388^#`{( z-FG+b4>-MQsna{wIDO!1r%%zo<>L7|wPBI&-m*jw-gA*o-@IB6-g}iE|K6ANZ_iKZ z^0VgXr5By4n?Aop@7cCmcU}b1IU*&Lm^ z_;h{Zn#FqLjtg|dr7QHtFRaz=U%Wzh+(l{v6=eBFK6p3@6FQ>^vwVJ`d6-8sXtnMNH19NoUYsZ zh|b$HPv82P)AzsP^o1o$bm`KiddVr5>GjvXs&3D2J$2WqdhE%M_wf3ZbislJ`t8LB z^uh~v>fMh$s;AvCSKs~hVm-Efp6(}BpN#+I>-G=6Zr%Eh?z&g?p(hXPo}VAlAH4d8 zKK;8Bddbecdif)Vbkk2>*R3y~(Dm!r>qk!23FtpHo^bl%Z$8%dA?NFVedh}5^7&V) z*~|UT!EQcxYOtU6>-6NCcMavmQ;!dJ+c{4Uc5Rp*tc|ljvunTh@L86 OPyP4XfBJmFx_<+=E7ns0 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/foot_bl.vox b/assets/voxygen/voxel/npc/reddragon/male/foot_bl.vox new file mode 100644 index 0000000000000000000000000000000000000000..fe7d64b1d7c737a7f7e23847c19b1b9c35fca185 GIT binary patch literal 1408 zcmchWZA@EL7{{M;@9m4j7Z|0iFrjuZTA1Ud45%^ zjABqDijgsKY*g4Q88V0raV!{OFBpw;8hh2KL^M6e>orvsCXrDk1|_0uimEU|V&b)o zVrEQAL@|pY)gU6OQE(5zHCc@!BBVF5s$4^&ajbEUA*r0xWGpDA5XCg95=F!`l~E{0 z5{?xk@$)eT;vU33i1)H*6h<&4y~3UmjHa?@6p5LJl*edDa7@x0HLj!aIdE*E%)z~T z+IYV{nwpvrkH_&~lCbZ}Dz;hvz;6}{ve^LSxaLozyQ>Drk2WJd+=cX*AL+^CNKX%< zF&#m!*9zM)JM3>&!8Pjv`3#`&CeYkw(5e-=0Yc$v!qy4Gj_U+-nD9h`kk8(Fl~5nZ zLFegQ1V{66Vfkrv#0fn~!mEpfvunJ!rwAn>2g>4=Xh?Zc9JRnPUWCf|QqjhH&s zj_i9c9b#WsYGbz>wF#KgN{q!!L&{pJ;gb>c9`TE3t963YWQOYMyZC8^TZD5k^8zTuQjHdaWJ5{@9D? z#axVkX~B&(8#Yk-ukSzHLI2D9yWMVl)HsXk+Br0jor5i5!>!K<_g*1fbvog4xv*>V zZtUN;1WJscAX4$eH@2I4t1aFroQBysL6Bo~8%RnLSepQa;pbe9JR*#;4YxAUD z>qze%L{9-{rx%d;JcSRIZer%!b?h1(L+iO&bbYdd-s|h|dcAl+0GS#54t1Sy|Lcd( zcb~tn|C;BY5LHEcAhlHt>KdpB>H4f_M&6;Q9+!vS*R^l^jIJIfuB+T9hg8pNqq^>x TSwsF)Hn>ITpSi!+Jfid`DDyW7 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/foot_br.vox b/assets/voxygen/voxel/npc/reddragon/male/foot_br.vox new file mode 100644 index 0000000000000000000000000000000000000000..09d30e06b4ae82db9744a0ece7ae8a4868db8a0c GIT binary patch literal 1408 zcmc(eUrbw79LIn6+dib7V;NCqQ zd>8s?X=y<+nZ$!h!oDl3*k=9{znjg-=Y!D3wLliVJ#{#Kv=zyb9%RP?$W9(dc6tcS z*%%6a7FdtjVSlRzu30b0uY#hRKy#Zxs}>Xn38kkATPFxRt`kgA!V@V%F?-8ZLSwK1 z-KPr?9xcZE%TJ>#N$5)xUR@-dTjRBTHk3yks7$)il<}b~ZiZvr2KRgg>Tgw}bbwGf z%DtxuZ7T$NiT6*KKr;aq}!{>*vrqb{^K06}LVo+ zXjpZTO%##9NH!4-L9+}uQb>&-uvy5mWLXF<#>9|iF~+ZcFvf3xpVO%ymKeWzl3)JM z|2gM8&%Ni|8$58>K1oDft$}V9dQ(T#8wmLymxc#h+VqzmJ`xHv3z;R7i&dSPQT1v@ zFp5r%DtgAiv0h=XWJo76#IazAy$dSF(j39nv4a-6{5H%RicQvrZNh} zNy4$BCw@LgN8E$B2k~C^jKTB$G)z7$@wzvWjh{Kk%E$glx78a$E~6p}Vsh$B#B4In;@zkpPy)k7H?S z0QE~zMFtqA)aNc1={d9oJCL-m+E z)rRbQFXNZFFe;NH-w+QBP7C3TuOPcdaVt={@9Dy z#e9r@X~K;)3pP;tukSz9PXEjMdpsU|R6m2NnprfBoP#B0!L82-_g*1fbvog4xv*>V zZtUN;2udYT6f45=)WbWJcVx5K@OJqGs;dTY;^KL1=`Y6Jugb9;vS6Ig>e2IWX&TSf zI?{Uwu~Wd=sd=P6Pve8do0$G~9lHib&~k1Dou90r_xd_~J|7+sKt=|?LtQ7_|N7zc z-RJM?zvlTTM5T2Pq_&8GoOV@&bNZ}kLcyU}E-nwhpVQ#>>6|ty$(+i4a!74_Z8)bp Urq@vTlm#9U{%7v*HIFF$3G7HW%>V!Z literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/foot_fr.vox b/assets/voxygen/voxel/npc/reddragon/male/foot_fr.vox new file mode 100644 index 0000000000000000000000000000000000000000..d2988d546cd9383e9948a8d6e24ee1e41e101455 GIT binary patch literal 1408 zcmc(eUrbw79LIn6+~QSO#?~tW1WhTV-U^Ew0w3q$6Z& z8V##1vWX%#Fp^C~L(nY4jkKi32W%FyELj$Ui!m`|S&Z@32V;Eu`n#R_uooXa$tU06 z_ji8hcg{Wc-r#}5wkaYCbohH&=q;6~-yiZlp&1@*Y17|&_(;g#CTUqBtyri^R_K&0 z$&{5CQ9x&ef#FzY6fG|}&&UiZ>>0txjG}p!JtJ%AIA$bG^;|DY!z5@}(coAJM&g(e zM8l-Tij)^KIuTWLf@7XzPmIK#H1d0JPp%PqnfH~WLY4UpGOuH}$HBdO zI`}T~qot(3Gw z@x4_@57xrhR*wTOdJuZ41Ce9Bh(|-1crSwV!Ue3~x{CCb0pz}X6NQC^*iupqo6UxL zryWf@x8wN+CnnzAip9_D`0bq#LW(JMr63{fJ#E z!uVH4+*~tb0~P=K^Sj+{eB3;X+WI-Pj-7`&X~yl(3HM(mTyr?!bULwX^KR_lw**SY zQ5q}7^7Ny3xL;9VwOa8`RSI>rLpX8i0=5j6;ojF(SPq#n$#?bm{kOMH=6fCKzl+!@ z;N0{Al3%3p;nFS4e7BBWLt|(^KZ~AESI~cB9bT^&4+$UxgFhgz6CQl?=zI_O`}(hW z{s~cI*#k}6rJ=kAs>6AGPHIK*p;$hy3V)E-;P#okdPE|x+B$7$>Un)MuRCVeQ1Y}H OZYlil+&?vsDg6b}LN;Rn literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/head.vox b/assets/voxygen/voxel/npc/reddragon/male/head.vox new file mode 100644 index 0000000000000000000000000000000000000000..0de9789f15d4495178dca869b50b40272cc46005 GIT binary patch literal 3040 zcmc(gTZ~m#8OPUs?{gcV4A6lJBZb01E!T1pibDb0fkLHN>^V}>Y8yKe7%~{rl8J_n zHey8)36zA2Xb767*peA?j3G!G(lj9r!N!mn(lkbW^}!h5{{Ge>`p_32J;^WM`mXC+ z-`;zjolic~d(s%Qb^X9Lgt<{OX2(ElQ#~vEDliEqz%$L(z?p&tzrR{ztaWW0AwdD9 zYbWFP6%GOiT+Oyq6*|(jT{VNR>aGOV5$S8L9l+N-c7MfJ z!vS9l`260;I%1FL0U5G%rX4&4h>)N#?Fc^05*>V|TC#ru$O@EY+oj^ROXY1Bi`yxK zp3p;u9xCin1!U~3*{>4lEzv`27p3Pck$M4qyU4a`Cbn&0P7ZvQ7RkApW5O1Z0SeXy z_5y#AeatrIxD5G;nHL4V65ZrAF#8zLc@_>mG1tV56Z;ey@`{{?KTy|`7m?8tgG`2c zl?;A-9=pr6$Z_OGY>qg`z7`_S!V+ug!PBG5(0AY&I{Nfrspsg)QOjq^9*JC+pEQe!fp;(LOJK2C zY!;hCFUrW=AVCBR0UY=&spHuLyTj&@0W52a-Qu^|M-89jd>V4(J8IbiUy04+HL#Zt z=6TKyROSvY!IsCz03gM*mxmFN%>@#v9UpY!R{Q!mzt$u+1Ka{ZhW${~;6 z;vW9a(D{dNuTC=*iHBp%0UL;GQnHvn}6(<^HhwPUgP0 z*jN;>Yao@R$yW+UlV*an|z#4n%Kun$Q1tR!5?;}J=;K0{8A4KqV zzDY=(_`GKSoZlcHLW5lJ9dcdn*E;_>#CZq}?g9u6^epSlwNbX8dhF5lCfxm>UbSkK zMn*>T$#J8{-@LB-yZ@zsba(68wXMp(w+F_xZOdXk|Lhu#9NePuBLf;g{=CLd?bpij zAx-R`s-EY1)%)#*>N~qyW>b{eQw0ZADwGL0#4=#U38%K<`pD_B`MWa`4lDmDnW)9BQoRI}uG1jjc!`+&Fbh;Lt zpQR=5&(pMBMsp5R`=rs@t48L_?0=|~IngC^sar?pP11$MQ}odzGo;O*)d^#C8U6@= zffFwqUHqxhwF^ccyo=s%bZ(PT`zfP4-!N*Szr54v*bCSX8g1w^+P%u?;6|f2uy0>J zU4xru>(KW3I{D&KjXb?lCtup2Yv2Eh{&s#)3-6z*wM%Dd%NOSB#hoj)XS31hvqopX zWpwq&Mk{7c*T8}~+O^^#4R2hnoeQRFaQO@!eQd7Ab}!PVwM+Em7gwwGrS;nL+%_E= zYU$Yb_Gs+FYr6H`n;JW_OV@t&P1R~O-8*@bdV71dq;IxXJoJD*zqC)szI&f8{(QD> zf3QGzK3u3X>^XMc=*I7i{`?1{Lxc16#^^F#e|v-e{-+%petn{j{<>T5-t5sG&HBHe zf7!BS`pL?(TD0Vx)*N|NJ)=E({})Cdebwl#`SaD+*QbZ?c|=baA-Mf35KK#vGU2gU0IJ5fn{MW5H-l^5xaYMr|Nw1u` zpwVBB=|`8|)9K&e(!=|YXx*!4wdH45wd0*z>hJH@Cq^i zzCtaW{;0BCXZLsH)_H>+`8m5rlb#;#tmh8?up@UqaJnN`yOEB}dHI*+>aQQ}$Oli~ T)Z__0T4o3T>-$g4r=GH&!j5Vh0%!ZVU zlpa;0pp+vGO6kPEp4ggL?-VUA61liNm5Tmfw}k5I;1gxhfHxY^6C0#-ErXlh5Z zU$pV5PhZp5^fhagsWUZozrP=Ga^(SLBM^BDZ2`W0@CA9%JS-an7K57TQ?OLN4S& zt}JR;thdbGs7%woMoEz9V}FeirjoJ*UT zVyPKpW}_C@v{`d}=9627yG<_R#_~=y@5bidY_kvU$ELQ;9=4g4XRdk9n&)mioNG`w4sVkrHN~ zc3}UW-SuKS&sVCdst^u`@nB4__sS}^CjE)ulajEq(hBok^Dm;Ur5HyK*C5>Ag2iD! z7RQcaak3Yci>DCpOF`O^EM%Q6gm=0c(&U2l#6o5^K~_@`-zrEwDcCY9*nVB$?h!mb zBuJ#6a#c{?8i(eS@dyqk;@zdE&=?l9j|*Oz7o1sRZMz2GQEjPZU!gICa9CD>=%xWssSxd)-9Yz(yL zW8!!z!UrlbaiRe$@4SRxXG195nu6NWOtd_gkK>({=xG)V9TrT#Ay|H2P?6z*zaR%) z6+6(^SdGqt6okstF|sEYk?tZi)s`Ued^LhE)T8G}8wO4VG5U57B6H`le)9?KJ$n9iHDiv}p^iJ~I{}=ToWszk5xlo>6I0)=V`uL$>dsB0<)dYETwjOJ z=feX5#7*E2=yk#UuOH5LpYQ9x*7+Br(6bxH)~Q~{w&sN#`;4kV!ht@A=Y}piwsYH* jW2>#OV@;j;jIDlk(6QU6){yvQ8p>4YpS8bp94CoP!)VY9Mc(gTVg#hNzxNCEnS|Nld;B>o!O9b zkx@hpWYdTmqvj-Kz-oOU=9qJHj*)9^jXBp^U;EHn-+tZCs$Zr+I3y`+yCV} zr^7tr9~Y69x?ro4bViA^2SbgUEu+h+*s9R5961^a<{K(>H7N{_%QUt)O=Gjd<1`&n z4%6Xun1<6ZjVMK|YPWK9U~SVrx&^YmK$v zChbueoAkUkTlY|}XEH>!SgbkK4%H6ThPX_96@~WNUi7X`^U(f%b>gz0O)4rXh(sbh z8Wj#)TV-eBpZuPf$jV9!*18c~q_w$_6UVBE^fj|M6l8Jq1d9_rlrNqot~MF(aX*` zL}(imUY!%puW4_akF;tboRJVy)4K}x_`eL z8QY4?Co+^B&un255B8=)(=&{Tu%!4w@rz>YoG|yXure#$y`{cZm~IrlJ|t|sE`-#d z>kvjxYP?UV4+vcq!aAhu=It-$VVr{wuHlLh^k3u(-zPvAHEX zZ1b~574e6AZJiZ<-{y{8lQvg6A~sun*0Q+rwE>&+C)Y@L%1en6{wMc$%@Ztt0gbF4 Ak^lez literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/male/wing_in_l.vox new file mode 100644 index 0000000000000000000000000000000000000000..4248691c504188886c549aeeb41f1a43f1127a17 GIT binary patch literal 57352 zcmdsxq_=7r~n?YZ25{=YA_18j`0n*t3i1fcZ2dG zdJ!!p8RZ83`**5-z{TZ$CREYgAu@Q%BTT|IRmgZCI{BfM4V0mu!v;q? z92o~Z87EwU%brm#8}^#9W|RjE8<0`M2lS|6IX!A97=j!_2KK1(ff-dks7I9z%BZrz zJ*sqYMwR9w=AoX4_I%vWM=U^F0qzy{s8C@>g^GGquqdN~#XTxeoKb-iMC?=0gmyFT zn-MK&1Aa?J`K>+5hjsXDJ<1C_SewV*quf}l+krJ#f@l2^dOoL zy@)=H_aSf?`t8(co7Q_J&5^eF9mtPj%UXKY`_Vuz>jCag6Ko^Ah!q4n3d;1 zw4u$1SPcB22n5i#5ClO12!VWH&qZ!v15RM&I`+YW=s|RIPULg&JfH;6un+f&fgcos z0NM%>gNOx)Aw)Z#a|f^iC$It+uyan1$mK-Ygt8m41TlcNVnjbE;yNe7JLm*f-~txl24>&^ zCg24nzz2$f9|S-Ugn$k2uN_!{16Y6)@3k4xg=j)_gA(8YUf=_M5CB17!@F+>R^R{@ z-~?vi0w&~!V59(e-ANJo5d?5;1pc$%dvRo0vk8r;`@A^xyR+Xlb0{zpP$cM zd~YC#w#VAyTnTf=b9-^)MZF>y_Tn{N)T`>kUc91tG*~#?S;Jt zU8>jE3w!Y|R4&R@$GsNKm@--Mf^gN>*Hd?QH@&q((aif!P`T|xdf#TFZ9oZ41BfB$HcO*@wNe*&f7oyM&qo`u?!;g}+|1oLmqCAG7d z)FB&f9d4!rVLQD#(MvSDly>6rItpF`?|_}_6&<`=(eVR{UVIYuNs9JOSM<~(MW+*r zR-nFqsiN&oXkV*nYK5ZJ^@`@^zyONGSd_5Hu6p+hm zrcfwEk%}@JTRDs_ud1N!H~Hw`17-C3izDgu%cJOC%z1dfqL-dg^!6)?HYP{VJzJ{j z#A8$Gy*Cz9_I49(d&EXho^;b`3jR<3wbRu9#lO0`n(nIGOJgGYX#CdAa~g<9WjC`Dk`YfGLh!aJVa{CMzUw^bac0IhBtWd>;wXI*8QagCdFyll@&vX;21x?i&I-kClZMEt&I$=v5Km@ocX z@b7!{x3hCYCZ3B*v?ncf!udqHJnK*^CusQzy!%UX;x^Q8t&0 zvKcSRW`Zc2iK1+-5M^_vD4R*5Y$l7cnIg(&swkUjqHLy%vbjo>%?wdCGez0V5@j=6 zl+7GbHgiSU%oAn9|Jy4$e~a57%4UHmn}wom7KyT1EXrnyD4VNA*(?=hbB!pQWuk1B zi?UfE%H~>8HY-KhtP*9jT9i#xl+AUbY+|Bp)`+rc6lK#S$|f$#rdgCtLX=I5D4V1x zo9ji{w2HDxiLz-EWz#OoCN0V)Bg*DuqHMCFY&t~Qbc(X+5@oYil+8L(HtR*%Y!GF$ zQIyTcMcH(VviXE4n;S&g+$hTClcH=kiL%)&%4Ulwo0~-0+$_rG7Ev~z5@mC%D4VUK zY;F@}bGs;;J4D%R6J^sQ%H~c{Hrqwn+$G9phbWu7McM2WW%FrKHoHXG>=tEnk0_fx zqHI1R%I348Z0;3hbDt=i`$gI86=m~)D4TtvY#tP4^N=W;&xx|xFUscgqHGR`vUymP z%_E|0z97oxQBgKu6lL?6D4T<#Y#tY7^MojyCq>yD5@quxQ8tG~*&GpNb5xYgmqpn; zCCcV$Q8r%@W%G++in4iGl+E`<*_;$*^LA4S=`C(7neqHO*w%H}VkY~B}T z^H)(eABeK~n<$$PMcMpal+8ax+5A(K&A&w1{9BaGe?-}kC>zyJsX`bH1kuh7nRqT2 znv%`UT^;ekTwWJXCR#etO+^NAJ)7=IvP1aTQm{ow$b6rTB8~jyBciFMtgd7mrpzu!D_{LV zpNXC;-o92hw56Nkech9~vr_DHe)nX1Gv|mVd*{`a)&ewD)z*f3(c2JfPo&~JxHcTB z4eKniY&^!3hAYFyf}4^Zt$mZ$;SOJ%`TR+{+LIqWDQk|_2`-f)xh7?#;OQdTJexLl znFl`5JCG0e{JCSDZN{m_Hbk2Y>6*TV)_nA@sSQQKHSDh2+mi9~J95J%cZhE!jQyyu z)w8CnqfL50&eZg{NZ8ofNF>Z_oz}Zn9@)26{Zuxm6VWq!W#qZ!@#w}x-@ae+uyx{8 zyuCvgGTHR?y1(AI=JZ-lQB#|Te@A1Pc($`E8#hF%YV}Iiq+(6+XuBSBPQ%#;a(=G_ zr|*-{h2~_cO&8+pGigp>oYvZ;v0{BI))?8d?y^j51#w--XZ7BZERRmB7TWM zx@ldqsk8T^q<3jmZx$ZdH?b}xvdMGS&rN!2eTp5KSYxtXAB6F((`k*94_E0fc%?I` z*am&_yxh&b6YqK)U(V!Ea^^-1!WNC-dl M;Kq0=#T_F51y29oPyhe` literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/wing_in_r.vox b/assets/voxygen/voxel/npc/reddragon/male/wing_in_r.vox new file mode 100644 index 0000000000000000000000000000000000000000..10a75b0e8faa0744eab0d325bcc066bad64c4b88 GIT binary patch literal 57352 zcmdsH;t~-l zNUP#fiq?usfog4wXsNZemZG(`mRf7A-D_KG?Rxq<_l2&T%d*OWXai1Q1ukF#ZeRwU(thOyK9v0+0D{17!dPGfPGAMD z0*pm;0}t>5pQ&H@K>%e(3F_!$NAwqBEMmF6Usc$$s=^9THd_G7X0%x>z}&Aas9O=8 z=nq9yS%7GI&Kna}uh#^E1s05`T2+G(SlmkDoBbN`+hPCh_ zdJ+9-v!ZVR(S}%o_4lIeLfHg#aP|~kT5FN;2LYouOhw&cHi8ZmpyA1RYiz) zgmx2RC1NRJ5U~s~fLIRvpaS@S8F+yOcz_kSfepBT9XNpl6gc};At(aHPRs>NpcIsW za!>)xzyhqm2JFBAoWKR#zyrL%2mBxaf}j$FKozJ4HDEXx0UQN*A25YcWdojJSf@PX z$-~;g-ItF&X0WG$0{CK$gN0ZJ5Gq2%o>UfNJ+NLu>{$@cWhI{ZO1vjRcz1;GoK)fY zslvTpjr+W&qF+_x-mbzoeDEqLd5jjK^Z6oCQt&3K@lhf1t1^f0V_PL z#Td`vGseNs7p~EPYjh*pKmdDE27*}YQp8F`6QT>}?7#^eAcS`1?omU)P~gUUVTcQ5 z;6d41lI>cuXn|jU5}y2nKN4x+;4&XwGZ$TEHj4VQl#6_BC^$6-*ZCL*I0csnb1a^9 znVlPO@OeH?oa6GmY0DS!=ktk!&*g(ySG+U9l`v;KwHG&@)hlvlFTSR;dexoTi?8Uc zUiD}8$~#xDhBJHdRiBls@yuQY=jt`_%wGJ3%2~OZxYweY7f(}sK{%S5o2jp_kKWp< zXx6<)sK)*wy>GYE;luN}D?K**04*9oQPD13R+RbRa|KsZR1- z6Qa;{<7mvTNu*}vlj*Op7454PT{1?|%4S9L^780zv@dM%Qffvu ztzS5rwkPVS@A4+v-hK%kzWEAzcXx`$)i`NNT_w%EXf!33Hc`hMMVqcxw5vzap*s{! z40>ty*x_{5#9GQtpF~T?Iw{rQquXbWp#3W+(2OY&ie5U2R$MlXI<8qj>oY58%Z(kh zf6q;H?D>0X|2i^ho9V)hyJ+rxhiLH=$7t%*sq_}!SgHun2Q=)MqBoy5t`FZzeB^mN zf;7&1F~9HV!Xa55=Z{M1IDW`vvRt0iT-=p81J?pZGB2;3nskXM>?gYP1VrvqqWP1L;D4R<} z*-RH@GeeZkrJ`(Rin5s{%4W7Gn>nIv=8CeJC(35NC>#E7ujKp`H!8~JGEp`QMcFJ8 zWwTh6%@R>Imy5DlD$3>xQ8vp&*(?`jvqF^3m7;8}5@mC>D4Ug{Y+|Bpt`TJu7iF_b zlue5$n^sXa2~jp}qHL0)Y}!THq(s?VE6S!rlucTcO{XZEE>SiaQ8rmoHXjpZlM`jr zEy|`xlufTFo7JLh)`+rME6Qe_D4X@7Y(6f^rcad3Cq&s?C(7n}Q8u3xWwSw)%|=l+ zn?%{%Aj;-OQ8qV;viX!Ko0~=1Y!+p6izu60McLdY%I0=aHvOV(?hs|OMU>5*qHMN` zvbjr?%{EaspB81aU6joZQ8ssrve_xh<};#fJ}b)R9#J;;in6&+l+7+tHusCNc|erS zgQ9F65@qu_Q8v3p*?eA<%^p!U4~w#SM3l`JMA6M--)vMy(pVM zh_d;kD4X|0+5AbA&7Vct{6&<_`=V_AD$3>qQ8s@QW%HpZo4<>)`G+W*e~PmCmnfTm zi?aETC>s)GqlPF|3Zr}w>sgmg6mg+7)z;SAohan;nnWtu-h*x`Qo!|GrZ?F>45e^w zM33suCR&VoqaMKZSazT#kB6i(Iip&ytMMM4F3fGQWSHB=hie;+YQ*T-Y}D2mwI)4L zTe^2GUxywMOSk59B^SMTP7PZ57zzeW^jwLq)w-cG)0!CUp3pnpSS zC=za9cirBZN}S%28_u~xd?IPAM{}c|HB%pJ)$4JhrpHCX#>z$_VZPSs1J}wU2d`D% zm2H`1?8I6bdCs{#x-mJp?&sWWoj9H7>ehv9E_1E!uNST@vzk*hG#2B}SUj7^_4MWv zhDcqbzLHhxcxxiorN^AoaPo#+Fd)I{2PJf&EtT%ng~Zxyh7%aOwK`>7u|5@VNpzn) zm5g`t#?;l;@$xJ?S7yC4tJ0ZFr#9$Jtu?mN*s|`Hc-px6_466$2h_MXczoAlIr z7rV3ZmQD3d4NaOwfB7=l6>I{o0Vkwz(8!U13raqaKHf;Sz1Ypb!=DiS(g-?P#l8d zIF5l7Vn|AzltO^oZql?R4yBZqQtHq&ZAvLg)AVlIrfGV0~rK?ZKSef!#@ZW4U@rtzgA zS}~0ff+na>R!o=}OI1ufQZds~-6lqCh;*AqViPn&9$b(EH+cOO;{$Ji2p&t2Jh;IV zB7zHoafnq+fS9FiATeS57V^FXV>1U|a>As26_c{iZxRxaqTi&2J`=M!wCiH*q>KK@1U-M1NDa z2{7*DnZOhFQYjol{HNIS?w1Om)0N^EAHF=9P2PE11r zQjmmbL$}E{PzQ1lhb$x@14&3j3R>!U26@OqyuRBch)GC68ZwZb)@^drs0Xdk0y9{r zmcWE*je{S26Q<2eS&Xy?+z=)20@kaIHJ+KCFw=2uiAZ5!wjh7{i;hcmjuKi#+;(S`_>SK5CoZD0Q}6+#~i)jVV-X0>0+ME%#m~A zXRiYgWZyy%h6qI2ix|XN`vfE*1!>4YmUYQN9$KIk+6;4q8DN;FVV)5Wd&s-cz}nVB zjC14TEM?gzFEK~-5c9-F_QuWgH1(S(YlH@<$1iHzveyw}oERo1h-vC4i2=@jis&Xr zZF`7=k9uJ*?;J77JMAHQXydl!yz3GBu5*4OoTUhNMVJ_-EM)Hi-t#bhgg84v&P9m1 zgls$V5z1ZUo1uxaMsQQd!!09R*!DvV5j_wDFYiH= zImRGjvGwgU+W3hniyf1CY0?4GF8W9lGvxg?+UMZsT}seLfIbrBgTyA*DMXycSq&4D zv`s-HYug0P&`Lf>Y$0Zed18j>g*0pABf42XKQRdb-pvFtNQ^R0oOO=UriFEG;7({H z-^kf-Vh@|a1vv=X{)t)JKQTj06Mc{ZKSby+VAFgb2--Y#Lfiq3^c%HjfIV;Kj5hJS z8S>zQ9JnD12|Pobw=`{oL^t`c-A~pgO*%lGCi)8!!?u57it>c@AnhVH@y<4L9$erC z4+I!H%K7ozGz1|8VTdrdX8MYeZn5Rm%@Z4#s~19ypP}zGZ1Q+FQ@PHS5 z;D-PN!9$;Zh>(s#j5FCn%(B*bVuXFj5!1vhF-6P}!}Ra6?%)A0_`nYVo2O47BsfD6 z@=<7o7_>kf@{r&@&k>W5g%o5U4KD67H|Nv?Uhvs73$3`fL5Q@A^AjdUAqFiFhdd-8 z2T8tHWQi%rKpNcKkschp;DaRnB_K#T1TCcFcCATAArCRgK^(G>fD9xd&G(`dc(`}H z;NvdvLjZyhf-vOi*AIEpF~~t2vXFob-^-H3>2-Wxn#Q}q9qwGDsVIMYcKlNa{u<5Bjw%&Ae%ogym&+X^jGn?M9 z>h>-6XU20M`>YX)BR#_~HFRWz?-&3po(pq*-@2S;sX)QaW_tfgVv{u9AYAwFB zmYwx``s%v0R@3EbExEK-^W|zSwY9d~c>OA4C&XvjvSo7MzyW#ph>@F~ctvK$ek4DL z#pKMHjkc;hyY`f9T3?W!J6Fho-RtGlp|x`ANROO)q#{dCjY?=`Leh7)N!z^(WZv=R zV%9W@+36AUR7A`x2?=d9k{mXYJ8b02=Z&~_8u1@A5+$E_#>nE0URgIBlI{0J<)f$b zvig9L%}0&wc+SYaH)*>$BQ50_GV8#6S#olvWUDcm@o+}wKiw+rug;O=9Y$u|N8iVc zT=S9_ffvv$PM$1+_lWehK2@tl=97sGg4kNL-uc;E5}M5 za^Tjba%}JhIrHELpZT+`7i>)$t5O52vo&UHo(-f86cxRIAWZe&SIM%K=s zC3h@YB-Pc+W!wCOlow~^;Tvbm$-AzSHP^ID_xqR2_M2D9&bv3s{?YAn_#->z57=F8h}ERe?; z^W@V;UjK@b?|j|J{_O&!U_zN+4;mx$XEv^5j|L)c1|HZ$v zvr|5?^tfEr{*tRYm$9dO%WlCFPAT&X&{L({hBhx^(@oTXDqc>-Md$OLb6W-yV_!WhU6n&}-TlX9{byd1tsCnk)~b`9UH+I8w_Wj=6PHgr;6&Tber#Ocd!G}p zeC$n$2Gi16SDt!yuFfTq-;3X};cGOuAA9rI--|nU=lH%#$wj8vSMKlMHCD3MNpVl9 zJTN$J>$TfUs8}7{H85x|z`~+-r`1@c)LYAUISp*SSeY!bS5C1!TCHU}oovsz(_O)q z6$c8oY++$hS1sFKtGTR}+f&Oebq4Am+O^lt!)Z|*>Z>}L3vKM}t;fc?>#?!htjES4 zNIf?8#nxkEZy`N4_CnTUWB+(pkBvu_jaQY8J!N`MnqQSoK$T5Um5u$A8$It$Sd~pg zl}%KYjs4R~J?~9il}$pGO;VLjN|jAom5u!y7Cm=bR+WwYn>amtlUHTaqROUKl}(!} zo9U`-W~j26smf-SDx2A=Y_3pcGe?!pTvaynRN2f|WwSt)&6TQb7OJvYq{`+hRW=1x zHtnixI#k(osVC z*{o7!bG<5?8&uh>R%NqBmCgHA+1#kg<|b7(YgO5-Q)RPWmCXiKHXBvh*nf&m&;L8f zKLDl3=4Mqkn^oCtQDw7LmCY@xY;IL$vrU!F2UOYIrpo4aRW{pI*?dry%^j+2?o?%S zmnxg0Dx14i+4QKg*`dm&SCvhlDw~ojn|@U`1FCEWRoRqP+1#VbW~VBfAyqcRs%%D7 z*^H{Psi?B~DOEOARW@U)Y{pgD>{4a3Tb0coRW^H7+3ZtgvtO0XPph&ypvvZFRN36C z%H~6=Y<^ai&3&qD?pI}VP?gPxRoQ$*mCXaHY<^Ca&4a3J4ym&Fs4AO>RM~t?mCeJd zY$jCMd|Z{yVO2JtP-SyOmCYwr*&J16^C?v}$5h!oqRQq`RW^^QviYSV2{GlqFv#M;quFB>uRW^U5%H|uYZ2nl4%{Nuq z{D~@?KUHP(Embyurpo4RRW^UF%H|zaHh-bY=3P}b-&SSw9aT1esmkWNs%-vBmCg55 z+5ELCo4-+I^S7#O{!W$6->b6u2URxzsLJM_RM~uAmCZk^viTQPHvg*1<_D^5{!Nw5 z4^`RxyDFO>sj~SGRW|>r%I3dR+5EREoBvT|^S`QWM3s%HGscHeBNWH?RZ1?K=qva4 z?;0yL+w`7Nd0=pyYNox(=BuN-1_tX%6&AHSt;Q;)-deuPX<+lk%4A7{ZBibs*0P;W zwrAYwu3*cG0|i^Qu&}7BmTj-qTvp5NspXbB1N9H>+H2?Gv?vbsRh>+=`}%b=DYc(z zFlFM5RT|mt6bz5{m8Pnfoyx{opNp%PNBV6a#q#91PG+ZYvwn?02=ouLpD%r+e zg|@DO(@Rga)ME!NEGpC{+*cmkIW_1~p4gA=`Qkx$jg)`#pjLCC)4}DsDDN1mbzz5V zcg(A!wNm)#zx zaA0cPFT2@J$3vx&F(*-}j^5+ccNVUHbhqtdahIE~#hyy3I=-t~s)=-TIWyTY)YDfg zjyP>DC^&y0H%&^|?x!T2M1Of`*h!T3Rz__HwcXlXuFcqa)YDrUJO5~)XV`8`$D$6q zJhxr0XJ==242_NsI|jq$y|t~ZZP{3F&rt2~JMU+YeL-ty!|rc!e6U&?8yp>SmbBfD zaqZ+77adin?Er88NS`xY@95BI)ygj`v^oDdLl2&N)t!#!Om<|~b7~oEuf-h$=R2`a z3T^zdV_!Ylb_^7IFUs{eIY-mkN!zBqjbBdV-qO&JtD3d4NavYVZ5rm3-j~o0Vkw;ED})z^AYc4miLfODk!yj_pc5>ym;KibGHw z$1#vX3`wbzQV3AnO`5jEp_I~6N*$V}O(`X5n%+&@G)>Pp&wMKj+ql2{*FWAhkKdX3 z=6Yu4o0Sbew)NcFe#{uNan;&Q1oObRjoG?(`x>v!@Tr5@kcL}t+rIW_D+xaR_57BM zRZKo!F&W4~7Gm)p6DKAh2`NZJ+(kW4#k4{eT#$nnXtuF_(gf-&Cekozn(8J^&^>9w zbrlnESB#J6eqy+pG%*QYNI{x9X<~+$AqI$9q6=D}8JgTZrm3M~8tFIR$Qaa#k&n<{ zpmoy3Tj`&eAo`%SY0`L!sm4j;A*LZ``zPj!ZszK1su+*$6LO}<oF~U2=o|Nu*W1BqczlH+~FRRU>t9x$M~W> z#t(s5j|oBu!VqEIqmZCYEWsW?fVE5zlaPWmWRg853pvO`l78EW?J4@A?F`~fXke|v zedxtBEx5=lqA>>JOTp#@x!ha`KNBepS4mY8GxGej?>!3Qbu zLlQhK%$XR32HJ**QM+F)6;p5LL2P9GnuyKN0y%I&7Fr<#QQD@7F50GuUiwWEeGmvR z9x=?B3=rKAw0XQ@)DMx46aCa{qE0ikfD5t~o@Iz`NP`EW%+pJZ5q&Ps6l>)tAL7ik z;_SxXO-$JO#E_r*#2E8zh6uFMZ;~_TCnks~+Qf+=TaOqfMu`z(181p`F`A$mQno$y zn>d>}&aa!YEYU;E5EDV>3USCl46+b~97G@wG4?c1UupVEGfswdhIE#gB_>0R1<5cG z(h#Iw08$b15Wz9RT1Ie>^6o}SM@h#lc8w{E6XV1LF+oh)GR96o(&D2(@Z#fTTpx4s zai0Aa(gC~zM3-G(aN9^<9&lUeFT;8F5ylW};It@w4Kq4?{ zvcx##z{_}1=Fz~IjgY2~80C40LIgtKvin4ga}ENmLy&Ykb=$y4+6x|VLo2v=*HfH@ zG$bJd3CKd+&t4K^kcTL=K?K5(O;Crk>gBw6z)zVEyx@Um*2+z61s8;HO|zy+)+$2` zGQSk*dhVz!`7r4mF+_QS{xWzbiA|K}DUbR%d$t}lQ`Q1)JokYc0+jo~2VThX+(UFj zE4ZMAJ1)#Ta;#;L=Mm0Qh_wka*8po4WSvv&R~mxU_ptws_Dr*PLF(m+QD|YjFl|D% zoOy;whk5RzeG4>G)&xPG2fz$EyM`XPak1o4nh!w0N+Ik z)-(xmaN!dpwi2Vn1n1MoerHLCAp}8iGY=1V!3TZ_KoCL@h6qF<260G05>hs@rf$9) z1N7wwAK#50@?Or95Bv~-AcP=In+#+voQpJj6Q(>v+X#197MB+GFJbR9)+J7yL5$gF zoR18oAq7$Uez2BtXs1q;Ix+SAFF8*hr*0zUS+{hWJd(;HUZw#EL;cK-ccf%91>58KwQS*gYIR&(%g*UNwK^}ZWoPuBT3r{{YP?jfB^TGSvwlxs-51wt zzErKH7uRaJRIO#U)|MNtTgCo5pXJM!%Yg$2ax~pB`4JBbPsC#I@6i@1T(g`S{aDmTdIMx{;u4zc(TuJ)M))2aIe!YGlW= zM)tiy+s$domuJfC0}Ev7$(53+MrGzhX<6`8n{>P~R}!}ynSC#PA2V|Gi$=`NjKAL{ z=BQuH3sE^VHzX$tF?sWvjL5nfa+KqB8omMFg`<0oJo`x_XHFP-^?C9ujXb%=$d|Sl zd27(fcJh0-89Cff`EDcE&o^@Caw8iW8|4woH!n#`dCg4Ozj>Ye9aUi`R`rTMh1T`*g2U%FVTt5?Xj z1#u}a$;d-D%#o9KULk9)?vS4MuaNCGt&*L0ZIb=QHPo3AdAw_aZ;k1^)Sr;NPz6(isI zx{>|mdGg4?E_wNx>*f33+A7rtgYwW9qVoJ3DS1oU{!jnitIhw5e^*zRd}7&gxuWAq zx$4k;k~)}@S3Yax%?}!Rdfq&lKYzY-hp&+hH@+a|;C_i!V{-c8+8*AM=IrG2@}W6L zrEo<>`X9Vsl6NNL^)Jqm)7w*WgtfYO{ja_1h|||?TVIpvkjTD=PsqW~os`KJUXn+@ zdRDqChveG(j?4PbyeM0rJ1Z+!u9SDUv5X7khthD?$lG78&F^i_*H3!RODGG|*V+3{ zuC1#$apT;w6BpH8C81lYPI^xHV@}+5*`rQeQGdXRww?XhxT5b~Ctm*O8xjemq^qtx z{p?(wiz0s(zj?#gXly_B=COYkcka%KeU*}nOtHT_FtBU9WUrIro>F;mXu{U(u$NG= zI<{+Y$Xf-Nf!7Hrv~!s6~) zwxd>ac`di6mRsfwG%&ntubqd}qBz`Nbu#DM*xOr=jdj;!W4Bq4jXjWhZ0w7z$Hv}5 zdTi{4tjEUw^{yTpw<;TtDjR#s^qe%GDjUBln}8}C`!_dw-kXpro3JXIh$Dil{Dx172n>JN8?W$~MsIr-<%4U`- zo7t*t=BTo{OqI=CRW|cf+00jEvp|*2LRB`GtFl?7%4V@Dn=4e=6ja%CsIuu)Wz(g~ zW{E1BZdEo*RoN_4WwTtB%?edESE{nPN|nvks%)-NWpk}6oA;@*S*glql`5O-RM}jw z%4W4Hn>DIz-ml8$230mUsue1`J^hFqpEB^rOM`*Dw~H@**v1k=22BPpH^k_^QvqfQ)TnGDx1%!vN^8G z<_T3cPpY!{tSXz&sj~S6RW?tlviU_-HYZfsd|s8!7gX8&k}8|0RoVQqDw}6i**vSt z=8LLqo>OJ>yegX)RN4HBDw~t4Y)+}NIjzd(S5?`3NtMl)RoVQSDx0sUviWsYHou|D z<~LQ@yr|0NtEz0ysIvK*Dw~&7+5DC&o0nDD{I)8aS5(>jjw+j1RoVQmDx2R^W%HUU zo8MPu^SUaVKTu`!hANvsRAqBkmCe^x*}SRB=8sg_d_$GZAFHzYrYf61QDyU|s%*Zc z%I42h*}SF7=Fe5xysgUSFI3sQqsr#ns%*Za%H}Us*?d=(&0ndq`JO79zgA`QH>zy@ zR+Y`)sj~TdRW|>i%H|(c+5D3#oA0Z#`Dax&|Dwv~Usc)sK$XqEsj~T@Dw}^-W%DCd zHvgf@=08>0{Ff@5|5j!5KdNm0SCx&ZvN3hWcrj{%;>5m6$z>D$<$-}+qO+%jjNf#F?y?L3?o#o_*{ld1Mxw{8}t_EQhjCeB!;(cMnL z$XI`Ax_a5EY>f4}uzGoP!1hrrPmSwjc6uo4?Cx%#!dZsi(ZS)8ZQNaG?=CpK^j1r~ zcF@A<$qRB5S(;F2q39}L#kV|lkT z>R4B?-&v1yIj3Dmp|-Le9R)kr)l+k|EvM(|oXUZ*!Q#2Ks`Ycp?QseRr`P?Go9%Qw zTpAsB5|!%M-A;XH;ReQb+b))LxAJ?jw^FK3?5dV(BAwmNOm+W{ zkByBu1|#LYwXLje*?3>?aP9Cr?`N-lL2GBj?r(8os9G8y8XI<&w8M^Z&D0nd995_7 zAaDO@zcXCl*zj1@$}capJO4OC51o6}osQ;Cb!69bdKql5#T|q1c4D6t+WBS2zH+L` z1!LD1tbed{iAGM*o^t=h)TQLC(j8O1*oM;sJBh(+`MmktB4=o47so5TedSSSBWib@ z(`{|%3!P3CUg^qk?>=Ye?R4*(8puAJ9;nt?X<~xT&RaHTOQ$E{bm8Pmh`pQJF<9)o bAlK{U98G5@ZJUmEemRZ%O2fmpLdTB*Q!X;{ literal 0 HcmV?d00001 diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 4545478126..a69cc9b961 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -60,6 +60,7 @@ pub struct AllBodies { pub biped_large: BodyData>, pub golem: BodyData>, pub critter: BodyData>, + pub dragon: BodyData>, } /// Can only retrieve body metadata by direct index. @@ -76,6 +77,7 @@ impl core::ops::Index for AllBodies &self.biped_large.body, NpcKind::StoneGolem => &self.golem.body, NpcKind::Rat => &self.critter.body, + NpcKind::Reddragon => &self.dragon.body, } } } diff --git a/common/src/comp/body/dragon.rs b/common/src/comp/body/dragon.rs index 94c23ce9b9..8591ba74e1 100644 --- a/common/src/comp/body/dragon.rs +++ b/common/src/comp/body/dragon.rs @@ -2,128 +2,69 @@ use rand::{seq::SliceRandom, thread_rng}; #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] pub struct Body { - pub head: Head, - pub chest_front: ChestFront, - pub chest_rear: ChestRear, - pub tail_front: TailFront, - pub tail_rear: TailRear, - pub wing_in_l: WingInL, - pub wing_in_r: WingInR, - pub wing_out_l: WingOutL, - pub wing_out_r: WingOutR, - pub foot_fl: FootFL, - pub foot_fr: FootFR, - pub foot_bl: FootBL, - pub foot_br: FootBR, + pub species: Species, + pub body_type: BodyType, } + impl Body { pub fn random() -> Self { let mut rng = thread_rng(); - Self { - head: *(&ALL_HEADS).choose(&mut rng).unwrap(), - chest_front: *(&ALL_CHEST_FRONTS).choose(&mut rng).unwrap(), - chest_rear: *(&ALL_CHEST_REARS).choose(&mut rng).unwrap(), - tail_front: *(&ALL_TAIL_FRONTS).choose(&mut rng).unwrap(), - tail_rear: *(&ALL_TAIL_REARS).choose(&mut rng).unwrap(), - wing_in_l: *(&ALL_WING_IN_LS).choose(&mut rng).unwrap(), - wing_in_r: *(&ALL_WING_IN_RS).choose(&mut rng).unwrap(), - wing_out_l: *(&ALL_WING_OUT_LS).choose(&mut rng).unwrap(), - wing_out_r: *(&ALL_WING_OUT_RS).choose(&mut rng).unwrap(), - foot_fl: *(&ALL_FOOT_FLS).choose(&mut rng).unwrap(), - foot_fr: *(&ALL_FOOT_FRS).choose(&mut rng).unwrap(), - foot_bl: *(&ALL_FOOT_BLS).choose(&mut rng).unwrap(), - foot_br: *(&ALL_FOOT_BRS).choose(&mut rng).unwrap(), + let species = *(&ALL_SPECIES).choose(&mut rng).unwrap(); + Self::random_with(&mut rng, &species) + } + + #[inline] + pub fn random_with(rng: &mut impl rand::Rng, &species: &Species) -> Self { + let body_type = *(&ALL_BODY_TYPES).choose(rng).unwrap(); + Self { species, body_type } + } +} + +impl From for super::Body { + fn from(body: Body) -> Self { super::Body::Dragon(body) } +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] +#[repr(u32)] +pub enum Species { + Reddragon = 0, +} + +/// Data representing per-species generic data. +/// +/// NOTE: Deliberately don't (yet?) implement serialize. +#[derive(Clone, Debug, Deserialize)] +pub struct AllSpecies { + pub reddragon: SpeciesMeta, +} + +impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { + type Output = SpeciesMeta; + + #[inline] + fn index(&self, &index: &'a Species) -> &Self::Output { + match index { + Species::Reddragon => &self.reddragon, } } } -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum Head { - Default, +pub const ALL_SPECIES: [Species; 1] = [ + Species::Reddragon, +]; + +impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { + type Item = Species; + + type IntoIter = impl Iterator; + + fn into_iter(self) -> Self::IntoIter { ALL_SPECIES.iter().copied() } } -const ALL_HEADS: [Head; 1] = [Head::Default]; #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] #[repr(u32)] -pub enum ChestFront { - Default, +pub enum BodyType { + Female = 0, + Male = 1, } -const ALL_CHEST_FRONTS: [ChestFront; 1] = [ChestFront::Default]; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum ChestRear { - Default, -} -const ALL_CHEST_REARS: [ChestRear; 1] = [ChestRear::Default]; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum TailFront { - Default, -} -const ALL_TAIL_FRONTS: [TailFront; 1] = [TailFront::Default]; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum TailRear { - Default, -} -const ALL_TAIL_REARS: [TailRear; 1] = [TailRear::Default]; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum WingInL { - Default, -} -const ALL_WING_IN_LS: [WingInL; 1] = [WingInL::Default]; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum WingInR { - Default, -} -const ALL_WING_IN_RS: [WingInR; 1] = [WingInR::Default]; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum WingOutL { - Default, -} -const ALL_WING_OUT_LS: [WingOutL; 1] = [WingOutL::Default]; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum WingOutR { - Default, -} -const ALL_WING_OUT_RS: [WingOutR; 1] = [WingOutR::Default]; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum FootFL { - Default, -} -const ALL_FOOT_FLS: [FootFL; 1] = [FootFL::Default]; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum FootFR { - Default, -} -const ALL_FOOT_FRS: [FootFR; 1] = [FootFR::Default]; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum FootBL { - Default, -} -const ALL_FOOT_BLS: [FootBL; 1] = [FootBL::Default]; - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] -#[repr(u32)] -pub enum FootBR { - Default, -} -const ALL_FOOT_BRS: [FootBR; 1] = [FootBR::Default]; +pub const ALL_BODY_TYPES: [BodyType; 2] = [BodyType::Female, BodyType::Male]; diff --git a/common/src/generation.rs b/common/src/generation.rs index 22cf420021..15850ebb64 100644 --- a/common/src/generation.rs +++ b/common/src/generation.rs @@ -79,6 +79,9 @@ impl EntityInfo { Body::QuadrupedSmall(body) => { Some(get_npc_name(&NPC_NAMES.quadruped_small, body.species)) }, + Body::Dragon(body) => { + Some(get_npc_name(&NPC_NAMES.dragon, body.species)) + }, _ => None, } .map(|s| { diff --git a/common/src/npc.rs b/common/src/npc.rs index fc08070dea..97d42e9b43 100644 --- a/common/src/npc.rs +++ b/common/src/npc.rs @@ -15,9 +15,10 @@ pub enum NpcKind { Ogre, Rat, StoneGolem, + Reddragon, } -pub const ALL_NPCS: [NpcKind; 7] = [ +pub const ALL_NPCS: [NpcKind; 8] = [ NpcKind::Humanoid, NpcKind::Wolf, NpcKind::Pig, @@ -25,6 +26,7 @@ pub const ALL_NPCS: [NpcKind; 7] = [ NpcKind::Ogre, NpcKind::Rat, NpcKind::StoneGolem, + NpcKind::Reddragon, ]; /// Body-specific NPC name metadata. @@ -91,6 +93,7 @@ pub fn kind_to_body(kind: NpcKind) -> Body { NpcKind::Ogre => comp::biped_large::Body::random().into(), NpcKind::Rat => comp::critter::Body::random().into(), NpcKind::StoneGolem => comp::golem::Body::random().into(), + NpcKind::Reddragon => comp::critter::Body::random().into(), } } @@ -212,6 +215,14 @@ impl NpcBody { comp::golem::Body::random_with, ) }) + .or_else(|| { + parse( + s, + NpcKind::Reddragon, + &npc_names.dragon, + comp::dragon::Body::random_with, + ) + }) .ok_or(()) } } diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index 67cf9c5317..b997fab2f7 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -10,7 +10,7 @@ use crate::render::FigureBoneData; use common::comp::{self}; use vek::Vec3; -#[derive(Clone)] +#[derive(Clone, Default)] pub struct DragonSkeleton { head: Bone, chest_front: Bone, @@ -28,23 +28,7 @@ pub struct DragonSkeleton { } impl DragonSkeleton { - pub fn new() -> Self { - Self { - head: Bone::default(), - chest_front: Bone::default(), - chest_rear: Bone::default(), - tail_front: Bone::default(), - tail_rear: Bone::default(), - wing_in_l: Bone::default(), - wing_in_r: Bone::default(), - wing_out_l: Bone::default(), - wing_out_r: Bone::default(), - foot_fl: Bone::default(), - foot_fr: Bone::default(), - foot_bl: Bone::default(), - foot_br: Bone::default(), - } - } + pub fn new() -> Self { Self::default() } } impl Skeleton for DragonSkeleton { @@ -98,7 +82,17 @@ impl Skeleton for DragonSkeleton { } } -pub struct SkeletonAttr; +pub struct SkeletonAttr { + head: (f32, f32), + chest_front: (f32, f32), + chest_rear: (f32, f32), + tail_front: (f32, f32), + tail_rear: (f32, f32), + wing_in: (f32, f32), + wing_out: (f32, f32), + feet_f: (f32, f32, f32), + feet_b: (f32, f32, f32), +} impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { type Error = (); @@ -112,9 +106,52 @@ impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { } impl Default for SkeletonAttr { - fn default() -> Self { Self } + fn default() -> Self { + Self { + head: (0.0, 0.0), + chest_front: (0.0, 0.0), + chest_rear: (0.0, 0.0), + tail_front: (0.0, 0.0), + tail_rear: (0.0, 0.0), + wing_in: (0.0, 0.0), + wing_out: (0.0, 0.0), + feet_f: (0.0, 0.0, 0.0), + feet_b: (0.0, 0.0, 0.0), + } + } } impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { - fn from(_body: &'a comp::dragon::Body) -> Self { Self } -} + fn from(body: &'a comp::dragon::Body) -> Self { + use comp::dragon::Species::*; + Self { + head: match (body.species, body.body_type) { + (Reddragon, _) => (4.0, 3.0), + }, + chest_front: match (body.species, body.body_type) { + (Reddragon, _) => (0.0, 5.0), + }, + chest_rear: match (body.species, body.body_type) { + (Reddragon, _) => (0.0, 5.0), + }, + tail_front: match (body.species, body.body_type) { + (Reddragon, _) => (-3.0, 1.5), + }, + tail_rear: match (body.species, body.body_type) { + (Reddragon, _) => (-3.0, 1.5), + }, + wing_in: match (body.species, body.body_type) { + (Reddragon, _) => (2.75, 0.0), + }, + wing_out: match (body.species, body.body_type) { + (Reddragon, _) => (2.75, 0.0), + }, + feet_f: match (body.species, body.body_type) { + (Reddragon, _) => (2.0, -1.5, 4.0), + }, + feet_b: match (body.species, body.body_type) { + (Reddragon, _) => (2.0, -1.5, 4.0), + }, + } + } +} \ No newline at end of file diff --git a/voxygen/src/scene/figure/cache.rs b/voxygen/src/scene/figure/cache.rs index d06f72cd1e..4ca5547771 100644 --- a/voxygen/src/scene/figure/cache.rs +++ b/voxygen/src/scene/figure/cache.rs @@ -410,24 +410,83 @@ impl FigureModelCache { None, None, ], - Body::Dragon(body) => [ - Some(mesh_dragon_head(body.head, generate_mesh)), - Some(mesh_dragon_chest_front(body.chest_front, generate_mesh)), - Some(mesh_dragon_chest_rear(body.chest_rear, generate_mesh)), - Some(mesh_dragon_tail_front(body.tail_front, generate_mesh)), - Some(mesh_dragon_tail_rear(body.tail_rear, generate_mesh)), - Some(mesh_dragon_wing_in_l(body.wing_in_l, generate_mesh)), - Some(mesh_dragon_wing_in_r(body.wing_in_r, generate_mesh)), - Some(mesh_dragon_wing_out_l(body.wing_out_l, generate_mesh)), - Some(mesh_dragon_wing_out_r(body.wing_out_r, generate_mesh)), - Some(mesh_dragon_foot_fl(body.foot_fl, generate_mesh)), - Some(mesh_dragon_foot_fr(body.foot_fr, generate_mesh)), - Some(mesh_dragon_foot_bl(body.foot_bl, generate_mesh)), - Some(mesh_dragon_foot_br(body.foot_br, generate_mesh)), - None, - None, - None, - ], + Body::Dragon(body) => { + let dragon_center_spec = + DragonCenterSpec::load_watched(manifest_indicator); + let dragon_lateral_spec = + DragonLateralSpec::load_watched(manifest_indicator); + + [ + Some(dragon_center_spec.mesh_head( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_center_spec.mesh_chest_front( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_center_spec.mesh_chest_rear( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_center_spec.mesh_tail_front( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_center_spec.mesh_tail_rear( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_lateral_spec.mesh_wing_in_l( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_lateral_spec.mesh_wing_in_r( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_lateral_spec.mesh_wing_out_l( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_lateral_spec.mesh_wing_out_r( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_lateral_spec.mesh_foot_fl( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_lateral_spec.mesh_foot_fr( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_lateral_spec.mesh_foot_bl( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_lateral_spec.mesh_foot_br( + body.species, + body.body_type, + generate_mesh, + )), + None, + None, + None, + ] + }, Body::BirdSmall(body) => [ Some(mesh_bird_small_head(body.head, generate_mesh)), Some(mesh_bird_small_torso(body.torso, generate_mesh)), diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 3b1debba8f..1bfd77b30f 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -6,7 +6,8 @@ use common::{ bird_medium::{BodyType as BMBodyType, Species as BMSpecies}, bird_small, critter::{BodyType as CBodyType, Species as CSpecies}, - dragon, fish_medium, fish_small, + dragon::{BodyType as DBodyType, Species as DSpecies}, + fish_medium, fish_small, golem::{BodyType as GBodyType, Species as GSpecies}, humanoid::{Body, BodyType, EyeColor, Race, Skin}, item::{ @@ -1865,173 +1866,345 @@ pub fn mesh_fish_medium_fin_r( ) } -pub fn mesh_dragon_head( - head: dragon::Head, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match head { - dragon::Head::Default => "npc.dragon.head", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) +//// + +#[derive(Serialize, Deserialize)] +pub struct DragonCenterSpec(HashMap<(DSpecies, DBodyType), SidedDCenterVoxSpec>); + +#[derive(Serialize, Deserialize)] +struct SidedDCenterVoxSpec { + head: DragonCenterSubSpec, + chest_front: DragonCenterSubSpec, + chest_rear: DragonCenterSubSpec, + tail_front: DragonCenterSubSpec, + tail_rear: DragonCenterSubSpec, +} +#[derive(Serialize, Deserialize)] +struct DragonCenterSubSpec { + offset: [f32; 3], // Should be relative to initial origin + center: VoxSimple, } -pub fn mesh_dragon_chest_front( - chest_front: dragon::ChestFront, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match chest_front { - dragon::ChestFront::Default => "npc.dragon.chest_front", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) +#[derive(Serialize, Deserialize)] +pub struct DragonLateralSpec(HashMap<(DSpecies, DBodyType), SidedDLateralVoxSpec>); + +#[derive(Serialize, Deserialize)] +struct SidedDLateralVoxSpec { + wing_in_l: DragonLateralSubSpec, + wing_in_r: DragonLateralSubSpec, + wing_out_l: DragonLateralSubSpec, + wing_out_r: DragonLateralSubSpec, + foot_fl: DragonLateralSubSpec, + foot_fr: DragonLateralSubSpec, + foot_bl: DragonLateralSubSpec, + foot_br: DragonLateralSubSpec, +} +#[derive(Serialize, Deserialize)] +struct DragonLateralSubSpec { + offset: [f32; 3], // Should be relative to initial origin + lateral: VoxSimple, } -pub fn mesh_dragon_chest_rear( - chest_rear: dragon::ChestRear, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match chest_rear { - dragon::ChestRear::Default => "npc.dragon.chest_rear", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) +impl Asset for DragonCenterSpec { + const ENDINGS: &'static [&'static str] = &["ron"]; + + fn parse(buf_reader: BufReader) -> Result { + ron::de::from_reader(buf_reader).map_err(assets::Error::parse_error) + } } -pub fn mesh_dragon_tail_front( - tail_front: dragon::TailFront, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match tail_front { - dragon::TailFront::Default => "npc.dragon.tail_front", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) +impl Asset for DragonLateralSpec { + const ENDINGS: &'static [&'static str] = &["ron"]; + + fn parse(buf_reader: BufReader) -> Result { + ron::de::from_reader(buf_reader).map_err(assets::Error::parse_error) + } } -pub fn mesh_dragon_tail_rear( - tail_rear: dragon::TailRear, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match tail_rear { - dragon::TailRear::Default => "npc.dragon.tail_rear", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) -} +impl DragonCenterSpec { + pub fn load_watched(indicator: &mut ReloadIndicator) -> Arc { + assets::load_watched::("voxygen.voxel.dragon_center_manifest", indicator) + .unwrap() + } -pub fn mesh_dragon_wing_in_l( - wing_in_l: dragon::WingInL, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match wing_in_l { - dragon::WingInL::Default => "npc.dragon.wing_in_l", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) -} + pub fn mesh_head( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No head specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let center = graceful_load_segment(&spec.head.center.0); -pub fn mesh_dragon_wing_in_r( - wing_in_r: dragon::WingInR, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match wing_in_r { - dragon::WingInR::Default => "npc.dragon.wing_in_r", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) -} + generate_mesh(¢er, Vec3::from(spec.head.offset)) + } -pub fn mesh_dragon_wing_out_l( - wing_out_l: dragon::WingOutL, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match wing_out_l { - dragon::WingOutL::Default => "npc.dragon.wing_out_l", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) -} + pub fn mesh_chest_front( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No chest front specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let center = graceful_load_segment(&spec.chest_front.center.0); -pub fn mesh_dragon_wing_out_r( - wing_out_r: dragon::WingOutR, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match wing_out_r { - dragon::WingOutR::Default => "npc.dragon.wing_out_r", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) -} + generate_mesh(¢er, Vec3::from(spec.chest_front.offset)) + } + + pub fn mesh_chest_rear( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No chest rear specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let center = graceful_load_segment(&spec.chest_rear.center.0); -pub fn mesh_dragon_foot_fl( - foot_fl: dragon::FootFL, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match foot_fl { - dragon::FootFL::Default => "npc.dragon.foot_fl", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) -} + generate_mesh(¢er, Vec3::from(spec.chest_rear.offset)) + } -pub fn mesh_dragon_foot_fr( - foot_fr: dragon::FootFR, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match foot_fr { - dragon::FootFR::Default => "npc.dragon.foot_fr", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) -} + pub fn mesh_tail_front( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No tail front specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let center = graceful_load_segment(&spec.tail_front.center.0); -pub fn mesh_dragon_foot_bl( - foot_bl: dragon::FootBL, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match foot_bl { - dragon::FootBL::Default => "npc.dragon.foot_bl", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) -} + generate_mesh(¢er, Vec3::from(spec.tail_front.offset)) + } -pub fn mesh_dragon_foot_br( - foot_br: dragon::FootBR, - generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, -) -> Mesh { - load_mesh( - match foot_br { - dragon::FootBR::Default => "npc.dragon.foot_br", - }, - Vec3::new(-7.0, -6.0, -6.0), - generate_mesh, - ) + pub fn mesh_tail_rear( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No tail rear specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let center = graceful_load_segment(&spec.tail_rear.center.0); + + generate_mesh(¢er, Vec3::from(spec.tail_rear.offset)) + } +} +impl DragonLateralSpec { + pub fn load_watched(indicator: &mut ReloadIndicator) -> Arc { + assets::load_watched::("voxygen.voxel.dragon_lateral_manifest", indicator) + .unwrap() + } + + pub fn mesh_wing_in_l( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No wing specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let lateral = graceful_load_segment(&spec.wing_in_l.lateral.0); + + generate_mesh(&lateral, Vec3::from(spec.wing_in_l.offset)) + } + + pub fn mesh_wing_in_r( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No wing specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let lateral = graceful_load_segment(&spec.wing_in_r.lateral.0); + + generate_mesh(&lateral, Vec3::from(spec.wing_in_r.offset)) + } + + pub fn mesh_wing_out_l( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No wing specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let lateral = graceful_load_segment(&spec.wing_out_l.lateral.0); + + generate_mesh(&lateral, Vec3::from(spec.wing_out_l.offset)) + } + + pub fn mesh_wing_out_r( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No wing specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let lateral = graceful_load_segment(&spec.wing_out_r.lateral.0); + + generate_mesh(&lateral, Vec3::from(spec.wing_out_r.offset)) + } + + pub fn mesh_foot_fl( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No foot specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let lateral = graceful_load_segment(&spec.foot_fl.lateral.0); + + generate_mesh(&lateral, Vec3::from(spec.foot_fl.offset)) + } + + pub fn mesh_foot_fr( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No foot specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let lateral = graceful_load_segment(&spec.foot_fr.lateral.0); + + generate_mesh(&lateral, Vec3::from(spec.foot_fr.offset)) + } + + pub fn mesh_foot_bl( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No foot specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let lateral = graceful_load_segment(&spec.foot_bl.lateral.0); + + generate_mesh(&lateral, Vec3::from(spec.foot_bl.offset)) + } + + pub fn mesh_foot_br( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No foot specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let lateral = graceful_load_segment(&spec.foot_br.lateral.0); + + generate_mesh(&lateral, Vec3::from(spec.foot_br.offset)) + } } //// diff --git a/world/src/lib.rs b/world/src/lib.rs index 6f47c7a311..41b8a54b36 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -21,7 +21,7 @@ use crate::{ util::{Grid, Sampler}, }; use common::{ - comp::{self, bird_medium, critter, quadruped_medium, quadruped_small}, + comp::{self, bird_medium, critter, quadruped_medium, quadruped_small, dragon}, generation::{ChunkSupplement, EntityInfo}, terrain::{Block, BlockKind, TerrainChunk, TerrainChunkMeta, TerrainChunkSize}, vol::{ReadVol, RectVolSize, Vox, WriteVol}, From 211f1276df29da44ee2d9c7541652335a284a1da Mon Sep 17 00:00:00 2001 From: Robin Gilh Date: Sun, 26 Apr 2020 01:47:35 +0200 Subject: [PATCH 02/19] Dragon work 2 --- .../voxygen/voxel/dragon_center_manifest.ron | 20 +++--- .../voxygen/voxel/dragon_lateral_manifest.ron | 16 ++--- voxygen/src/anim/dragon/idle.rs | 72 ++++++++++++++----- voxygen/src/anim/dragon/jump.rs | 2 +- voxygen/src/anim/dragon/mod.rs | 18 ++--- voxygen/src/anim/dragon/run.rs | 2 +- 6 files changed, 85 insertions(+), 45 deletions(-) diff --git a/assets/voxygen/voxel/dragon_center_manifest.ron b/assets/voxygen/voxel/dragon_center_manifest.ron index a4f492c4e1..bb906eeba8 100644 --- a/assets/voxygen/voxel/dragon_center_manifest.ron +++ b/assets/voxygen/voxel/dragon_center_manifest.ron @@ -1,45 +1,45 @@ ({ (Reddragon, Male): ( head: ( - offset: (-7.0, -9.0, -5.5), + offset: (-4.5, -2.0, -7.5), center: ("npc.reddragon.male.head"), ), chest_front: ( - offset: (-7.0, 4.5, 5.0), + offset: (-6.5, -6.0, -6.0), center: ("npc.reddragon.male.chest_front"), ), chest_rear: ( - offset: (-7.0, -4.5, 5.0), + offset: (-6.5, -7.0, -6.0), center: ("npc.reddragon.male.chest_rear"), ), tail_front: ( - offset: (-7.0, -4.5, -5.0), + offset: (-2.5, -5.5, -3.0), center: ("npc.reddragon.male.tail_front"), ), tail_rear: ( - offset: (-7.0, -4.5, -5.0), + offset: (-1.5, -7.0, -2.5), center: ("npc.reddragon.male.tail_rear"), ) ), (Reddragon, Female): ( head: ( - offset: (-7.0, -9.0, -5.5), + offset: (-4.5, -2.0, -7.5), center: ("npc.reddragon.female.head"), ), chest_front: ( - offset: (-7.0, 4.5, 5.0), + offset: (-6.5, -6.0, -6.0), center: ("npc.reddragon.female.chest_front"), ), chest_rear: ( - offset: (-7.0, -4.5, 5.0), + offset: (-6.5, -7.0, -6.0), center: ("npc.reddragon.female.chest_rear"), ), tail_front: ( - offset: (-7.0, -4.5, -5.0), + offset: (-2.5, -5.5, -3.0), center: ("npc.reddragon.female.tail_front"), ), tail_rear: ( - offset: (-7.0, -4.5, -5.0), + offset: (-1.5, -7.0, -2.5), center: ("npc.reddragon.female.tail_rear"), ) ), diff --git a/assets/voxygen/voxel/dragon_lateral_manifest.ron b/assets/voxygen/voxel/dragon_lateral_manifest.ron index d9e64fb684..63aef007dd 100644 --- a/assets/voxygen/voxel/dragon_lateral_manifest.ron +++ b/assets/voxygen/voxel/dragon_lateral_manifest.ron @@ -1,35 +1,35 @@ ({ (Reddragon, Male): ( wing_in_l: ( - offset: (20.0, 20.0, 5.0), + offset: (-0.5, -3.5, -27.0), lateral: ("npc.reddragon.male.wing_in_l"), ), wing_in_r: ( - offset: (20.0, 20.0, 5.0), + offset: (-0.5, -3.5, -27.0), lateral: ("npc.reddragon.male.wing_in_r"), ), wing_out_l: ( - offset: (20.0, 20.0, 5.0), + offset: (-0.5, -3.5, -27.0), lateral: ("npc.reddragon.male.wing_out_l"), ), wing_out_r: ( - offset: (20.0, 20.0, 5.0), + offset: (-0.5, -3.5, -27.0), lateral: ("npc.reddragon.male.wing_out_r"), ), foot_fl: ( - offset: (-2.5, -4.0, -1.5), + offset: (-2.5, 0.0, -6.0), lateral: ("npc.reddragon.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -4.0, -1.5), + offset: (-2.5, 0.0, -6.0), lateral: ("npc.reddragon.male.foot_fr"), ), foot_bl: ( - offset: (-2.5, -4.0, -3.0), + offset: (-2.5, 0.0, -7.0), lateral: ("npc.reddragon.male.foot_bl"), ), foot_br: ( - offset: (-2.5, -4.0, -3.0), + offset: (-2.5, 0.0, -7.0), lateral: ("npc.reddragon.male.foot_br"), ) ), diff --git a/voxygen/src/anim/dragon/idle.rs b/voxygen/src/anim/dragon/idle.rs index 94b461bfcd..a732fd3615 100644 --- a/voxygen/src/anim/dragon/idle.rs +++ b/voxygen/src/anim/dragon/idle.rs @@ -1,7 +1,6 @@ use super::{super::Animation, DragonSkeleton, SkeletonAttr}; //use std::{f32::consts::PI, ops::Mul}; use vek::*; - pub struct IdleAnimation; impl Animation for IdleAnimation { @@ -17,55 +16,96 @@ impl Animation for IdleAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - next.head.offset = Vec3::new(0.0, 7.5, 15.0) / 11.0; - next.head.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.head.scale = Vec3::one() / 10.88; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const HEAD_X: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const HEAD_Z: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const CHEST_F_X: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const CHEST_F_Z: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const CHEST_R_X: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const CHEST_R_Z: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const TAIL_F_X: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const TAIL_F_Z: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const TAIL_R_X: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const TAIL_R_Z: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const WING_IN_X: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const WING_IN_Z: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const WING_OUT_X: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const WING_OUT_Z: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const FEET_F_X: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const FEET_F_Y: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const FEET_F_Z: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const FEET_B_X: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const FEET_B_Y: f32 = 0.0; + #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + const FEET_B_Z: f32 = 0.0; - next.chest_front.offset = Vec3::new(0.0, 4.5, 2.0); + next.head.offset = Vec3::new(0.0, *HEAD_X, *HEAD_Z); + next.head.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.head.scale = Vec3::one() * 1.01; + + next.chest_front.offset = Vec3::new(0.0, *CHEST_F_X, *CHEST_F_Z); next.chest_front.ori = Quaternion::rotation_x(0.0); next.chest_front.scale = Vec3::one() * 1.01; - next.chest_rear.offset = Vec3::new(0.0, 4.5, 2.0); + next.chest_rear.offset = Vec3::new(0.0, *CHEST_R_X, *CHEST_R_Z); next.chest_rear.ori = Quaternion::rotation_x(0.0); next.chest_rear.scale = Vec3::one() * 1.01; - next.tail_front.offset = Vec3::new(0.0, 4.5, 2.0); + next.tail_front.offset = Vec3::new(0.0, *TAIL_F_X, *TAIL_F_Z); next.tail_front.ori = Quaternion::rotation_x(0.0); next.tail_front.scale = Vec3::one() * 1.01; - next.tail_rear.offset = Vec3::new(0.0, 4.5, 2.0); + next.tail_rear.offset = Vec3::new(0.0, *TAIL_R_X, *TAIL_R_Z); next.tail_rear.ori = Quaternion::rotation_x(0.0); next.tail_rear.scale = Vec3::one() * 1.01; - next.wing_in_l.offset = Vec3::new(0.0, 4.5, 2.0); + next.wing_in_l.offset = Vec3::new(0.0, *WING_IN_X, *WING_IN_Z); next.wing_in_l.ori = Quaternion::rotation_x(0.0); next.wing_in_l.scale = Vec3::one() * 1.01; - next.wing_in_r.offset = Vec3::new(0.0, 4.5, 2.0); + next.wing_in_r.offset = Vec3::new(0.0, *WING_IN_X, *WING_IN_Z); next.wing_in_r.ori = Quaternion::rotation_x(0.0); next.wing_in_r.scale = Vec3::one() * 1.01; - next.wing_out_l.offset = Vec3::new(0.0, 4.5, 2.0); + next.wing_out_l.offset = Vec3::new(0.0, *WING_OUT_X, *WING_OUT_Z); next.wing_out_l.ori = Quaternion::rotation_x(0.0); next.wing_out_l.scale = Vec3::one() * 1.01; - next.wing_out_r.offset = Vec3::new(0.0, 4.5, 2.0); + next.wing_out_r.offset = Vec3::new(0.0, *WING_OUT_X, *WING_OUT_Z); next.wing_out_r.ori = Quaternion::rotation_x(0.0); next.wing_out_r.scale = Vec3::one() * 1.01; - next.foot_fl.offset = Vec3::new(0.0, 4.5, 2.0); + next.foot_fl.offset = Vec3::new(*FEET_F_X, *FEET_F_Y, *FEET_F_Z); next.foot_fl.ori = Quaternion::rotation_x(0.0); next.foot_fl.scale = Vec3::one() * 1.01; - next.foot_fr.offset = Vec3::new(0.0, 4.5, 2.0); + next.foot_fr.offset = Vec3::new(*FEET_F_X, *FEET_F_Y, *FEET_F_Z); next.foot_fr.ori = Quaternion::rotation_x(0.0); next.foot_fr.scale = Vec3::one() * 1.01; - next.foot_bl.offset = Vec3::new(0.0, 4.5, 2.0); + next.foot_bl.offset = Vec3::new(*FEET_F_X, *FEET_B_Y, *FEET_B_Z); next.foot_bl.ori = Quaternion::rotation_x(0.0); next.foot_bl.scale = Vec3::one() * 1.01; - next.foot_br.offset = Vec3::new(0.0, 4.5, 2.0); + next.foot_br.offset = Vec3::new(*FEET_F_X, *FEET_B_Y, *FEET_B_Z); next.foot_br.ori = Quaternion::rotation_x(0.0); next.foot_br.scale = Vec3::one() * 1.01; next diff --git a/voxygen/src/anim/dragon/jump.rs b/voxygen/src/anim/dragon/jump.rs index 4d34b638a7..d699d23050 100644 --- a/voxygen/src/anim/dragon/jump.rs +++ b/voxygen/src/anim/dragon/jump.rs @@ -19,7 +19,7 @@ impl Animation for JumpAnimation { next.head.offset = Vec3::new(0.0, 7.5, 15.0) / 11.0; next.head.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.head.scale = Vec3::one() / 10.88; + next.head.scale = Vec3::one() * 1.01; next.chest_front.offset = Vec3::new(0.0, 4.5, 2.0); next.chest_front.ori = Quaternion::rotation_x(0.0); diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index b997fab2f7..c144141096 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -126,31 +126,31 @@ impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { use comp::dragon::Species::*; Self { head: match (body.species, body.body_type) { - (Reddragon, _) => (4.0, 3.0), + (Reddragon, _) => (0.0, 0.0), }, chest_front: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 5.0), + (Reddragon, _) => (0.0, 0.0), }, chest_rear: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 5.0), + (Reddragon, _) => (0.0, 0.0), }, tail_front: match (body.species, body.body_type) { - (Reddragon, _) => (-3.0, 1.5), + (Reddragon, _) => (0.0, 0.0), }, tail_rear: match (body.species, body.body_type) { - (Reddragon, _) => (-3.0, 1.5), + (Reddragon, _) => (0.0, 0.0), }, wing_in: match (body.species, body.body_type) { - (Reddragon, _) => (2.75, 0.0), + (Reddragon, _) => (0.0, 0.0), }, wing_out: match (body.species, body.body_type) { - (Reddragon, _) => (2.75, 0.0), + (Reddragon, _) => (0.0, 0.0), }, feet_f: match (body.species, body.body_type) { - (Reddragon, _) => (2.0, -1.5, 4.0), + (Reddragon, _) => (0.0, 0.0, 0.0), }, feet_b: match (body.species, body.body_type) { - (Reddragon, _) => (2.0, -1.5, 4.0), + (Reddragon, _) => (0.0, 0.0, 0.0), }, } } diff --git a/voxygen/src/anim/dragon/run.rs b/voxygen/src/anim/dragon/run.rs index af4c76a4cf..2165c07ddf 100644 --- a/voxygen/src/anim/dragon/run.rs +++ b/voxygen/src/anim/dragon/run.rs @@ -19,7 +19,7 @@ impl Animation for RunAnimation { next.head.offset = Vec3::new(0.0, 7.5, 15.0) / 11.0; next.head.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.head.scale = Vec3::one() / 10.88; + next.head.scale = Vec3::one() * 1.01; next.chest_front.offset = Vec3::new(0.0, 4.5, 2.0); next.chest_front.ori = Quaternion::rotation_x(0.0); From 6c8bfe8d70691932c907f2a5d75943db71884532 Mon Sep 17 00:00:00 2001 From: Snowram Date: Sun, 3 May 2020 00:55:14 +0200 Subject: [PATCH 03/19] Symmetry of dragon skeleton --- .../npc/reddragon/female/chest_front.vox | Bin 4556 -> 59039 bytes .../voxel/npc/reddragon/female/chest_rear.vox | Bin 6080 -> 60563 bytes .../voxel/npc/reddragon/female/foot_bl.vox | Bin 1408 -> 55891 bytes .../voxel/npc/reddragon/female/foot_br.vox | Bin 1408 -> 55891 bytes .../voxel/npc/reddragon/female/foot_fl.vox | Bin 1408 -> 55891 bytes .../voxel/npc/reddragon/female/foot_fr.vox | Bin 1408 -> 55891 bytes .../voxel/npc/reddragon/female/head.vox | Bin 3040 -> 57523 bytes .../voxel/npc/reddragon/female/tail_front.vox | Bin 1784 -> 56267 bytes .../voxel/npc/reddragon/female/tail_rear.vox | Bin 1392 -> 55875 bytes .../voxel/npc/reddragon/female/wing_in_l.vox | Bin 57352 -> 57352 bytes .../voxel/npc/reddragon/female/wing_in_r.vox | Bin 57352 -> 57352 bytes .../voxel/npc/reddragon/female/wing_out_l.vox | Bin 58012 -> 58012 bytes .../voxel/npc/reddragon/female/wing_out_r.vox | Bin 58012 -> 58012 bytes .../voxel/npc/reddragon/male/chest_front.vox | Bin 4556 -> 59039 bytes .../voxel/npc/reddragon/male/chest_rear.vox | Bin 6080 -> 60563 bytes .../voxel/npc/reddragon/male/foot_bl.vox | Bin 1408 -> 55891 bytes .../voxel/npc/reddragon/male/foot_br.vox | Bin 1408 -> 55891 bytes .../voxel/npc/reddragon/male/foot_fl.vox | Bin 1408 -> 55891 bytes .../voxel/npc/reddragon/male/foot_fr.vox | Bin 1408 -> 55891 bytes .../voxygen/voxel/npc/reddragon/male/head.vox | Bin 3040 -> 57523 bytes .../voxel/npc/reddragon/male/tail_front.vox | Bin 1784 -> 56267 bytes .../voxel/npc/reddragon/male/tail_rear.vox | Bin 1392 -> 55875 bytes .../voxel/npc/reddragon/male/wing_in_l.vox | Bin 57352 -> 57352 bytes .../voxel/npc/reddragon/male/wing_in_r.vox | Bin 57352 -> 57352 bytes .../voxel/npc/reddragon/male/wing_out_l.vox | Bin 58012 -> 58012 bytes .../voxel/npc/reddragon/male/wing_out_r.vox | Bin 58012 -> 58012 bytes voxygen/src/anim/biped_large/mod.rs | 246 ++++++++++-------- voxygen/src/anim/dragon/idle.rs | 57 ++-- voxygen/src/anim/dragon/mod.rs | 34 ++- world/src/lib.rs | 2 +- 30 files changed, 192 insertions(+), 147 deletions(-) diff --git a/assets/voxygen/voxel/npc/reddragon/female/chest_front.vox b/assets/voxygen/voxel/npc/reddragon/female/chest_front.vox index 26f3dc5dc1bbce39f181fb2db9a2544e877bbe19..454d5fce85d72c0419cedf221cd9365becd58440 100644 GIT binary patch literal 59039 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 b-F{YYumWb-N$Jzw#Xq6*y86I?1a$uxz$}MF literal 4556 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 DY)G-% diff --git a/assets/voxygen/voxel/npc/reddragon/female/chest_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/chest_rear.vox index 84114c625a81ce45c6e0ef66a8228bb065cfa8c3..e327503d6fec6cd1ccb30f09320ad6c60dc93814 100644 GIT binary patch literal 60563 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 OPyP4XfBJmFx_<+=E7ns0 diff --git a/assets/voxygen/voxel/npc/reddragon/female/foot_bl.vox b/assets/voxygen/voxel/npc/reddragon/female/foot_bl.vox index fe7d64b1d7c737a7f7e23847c19b1b9c35fca185..4e4102f5682a031cb1d10627669488906770c542 100644 GIT binary patch literal 55891 zcmdtqX?Rpu83*t)OCXRgEMZBYVagtsa3{%-gf%QF1PDt46jETAWNs#xOy-U=lMQ1l zq{UK7ODVD_6lg_S5ek@KYE?=R5k*9bwYDN+t#!9*t#y5S-g75`g!uHEAO1I--1DCM zo^$T+oVk|=!o%`KD_lE;5JfWz7s`{E{-zKmg{1{|a3GHaS$f9LD^`{kPO)*T5S(mt zI$CWGN2@~?yVGIX9kSSE-C>upz18WowK`?pA&XPS4q1e36Ee0r?50p{GCx6%V7Il} zxH#>mEkTYTi-U_@=E`EX$zr#gcAG6~bJ|Rs!zSmj$uZ^GVKW^Z+vT~N9D_@OtS87e zS)6>9ZG!8GB4+O)VuH_Hy4zx+n=IW$%*jR8?G7RDPZp<;a|k(ykbPw=i(M9nEKZKQ z%UBkNETWr?WwCRyiKtzOs6*DB96OwH9H(3dS+|SU(9+_CgVieD{Km^l@gu&(A~dIX zaj$qvTN|I{*n-Cx8^6Xe9}Zb~2(EKpTdp_8yQsM|S7xYW?&4&=E)P!UqitxeFPO2i zIF&2$gRgOCZ^&1zbD;4Aw`OtUZCUQlS$vDPWo35G;yb!6E30#sv#YG^&RKldw~giL zoYk$Xtcjhox_6b8!&$|1X3h|NL-NSY&85c1M!KRxLe9a|q3!KAQC9IaD=IP}6Eb`(uJmKPhNpS}GNe8BVJvW>92y9xWf! zpN#B5v~|u1YF;ye3Z}Se(S3PTx_AavtzAg#%~IO-NEJ07-b7cnJHH zi3axVO)i&<-04GUV#Y|Cl$lQ39v)1`4h*F?E{vgTm&VdwIcM`BK^I>Z^!96l)*GW~ zcT*OfJ35Qrd#i*ZTYAyf7n143?*GfmsLpXNVv zno5peq5S-Ox*=a+B2gClfE-r@U4O~Czw7ez^>NqbBS>RYXY%WhrrE;kTr|p1=kd15 z)O%S()kheQtMl@ad(=74-l)#pj}JcQm2XhzaeFRP-@8*N%VxA+Ys=|$mcNBAUGS>x z%m=@D__t8??u<2r^+XwX{YFJaO;qRCiMLKS0+lh&bMs5c8!>AFmHYzKGTf?HG_03f zu}5{_*c*9Iyq4jyLbsKfYejWdl%po92-ei|eW)JZ zpg*F5TQ&Ul#?i1HN5k8Uqu~!Ej)os>91XvPa5Vfv#?kbE((oTRarPz&O2hktvp07_ zY3_p3+zqASzsSLPZhAv$`ao&=LTUJKD{-Eieo&hJP?`Zynt@Q76etb zrI`k$nGU7NhtkY|(#(X?%!1O)hSC&3Y3_s4%z@I(h0+v4Y34y`=0j-~KxvAgH2j~U z;QXX;5tL>zlx7K(rWi_70;O3BrCA20Sq`PSA4;Wl)-OD2*RVqeE#bpfmv}O(m4ZfYPjk(o{idf>4@jC`|}TV?t@dP?}Fb zX(CXXD3m4!rKy3^)Iw?MpfvSRng%G%dMM2&p)`$9nomJ#9)!|71f}^jlx72zW+RlQ z2}<)Yl;#mA%_b<#XP`8XLTNTbX&!^pY=P1|4yD-&rFjBM^CXmJ8gLQK`70$P@3nUG+%(y z9D>q(5lV9yO7lFF<^?Ftm!LF9pfq2G(j0}-9D~xl2&Fj=r8xnmISHlt3Y4Z9O494c^BpM71t`sTp)}uv(p-end>=}42}<(=D9vRk%@3h8SD-YnL20f+X?_Hyc^yjg zV<^oVP@11WY2Jj=yalECDU{|Kl;&qpn(I)SpF?SGKxuvfrFk1l^GhhrJ5ZWmL22HF z()=1q^BXA5Z=p25gVOvSO7jOO%^#sOe}dAy2c`Kll;$r`n!iG6-iOls4NCI?l;-bH znh&8g|A5l`6H4B#j34c^)-0? z7CO7Vp{l3M&-S?7S~lBNd$pl=Oyq_xSBNhJto6wCs9DV{uV1Z4TcrBAHEU(vZjJAC zcKlwsXZyXXPi2J}@V2d$HBOh?qZ$M4>)z#NtAT@hD5@&qh`CPXtA(pDYk7!lPY?Os z>kI3VSWQH?AekO@CuKpOU-yPopIaJkejpdd5j=c5LRBh^V702~^D1w+!wSy{ObAi@dIjoHh6!% zvC4=Ztu%vbN!>ih)c717KB}s3KtBB;znZSx44M(f=V~tXOHEzb_Nc3YM#Tr>^=w}T z9@SeGxH$-4(OmM2=bjYr(qV3E!TbTei%zPk&hW?LFD11~tK*|^$M%U;B@i)gxqog_ zQ>$H!hJEEmNNt4mu2aKWJFjJ`6!}PpgT4l}^L)D-;}h}4_KB>)^jJ&|cFVGRhe|gPh?02q0G&MF0Q* delta 347 zcmW-dyG;c#5Jm5NY%hZ7RX|J$FF}L^K!zv+$-!>^Xn}-AAaEZv#2JF4`;k3k`S&M2 zu1~KoZ?|8Po*o{b5xuw1)7>Rntmv@}yv6hm1K*wOOU;(>1|l0IU6P~w%>Rz_8DYa# z6wPO(hl3S^v)~&HpT5~1&1Q7Fu*4W@EVOAI9cVD5NPN2T@D(!%Y?0N0@c u?_E3)n%E(Bh`VHPFi@T;oB|9o$l%4M-LJG8UX^A*b^UpN_e}x`Ij4Vm&i94OeZTvD z_ulupcizi^a9FW$rE{kcV*a#}1+o%T-x6YJNonyN9LOUNj7d3f|E6e zqgAszS{*$^t6dgNh^S_hMV{Ma5!~KWw##CZ#gQOmSu|N}vdF<(?G72sV&h_$=d#$j z)?|JUTg=f@!~_?4uJx3qmpqq6>n&mqK2NZ4DtNzfdcEH*9gNwOnVxV~mMktz10Q>I!|zG7B}9OzdWGyR3Z9S~6?;G{H9{kAi{%YHDht8`}lV-gl0MC4EF6BqdQ>+k8%? zqa~+k!CalZYbH`t?OZywxr9z__tL3dVah)hqP|7Rl(NoA&WFZO=Keww#R(*;`j9x- zpTxOj>N{W1plU()Y!fv0xS(EDg6?b%-hX>3MYi;%tuH3giOVT;jfVc;{W&=~^mP7y8t*zt6E|<9l;#vV|D2$! z4+=VxkwKZ6ndI(2ndZ$tNus%t21W+b>0Q;A6G&)3IYmyaNgNuAEGKbm3-t9t$@Q`O^a6RF?w zh&mr(KB4LrBloDfP-{{(_v3@>!txEO9=qo<4Y)gna%^VDwf3AYwfq*kY~E|KGavls z;cubp-5F~L8@*)U@tGABHBp0KC!RXP^jF3>&&4kxPb5_1ujCh?p5;=#qG6-liruOM z$DVM!guq(Eu-CoDMcv>{L${=pp1 z-rNhNNrTc1h0-{oH1|Pi(xEiNpftmwG$WuiBcU{-pfnj!noKCoXebT;Gdr9=5sZb> zjDyl-L21TAX>=%!3rdp>rOAQPZ15lckP?}Xxno=mugHW2)P?|MRnzc|G50qvd zl*S9CDTC6KLuq_a8UspG0j2RnX)2*KCX{A9l%@(w6M)iGLurCgnh=yG45j%5lqLeD zi9%^&P?{PjO)ZqB4oXuGrD=fDG(u@U38iU*(tHX^^AMEgVJOX~p)?zyG#jBb%}|<0 zpfry{X*NM=J_DtB3`(;ZO7l3BW($<&2`J50D9w{lnx~*N+n_X0Lus}{X`X@7?10jI z7D}@dO0x?}vl~jY2TJofD9z`gG<%^m`=B(>LTUCxX%0YX4nk?3gVH{Bp)@Z;X}$)fc?C-Ibtug@pfulv(wu?Pyb7ghgVMYPr8x_w`4*Js9F*qUP@3~l zn(shqE&(p-nq{2WSi14{D?D9t-inqNX`-i6Zq3QF@Hl;+n^ zn%_Waeha1f9hBzxP?|qLY5oYM`4g1peJIVJp)`Mi()<-l^8u9RZ%~>Kp)`Mo(tHG^ z`3IEdpHP~AL23RCrTGt(=D$!Hg3<_^5O+vXf-Ig`L)hrWCqA>Hq9$te6~r`D|if#8J|}LRf)1G+wFG7i&_S6&>t|kvs-t%bv24NVt9E{JxjN4*k?woIwsAR zSNPzOJ5O2@G(Ub)W{y(>bT@=q7O;lk>0C-430bSm9S_7i^5%A)+Z(I4cGcV9@mc8H zj)tl}GC$Ytbm_TlSMAlN(K(SDx?Lf@;J4PJz^!Ht<#>E*J=!DH&!t-{>vHLQuQTKK z$~`;oRedTeLVi#CT3O?CyFIGW-?8r9ZnhdYU<9M;BpeB?SNUq;Dnhk9M6SEH{N3XX z8{tdK z)l=rbIS60To$`z4o)GWSX>M!5e14;wPO7QS^u^*YCACUx;-hfKj)~QYKVsf;|J_5&x!ec@IKlNlRhbuy delta 346 zcmW-bu~7su3`M2?W&0S2t^#r@AYup!fQ+FCW;VFZj}}O11OoR#Lp^3{`#Rp8TTS(v;g|`!ijxjNZK%~3eK16kL13tr8yURl)R4=A zdFLLAy%y9GBsC~vKgSA{Q%;uS$}O?6=_P2;>$u~F8)sx=9rC0htm&bdi_+yWZ#Qio r>;Y0`^Q^{f*H&Hk1P*BgWXFrkB`jq~!(8l5&HRM<5Loi_;G6mf(eybp diff --git a/assets/voxygen/voxel/npc/reddragon/female/foot_fl.vox b/assets/voxygen/voxel/npc/reddragon/female/foot_fl.vox index 9d95cf5525024e3d8626cf9257c746999678ae5a..acd39fbf047a0d592f891b2ec25766e2970585d7 100644 GIT binary patch literal 55891 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 delta 347 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 diff --git a/assets/voxygen/voxel/npc/reddragon/female/head.vox b/assets/voxygen/voxel/npc/reddragon/female/head.vox index 0de9789f15d4495178dca869b50b40272cc46005..f653816440c89eabe056976b827396f6756be5a5 100644 GIT binary patch literal 57523 zcmdss30Ia3MiV0j6*V+jG4?#XA-uiT0pJ1 zB2v^=#ibUlbuG}b)+$a`t=he|wbrh;-}`<;WIM+{d(IvF^4@*#-uv$7 zz2EPJ5D!bwI=^@R`GoCQMccM8XLg(Dn;17?TWBqAt5nIVgu+k=3PKgCWI{H#9&E^F zIUd$`A+#>!c_k<4?sbCRUMJ-4HCV6>*p`bLT&&?hXieS6dai}q9Ms^H0-gyL8~H5A zECqPXVc8`&jD4ztD!C1y1vmE5z?g~Ff&%CVFdo2sfakEcCi}4vZ(z>@6`1p2*Ki-g z-kV|AI12~1fqgZw#|G93un-sEILuqfYa`A?YgWSttx)F2p#9H8JME z&%wGbWa2Db_`0aUMvV>&bz3+?2X)$zi+m1ha*)gB7Hb%Yb@(4amiqi!m2t z4(xzuW8a`46oRUuFjNIqa*I5bSOen@#%#0}R4|u$CQ$jkOHePS7bjAqeZZEX27Shj|NmO~lz~?P~Z`A#V-xxh%|M&cwLExe#L@ z*2b6tKLhIqARGG@fNuabn5fZUp>7L%WuQ(I^#+j7Kutz9e7MCL4q^?|W}r5MbD}l} z^H#N!voLR>CI`N@?PCA&zErqHi~H3sYDHU#w$jZxJkDcP7{j|{VccYY$gIFPE9jy= z$c6Ck1$aK}77h4Xh%;EoVZqmguM_r4E__`0x`=TRYrA-dZ776(*v(mC__J@w!!v_- zyautT$3!lZ>qBe9*MzUla~uah+pa*K3e<*L!{}FfxEF%3gLuy&7k$`vr~tdY%T9a+eIoKx$zBXiFUo5mH;*?q0qEuCjjrvufvQ-(d163``2)8IR++rY)2`Mww zYH+=ffm$7|w*uo#JGXJsqIjUvO_Ia5PXmWDJR%!pf%aX-Y7fRVxToy z*jMFLAf}?#Kz+)nY7H<4?=$Z)d<>jZ06Zq|H}=4(fDK;5b zuz6tfz~+I?1DgjX5A}Oi7;UJ4Wiw<7qBZmFlQ$%oEM?Qg_EgoaI<*8|Bj%ub3p`jPm zQtc(ta&J{M&!{idiFHxx@aM- z&9%~|%e!dD_A6-5Gq=%>TbI%9doQL?C`3mM96+_TwGlcif}sg~t`W{j#F9=`nQkh6Z}}f$8-AYfGqbbq!s6-ynMArJ?jX z9ru6dZ)j+s8=AJ!$BWae(XQ5^v>AJK@cy4Rd9%*dvg8FS zbP}z(X*+GWdk0yzg33exytXYln$rv>u5T`)SW+X;cmG~nEV?vF}equZq?-lE${MxSmujz8Q^ zYFnqf{SBQWw=x#eA~Ow_`eh?RdUC!dFf_oh$fegEkXAI$eav z;;9IaO^DRRd^75MHv85p-)hneb!2*1a~(P&o@p;=V}BaHz2(p_yBr!mW;rzcK+2)v z7h4Vu-$HU|_(GOL!+#AZhbAbBCM1f6pE5a5TBRtODp552BMmuE8vjL(92)+SlN_2O zM9~ZsMZaFD4HfwG|i%DCW)dsMHJ0sQ8ZIT(VQxZ<}^_> zr;DPQDvD;BD4H`w(M%UbGeZ>3Oi?svilUh%ie|PbnmM9q=8B@3CyHjiD4GSLX!u{~ zlJk?ovqaIHEsAE5D4NBhXqJegIY$)DxuR&6ilRAB6wUdfXz=gW3Hp;wt0MbTU=il$2xO-2+= zwMZ$MbTU(isoujG}nlt zxmFa-b)sml7e%v46wM8yXf}(Yxlt6&7Ev^x7e%vG6wOVdXl@oobBidNFNmV~q9~eM zMbX?Qisp7vG}}bc+#!nQPEj;>iK4k%6wQ}J(cB}7=F6gJwu_><~q>QxwfEQ8Zr{MN<+*^Oz`_Z-}CK zTolbWMbSJVisoCQXr2^B^OPu>-J)oo7De-nD4K7JqIp&n&38o6JSU3gyP{~G7e(_u zQ8eEdMe~9vnjeUwc~KP24@J?uB#P!oqGq%`2j4ek_XSRZ%oQ5k<3C6wOaX z(fmvl&1<4)elCjUbx}0G5JmHbD4I7#(Yz&!=9i*q-WEmkD^WD>h@yE{6wQ00Xnrk< z<~O2fek+RRccN&1FN)?5qGbDYW}-)@i||-H72&Z7 zk-C^~Mt#p_-&*BcO?sh@Oz�Lr26j?FDTV&N^f6NR0Bwfci=FTFLB6JGHbT=n7$|J{GGjOK(FWo600PI2NgmMRb-#A(`MsBXtqK;P!N} ztAEiZ%8lxUM{N13psz6Iq;5hARq35YbScT{Zmb> ziMRXEjr{{%LHIYuYNL@xX4m80>EwZqJaE_@;)#^MAI&knYOW#PuJ>b~rQ@Oze`ll7 z2-iBJTq{TR*Q%e&j$A6fZ?F73hdmxWnCjp6!ydLyoJnSjx|1*DF4q2f<2rIHIYncv z0>8%-`DCG|w~+Kf>SMZ+6`4ePGM?2j`we{jKrSppaQc1--RVeYx^*YHI-lbN{%NgD z`xWb{L|d}>@l-0&%?DFoSI^sX{^2s~lUb3;<+?RNcY3vdl>U(w+Y%Z7;n(kHf?rVo z+2Hey_jDGL#m-ztZ)ud*IJLaS0gtMVP2ug&w(I5Ea+zF#;hQ71`aivN=e}26CmLN& z#QWL54V*Q;BK2_+o{7}r7q5LvIplz~{S9kRB@Yv%hgPNAd&-xR-lYr6SvatNVckg; z()-oVLwad_ip6}QEuGZ|;oo&St$*^7dhLQ&I-g0b(I?O4t}iddll=?%$&x)iNVea$ p=_BngLZ{GH5?~)&D^l^c1FVF$G^RdDj)~Udmkw@AW-{y${U6CTPIv$S literal 3040 zcmc(gTZ~m#8OPUs?{gcV4A6lJBZb01E!T1pibDb0fkLHN>^V}>Y8yKe7%~{rl8J_n zHey8)36zA2Xb767*peA?j3G!G(lj9r!N!mn(lkbW^}!h5{{Ge>`p_32J;^WM`mXC+ z-`;zjolic~d(s%Qb^X9Lgt<{OX2(ElQ#~vEDliEqz%$L(z?p&tzrR{ztaWW0AwdD9 zYbWFP6%GOiT+Oyq6*|(jT{VNR>aGOV5$S8L9l+N-c7MfJ z!vS9l`260;I%1FL0U5G%rX4&4h>)N#?Fc^05*>V|TC#ru$O@EY+oj^ROXY1Bi`yxK zp3p;u9xCin1!U~3*{>4lEzv`27p3Pck$M4qyU4a`Cbn&0P7ZvQ7RkApW5O1Z0SeXy z_5y#AeatrIxD5G;nHL4V65ZrAF#8zLc@_>mG1tV56Z;ey@`{{?KTy|`7m?8tgG`2c zl?;A-9=pr6$Z_OGY>qg`z7`_S!V+ug!PBG5(0AY&I{Nfrspsg)QOjq^9*JC+pEQe!fp;(LOJK2C zY!;hCFUrW=AVCBR0UY=&spHuLyTj&@0W52a-Qu^|M-89jd>V4(J8IbiUy04+HL#Zt z=6TKyROSvY!IsCz03gM*mxmFN%>@#v9UpY!R{Q!mzt$u+1Ka{ZhW${~;6 z;vW9a(D{dNuTC=*iHBp%0UL;GQnHvn}6(<^HhwPUgP0 z*jN;>Yao@R$yW+UlV*an|z#4n%Kun$Q1tR!5?;}J=;K0{8A4KqV zzDY=(_`GKSoZlcHLW5lJ9dcdn*E;_>#CZq}?g9u6^epSlwNbX8dhF5lCfxm>UbSkK zMn*>T$#J8{-@LB-yZ@zsba(68wXMp(w+F_xZOdXk|Lhu#9NePuBLf;g{=CLd?bpij zAx-R`s-EY1)%)#*>N~qyW>b{eQw0ZADwGL0#4=#U38%K<`pD_B`MWa`4lDmDnW)9BQoRI}uG1jjc!`+&Fbh;Lt zpQR=5&(pMBMsp5R`=rs@t48L_?0=|~IngC^sar?pP11$MQ}odzGo;O*)d^#C8U6@= zffFwqUHqxhwF^ccyo=s%bZ(PT`zfP4-!N*Szr54v*bCSX8g1w^+P%u?;6|f2uy0>J zU4xru>(KW3I{D&KjXb?lCtup2Yv2Eh{&s#)3-6z*wM%Dd%NOSB#hoj)XS31hvqopX zWpwq&Mk{7c*T8}~+O^^#4R2hnoeQRFaQO@!eQd7Ab}!PVwM+Em7gwwGrS;nL+%_E= zYU$Yb_Gs+FYr6H`n;JW_OV@t&P1R~O-8*@bdV71dq;IxXJoJD*zqC)szI&f8{(QD> zf3QGzK3u3X>^XMc=*I7i{`?1{Lxc16#^^F#e|v-e{-+%petn{j{<>T5-t5sG&HBHe zf7!BS`pL?(TD0Vx)*N|NJ)=E({})Cdebwl#`SaD+*QbZ?c|=baA-Mf35KK#vGU2gU0IJ5fn{MW5H-l^5xaYMr|Nw1u` zpwVBB=|`8|)9K&e(!=|YXx*!4wdH45wd0*z>hJH@Cq^i zzCtaW{;0BCXZLsH)_H>+`8m5rlb#;#tmh8?up@UqaJnN`yOEB}dHI*+>aQQ}$Oli~ T)Z__0T4o3T>-$g4r=>&YevlA^rGY|M*R~x#ygF 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 delta 725 zcmW-ey;%i82t~QT{=H9=SAn^y4Hz2eWPWzDHJI3l!7IWxEW*%pCtx`+aA9VDZuNJ6 zeIFkWUlH;8{PKp2-}UqQc&bJ!F%3;ie2s#Oe8Ez4-f+VK2OJ})32K6xh8u3{#WJd? z!(^Y>ZboNk)~=Bo@mAy1#=y-929PM?A}*TbMmLd9^6C6ayb`a(D?=A^;2FNK5OKf( z*Frxgd$H6)FD9(0t0hl9+?+r(3C?MVyPy$i7HZC6!GaUc3;sgg1wOo}^DI%kM%l9r z9B{x&G?M=G<mWX-N9^bdV>wmD>Mp6I( diff --git a/assets/voxygen/voxel/npc/reddragon/female/tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/tail_rear.vox index 0d401ba908eb07d1e96c37e96dadced1e628524a..7bed628bdf2a812af6ebc595a611fda017c16656 100644 GIT binary patch literal 55875 zcmdtqX?Rpu83*t)lK_E0%Mz9Z3RCv5ggZ%wBy0^^A#B55NP%IJxtUxtnHeXOkYH?u zv{*`MDMc2A0>m;%$rIrDk`4dSpvS2INiai9j9f>i;G4%IK$U0P7Y_X z*P)WU4hJV^l2@fTy{ePb>*(b0I#M_#alRej+jC0hy7rusxLrHGCv%^6l6Z_{PDz~F zCwZM*@8mis*EzYJllwS%Tt^DG?Zjm~zUnNA5Cb#|1*vD{@&9djF*uLJkt{j-4Dkb*$K$UoS7?4=}6H@nm5}Z|H|=HUo)FdZYrXa z+x&ELXO!|zMyP9HFG^qSBG&^WDRW-|sp;)VRdgbCpgXB^y{PM4MZGH(_1mgw)GMojAuV}$`MI}cS)m`Sk3o@v`HIN3^kD#%Q zh155eMgzBG(1?Qr$bEho^qdu+o^*9$ zU!qxe({}!}o#OO5r*}AQuT^yPDMe=vDY|f+<3dFTrYm}Jp`vR+Ma3M~E>*NOz~wcH zre-Qym9J<{ax(4W@&&mWWKADP>lO^B9cDJwFUg}FIWf0WBTTi>%zfv}MK+YFssjrcZE_ z_uc|3oU(_Yb5uE{vdSmqyYap0n|wqKhvpdiym+>#X6lt09NZ9hpk+y|sv9o4eAM z=hNu;<#f761OBJKW}5oH_;Ye{=*hf&G{${^#&6m{=?&?0{uxDA?^kqq_;AY1%p_0u zi8N>C2~rK~sAsGvo!V)i;R6}`+3DY(9vrfrj4@FPY~DzHR`sS!FASkm#p$$-_p0^& zPa3~XkF|W!MT(UZ)$Ke)4bL{x<0sD2?pLmmC%TCyZP-V%pFT~Cj$NU`!a};iFEEwD zi9VpDD~hhaWUuc!f4)Aho*zLPnK4CPe>BMv)%Ur>EPWsC7*E}n#B_d$^_add9lBfJ z3!L@(F8$<^dqL@XeIK>^GWEDKopKyjb6r!LR(JlAxp>a2+*vMp^T?M>{qBs{Ma>ir zd;zPhth&mS*NJbfX$8yU(#|a}Azv&~9W0j@ppoU)y{e*SsU3TC2Z?>rM2Wm|d{!i8 zhdDa*$MtZAl=*^&l#MpBJa*`|Tjtx*T06?q6P1OkYh@j}hc6U}>EKq4yuEQWV#m?Q zG2>|D1Bs)N2OCEtZy_9wypVA;9icRxpfssa8hK`Lo|`UE8u`Wy&e_}vrIBys;G9i2 zC{1@LO%EuIe76$kx#?_f4W;P=rAdd<$WK^s-f4ZIH1dNvoU^$LO4A=oGXP5C zg3{a#r5OmN83d&n45b+Yr5OsP83v^p4yDP2(u{!8$Un2g`5VC~D9vanO%{}943x%z z(zu~C*-)AsC`~Su#sj4p3#G|}(&R&F3ZOLOpfuy5G!vjS6QMMdpfvYDX$qkdD_xgSci0!p(IO0x<|dFfYQXEG*wWVIFzOu zN>c-+Sqr79h0@ePY1Tn$J_)6%hthlsO7j4e=0PaUr=c|Kp)?zyG!0OihoCeMLuocb zX+8s`c?3$c2}<)Qlx8!O<}oPE7AVc*P?{&8G+UuGPeN(7L1~_X(rky)d=^Tx14^?K zO0x?}vl~kDIVjENp)`A-G<%^mPeW<;L233wX%0YXo`KRl3#Iu2l;$9m=8I68Lr|LM zpft}zX}$!dISi%wGL+^Bl;$Xu<^?FtF(}P(D9s5d%~zl_jZm7CP?}Rvny*4>UWC%T z1f}^Jl;&k9&DWtc-+UqETzhSK~JO7jks=2uXfccC=DhSK~7O7mMN z&F`QzzlYNN0ZQ{nD9xXsH19!a{tTu03zX)sP@4ClG=GEAd;q2SJCx=_D9t~hH2;Ls z{0mC+Zz#=wpfvx5(h!tJIh5+mqIR5o@w%v)BAI|yR#shQc98s9(+ZZyxtVgempB%w z4wffz&d74>UR6=E)Q&y6gT%gQq9j?mSdo|==IGEL*TWf7<_j89HrmMY*rD5QnQupH z?I=%AR2HhPm38PIzEB{hgP3>9tU+8Vmy=VoM9*c0YjihRF4Fs2Ph_$4ncN z?a?bK3Hbx2FRc6AQgHJFIWK{b;hPaUQ)Y!Kb;hiXMq~i{v}!DS#k$I0YF6E>3i>PM zV6wBaWqX#jHL^aLl29a4sRfl*t$mdCkyVxYL-vPXKc9YiK<&?loUbol9y6=TBO$$| zZkc0ZVvZIcRoyqpPk%U|rz?$wA~C_|8!r7@PhH;hsOy1-B?glHY~BVL)mIX{If&F4 zF8(ERk4toEF}J;8fuPw&CtbAG3d9pHCA~{46QfAS=81JC7_)9!zZB`I^(j_G{iRk| zAB6p`)5F>)Z)EEx{76Sb{yKf~vfK@ciKMc5B6~119_PVs**1No&5O`O=*VQ)&8Q^k bD{T?^b)=d4B&Cnr#lLjtQZp2i2JVjlowES! delta 330 zcmW-cy;TE241{N-J>QQ_;tHJd2&lm!0Vv}U(2Hvzp%L5x4N(H0E|{GejaIAuz31O{ zey@+qx1`tW%NwN6>FfM-JC5>0mQUcA6;o7Xl+)!2Z0H4^!AdrRjlKn5xwABwv4RcE zSt1vi$V8vGBj$RdH>oi{+{n7w1Ho{sL{VrFc(1_>Gj#_UaNxrgt$WeYz&H1!yQilg nJa7m2z`{HCNAN6Vp%srDgqRQ;p{-HE3$NXa-)8+h=V|-{d%_{m diff --git a/assets/voxygen/voxel/npc/reddragon/female/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/female/wing_in_l.vox index 4248691c504188886c549aeeb41f1a43f1127a17..9bb52f6467d940ac077a47f0bcd82b4edaccce89 100644 GIT binary patch delta 1813 zcmWmEx0&2V00z+Et%LV&-5H896(~~;*9rpWNEzW%FKU1_C{j6k6TJNg17LP6e*8TA z_<8vIudQA_Lls>=Ln%u+)oZBv?d5y;ohFvQDDy`YzK3rwpWzq2^1(ZAyz=D1of}sc zW+p}k`j^iwbP6pEH5DZVITnPLnDA)U_FoLKwil{OYF2^;@wGlN&6tzYbbw(ETM#tH6-S8Q@(IBJAK%?1U zX|{0<&0xBtehn2bhc$dT?BV6OhXY5A98Y^Voz`$V@8Nu2!}+p@%ViChM5eA&^_lyb z%+=-Y6?;gEH6-O8(sB)HwTG-)Lsm;Ol{S0W($)j52RfDH-5TBh|sUnfDvNhT_Ihdk%c~bu&d(+=B&@$36S(;kTvXYA| zW#RoomT^Yqos0*adr#SK3a?(st;w4_t9*|)taHae%Sgjy?Q3Q#O7EAli_0Z%Re#})-u~G-KLafzx&1K7LRK2DY_u`{i5%1w@EdEhIa}k| zmuz-D$<7O{jnc+7jb)8C%8kYv^^NE2$VP0uQ(4N&btwx=kW(m^>N4%8Br%<^gv%-Z OvF~{Q&!3ln|N9@LOZ{H} delta 1813 zcmWmExq0J800z)mQ4(+BzAsYJYF&Xd*PvDqY|eBee(uE$Yz>ZFj^6~2|6l+N=ftny zn_s^-fB$vw+ON<@-B%doAoFAm9Zyd`!#CPk{-#Wb!q4#h^c7xsWy_8|2acRLb0Hxm zBd4IGdiuJDTA`t(qi0}bVrJpWjW^!;;5(oE;18yB4IBBq(YfeZ2cs9Aj9zs#+Ujhy zyX*0eyb8LJ(iH9FyZWuHOn*&DLqSV! zX*!w7UZ!%8qxVNS#2J-mW=_=Z9c6V_ICx>QCVTm&au;t{=bDm+f|lIccVzSo-XCNg zmrGulI5Rr7C+`gMD0_KOe`8N&|J-XoB@G3W{gBI1_8RYPv?BhAEY*$j!o-=`vnLjg zTsctfbc&LOB3_$`T=ueyZD!WLj(3MIdP8HoLKgEjVe@*PEG0fG_sJb%<0JJNf}6JP5DK38b8aKg)28I$FQb! z6dMX!ayl~lyPuSSgpmsqGYeNr=eVMvCZ}<}Gug^ib|mx+j7-cdl)eEK1vNSM#!p5| zO6OzIGboQt%#=PH6$LdpjTy*fOGnS(BQr87S2o<>nNp6HqL3GxJhAx_dn9>z+(T+j zQx~bq%o=CDWSQ$+)?R3AlqRleENiq?ZZ+1bZ#~~dHe&0Y-ct6i2RT}TiBWk_H*0_4 W8q*28a(jt?>^oll^XK;8|NaN000g7} diff --git a/assets/voxygen/voxel/npc/reddragon/female/wing_in_r.vox b/assets/voxygen/voxel/npc/reddragon/female/wing_in_r.vox index 10a75b0e8faa0744eab0d325bcc066bad64c4b88..ab80dfab8992af94f5efbde0861a5ee8989dde2a 100644 GIT binary patch delta 1814 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 delta 2479 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 b-F{YYumWb-N$Jzw#Xq6*y86I?1a$uxz$}MF literal 4556 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 DY)G-% diff --git a/assets/voxygen/voxel/npc/reddragon/male/chest_rear.vox b/assets/voxygen/voxel/npc/reddragon/male/chest_rear.vox index 84114c625a81ce45c6e0ef66a8228bb065cfa8c3..e327503d6fec6cd1ccb30f09320ad6c60dc93814 100644 GIT binary patch literal 60563 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 OPyP4XfBJmFx_<+=E7ns0 diff --git a/assets/voxygen/voxel/npc/reddragon/male/foot_bl.vox b/assets/voxygen/voxel/npc/reddragon/male/foot_bl.vox index fe7d64b1d7c737a7f7e23847c19b1b9c35fca185..4e4102f5682a031cb1d10627669488906770c542 100644 GIT binary patch literal 55891 zcmdtqX?Rpu83*t)OCXRgEMZBYVagtsa3{%-gf%QF1PDt46jETAWNs#xOy-U=lMQ1l zq{UK7ODVD_6lg_S5ek@KYE?=R5k*9bwYDN+t#!9*t#y5S-g75`g!uHEAO1I--1DCM zo^$T+oVk|=!o%`KD_lE;5JfWz7s`{E{-zKmg{1{|a3GHaS$f9LD^`{kPO)*T5S(mt zI$CWGN2@~?yVGIX9kSSE-C>upz18WowK`?pA&XPS4q1e36Ee0r?50p{GCx6%V7Il} zxH#>mEkTYTi-U_@=E`EX$zr#gcAG6~bJ|Rs!zSmj$uZ^GVKW^Z+vT~N9D_@OtS87e zS)6>9ZG!8GB4+O)VuH_Hy4zx+n=IW$%*jR8?G7RDPZp<;a|k(ykbPw=i(M9nEKZKQ z%UBkNETWr?WwCRyiKtzOs6*DB96OwH9H(3dS+|SU(9+_CgVieD{Km^l@gu&(A~dIX zaj$qvTN|I{*n-Cx8^6Xe9}Zb~2(EKpTdp_8yQsM|S7xYW?&4&=E)P!UqitxeFPO2i zIF&2$gRgOCZ^&1zbD;4Aw`OtUZCUQlS$vDPWo35G;yb!6E30#sv#YG^&RKldw~giL zoYk$Xtcjhox_6b8!&$|1X3h|NL-NSY&85c1M!KRxLe9a|q3!KAQC9IaD=IP}6Eb`(uJmKPhNpS}GNe8BVJvW>92y9xWf! zpN#B5v~|u1YF;ye3Z}Se(S3PTx_AavtzAg#%~IO-NEJ07-b7cnJHH zi3axVO)i&<-04GUV#Y|Cl$lQ39v)1`4h*F?E{vgTm&VdwIcM`BK^I>Z^!96l)*GW~ zcT*OfJ35Qrd#i*ZTYAyf7n143?*GfmsLpXNVv zno5peq5S-Ox*=a+B2gClfE-r@U4O~Czw7ez^>NqbBS>RYXY%WhrrE;kTr|p1=kd15 z)O%S()kheQtMl@ad(=74-l)#pj}JcQm2XhzaeFRP-@8*N%VxA+Ys=|$mcNBAUGS>x z%m=@D__t8??u<2r^+XwX{YFJaO;qRCiMLKS0+lh&bMs5c8!>AFmHYzKGTf?HG_03f zu}5{_*c*9Iyq4jyLbsKfYejWdl%po92-ei|eW)JZ zpg*F5TQ&Ul#?i1HN5k8Uqu~!Ej)os>91XvPa5Vfv#?kbE((oTRarPz&O2hktvp07_ zY3_p3+zqASzsSLPZhAv$`ao&=LTUJKD{-Eieo&hJP?`Zynt@Q76etb zrI`k$nGU7NhtkY|(#(X?%!1O)hSC&3Y3_s4%z@I(h0+v4Y34y`=0j-~KxvAgH2j~U z;QXX;5tL>zlx7K(rWi_70;O3BrCA20Sq`PSA4;Wl)-OD2*RVqeE#bpfmv}O(m4ZfYPjk(o{idf>4@jC`|}TV?t@dP?}Fb zX(CXXD3m4!rKy3^)Iw?MpfvSRng%G%dMM2&p)`$9nomJ#9)!|71f}^jlx72zW+RlQ z2}<)Yl;#mA%_b<#XP`8XLTNTbX&!^pY=P1|4yD-&rFjBM^CXmJ8gLQK`70$P@3nUG+%(y z9D>q(5lV9yO7lFF<^?Ftm!LF9pfq2G(j0}-9D~xl2&Fj=r8xnmISHlt3Y4Z9O494c^BpM71t`sTp)}uv(p-end>=}42}<(=D9vRk%@3h8SD-YnL20f+X?_Hyc^yjg zV<^oVP@11WY2Jj=yalECDU{|Kl;&qpn(I)SpF?SGKxuvfrFk1l^GhhrJ5ZWmL22HF z()=1q^BXA5Z=p25gVOvSO7jOO%^#sOe}dAy2c`Kll;$r`n!iG6-iOls4NCI?l;-bH znh&8g|A5l`6H4B#j34c^)-0? z7CO7Vp{l3M&-S?7S~lBNd$pl=Oyq_xSBNhJto6wCs9DV{uV1Z4TcrBAHEU(vZjJAC zcKlwsXZyXXPi2J}@V2d$HBOh?qZ$M4>)z#NtAT@hD5@&qh`CPXtA(pDYk7!lPY?Os z>kI3VSWQH?AekO@CuKpOU-yPopIaJkejpdd5j=c5LRBh^V702~^D1w+!wSy{ObAi@dIjoHh6!% zvC4=Ztu%vbN!>ih)c717KB}s3KtBB;znZSx44M(f=V~tXOHEzb_Nc3YM#Tr>^=w}T z9@SeGxH$-4(OmM2=bjYr(qV3E!TbTei%zPk&hW?LFD11~tK*|^$M%U;B@i)gxqog_ zQ>$H!hJEEmNNt4mu2aKWJFjJ`6!}PpgT4l}^L)D-;}h}4_KB>)^jJ&|cFVGRhe|gPh?02q0G&MF0Q* delta 347 zcmW-dyG;c#5Jm5NY%hZ7RX|J$FF}L^K!zv+$-!>^Xn}-AAaEZv#2JF4`;k3k`S&M2 zu1~KoZ?|8Po*o{b5xuw1)7>Rntmv@}yv6hm1K*wOOU;(>1|l0IU6P~w%>Rz_8DYa# z6wPO(hl3S^v)~&HpT5~1&1Q7Fu*4W@EVOAI9cVD5NPN2T@D(!%Y?0N0@c u?_E3)n%E(Bh`VHPFi@T;oB|9o$l%4M-LJG8UX^A*b^UpN_e}x`Ij4Vm&i94OeZTvD z_ulupcizi^a9FW$rE{kcV*a#}1+o%T-x6YJNonyN9LOUNj7d3f|E6e zqgAszS{*$^t6dgNh^S_hMV{Ma5!~KWw##CZ#gQOmSu|N}vdF<(?G72sV&h_$=d#$j z)?|JUTg=f@!~_?4uJx3qmpqq6>n&mqK2NZ4DtNzfdcEH*9gNwOnVxV~mMktz10Q>I!|zG7B}9OzdWGyR3Z9S~6?;G{H9{kAi{%YHDht8`}lV-gl0MC4EF6BqdQ>+k8%? zqa~+k!CalZYbH`t?OZywxr9z__tL3dVah)hqP|7Rl(NoA&WFZO=Keww#R(*;`j9x- zpTxOj>N{W1plU()Y!fv0xS(EDg6?b%-hX>3MYi;%tuH3giOVT;jfVc;{W&=~^mP7y8t*zt6E|<9l;#vV|D2$! z4+=VxkwKZ6ndI(2ndZ$tNus%t21W+b>0Q;A6G&)3IYmyaNgNuAEGKbm3-t9t$@Q`O^a6RF?w zh&mr(KB4LrBloDfP-{{(_v3@>!txEO9=qo<4Y)gna%^VDwf3AYwfq*kY~E|KGavls z;cubp-5F~L8@*)U@tGABHBp0KC!RXP^jF3>&&4kxPb5_1ujCh?p5;=#qG6-liruOM z$DVM!guq(Eu-CoDMcv>{L${=pp1 z-rNhNNrTc1h0-{oH1|Pi(xEiNpftmwG$WuiBcU{-pfnj!noKCoXebT;Gdr9=5sZb> zjDyl-L21TAX>=%!3rdp>rOAQPZ15lckP?}Xxno=mugHW2)P?|MRnzc|G50qvd zl*S9CDTC6KLuq_a8UspG0j2RnX)2*KCX{A9l%@(w6M)iGLurCgnh=yG45j%5lqLeD zi9%^&P?{PjO)ZqB4oXuGrD=fDG(u@U38iU*(tHX^^AMEgVJOX~p)?zyG#jBb%}|<0 zpfry{X*NM=J_DtB3`(;ZO7l3BW($<&2`J50D9w{lnx~*N+n_X0Lus}{X`X@7?10jI z7D}@dO0x?}vl~jY2TJofD9z`gG<%^m`=B(>LTUCxX%0YX4nk?3gVH{Bp)@Z;X}$)fc?C-Ibtug@pfulv(wu?Pyb7ghgVMYPr8x_w`4*Js9F*qUP@3~l zn(shqE&(p-nq{2WSi14{D?D9t-inqNX`-i6Zq3QF@Hl;+n^ zn%_Waeha1f9hBzxP?|qLY5oYM`4g1peJIVJp)`Mi()<-l^8u9RZ%~>Kp)`Mo(tHG^ z`3IEdpHP~AL23RCrTGt(=D$!Hg3<_^5O+vXf-Ig`L)hrWCqA>Hq9$te6~r`D|if#8J|}LRf)1G+wFG7i&_S6&>t|kvs-t%bv24NVt9E{JxjN4*k?woIwsAR zSNPzOJ5O2@G(Ub)W{y(>bT@=q7O;lk>0C-430bSm9S_7i^5%A)+Z(I4cGcV9@mc8H zj)tl}GC$Ytbm_TlSMAlN(K(SDx?Lf@;J4PJz^!Ht<#>E*J=!DH&!t-{>vHLQuQTKK z$~`;oRedTeLVi#CT3O?CyFIGW-?8r9ZnhdYU<9M;BpeB?SNUq;Dnhk9M6SEH{N3XX z8{tdK z)l=rbIS60To$`z4o)GWSX>M!5e14;wPO7QS^u^*YCACUx;-hfKj)~QYKVsf;|J_5&x!ec@IKlNlRhbuy delta 346 zcmW-bu~7su3`M2?W&0S2t^#r@AYup!fQ+FCW;VFZj}}O11OoR#Lp^3{`#Rp8TTS(v;g|`!ijxjNZK%~3eK16kL13tr8yURl)R4=A zdFLLAy%y9GBsC~vKgSA{Q%;uS$}O?6=_P2;>$u~F8)sx=9rC0htm&bdi_+yWZ#Qio r>;Y0`^Q^{f*H&Hk1P*BgWXFrkB`jq~!(8l5&HRM<5Loi_;G6mf(eybp diff --git a/assets/voxygen/voxel/npc/reddragon/male/foot_fl.vox b/assets/voxygen/voxel/npc/reddragon/male/foot_fl.vox index 9d95cf5525024e3d8626cf9257c746999678ae5a..acd39fbf047a0d592f891b2ec25766e2970585d7 100644 GIT binary patch literal 55891 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 delta 347 zcmW-dyG=wf5Jm5NY(E6iRzOU=5eXtB05U`oNDlVpOADLO2n6nfhB!lTbU(6ZEdTz* z=k?+3_5Jos((~if3!;y9IozG2#fl!wz*|i3F!0^UzSL|9Zy>Tk(j_^%&;0K=pK-Kd zD~jeb(vJ>S49*zp(Aw}Yo4pd5)AcG8EY&!XsPKHuu`B=a(PWHK|(Ojctn zq{UK7ODVD_6lg_S5ek@KYE_ydB8rF4r{_dLu5^_%e^qlVtH~0PS z``vrr=iYgb1L07-WR-K55TbBa!D3m7nQsYER8W$C2M6*KDlxT<+&_& zt~Ht8!xnS&6fwa?o@+g2NtEZZXuU+t!RHCKR;`CkjxFm1TgWbJo2+fJ%`S_k$u_&J z?Xq^r+99vW*d}YuW{YZ?CTp$LrfIEqE(uyMO%@v$hZeGFavWK-1bZ*L!`>-*{Ome#Dnp z1m`VZ+9#gU-o~|DXTf8Pk6+`M54$Wp1fO$Wd#)$OyQn*LXGXAS{?cT=E)P!UqkU*T zUo>m=^1*x(KlmDV_5{6E1_wG%aBCJf-j?O+n#H$xTUJKbEWV@LvNF47Il9Zr>YBxO zecM>>u30_0%gXMW)w8>-9L`!kZ}u#~HzbeT++1pGY@{1I1kK-njz%PZL?0w4Q(Idh zr_!;47FxVeC-2&+)L65STDBBW%MLHK><&{-ONjd9rBLd6CpjM)PiY4xlgLjXQQ4cs zp?)OJrBI(jK?AD<-LqZLgcE`iD+S%zB&ffPQ;rJCDommUReh*rV}E-5^u08laf)sD!pZT1m}EHq(`}`>A=~8ftrC z10^LT(V+f)$?0^GD{VMsr;ny78ELfrk$dR)!Qu4gg>iK4(sJw~HvUwGVB3F_}(YPNi!!?Emi1%*>>xa}LlX*CCp^WfP?~rPBH5 z1YLbl(9yADDJ?CH-2JB0qWPytG&RtG$N)OM+uFlL4hIb#I+PwBwUhKoVe)O=OoP@9 zq)RW2qSGa*v_q~{*Y%$jbnutx~$AxE2_1k95qpSpt_FlL-p_k zd=VAgs^Pacj)v_x8s26c4SyhUH2h%WX!tFJqv01aj;0rshX25cvo}dl8r~P2y}1)g za~G86ZYT}^MGnq$(-%t94@%P?O2dC!iSyhHfYPKuX$C@R20>|3p)~vx7Myq55GW1* zU=C+*?uF6}h0+Xz(m0_s_d#ifLup1pX+}b6MnP#tLutl9X~sfn(x5cspfvo?>~Q`> zFab(45lWK|rI`e!(V;XhC`|^GCKF1N1*LIAX|ka-IZ&EhD9vOj%@iojR4C0fD9v;z z%?v2bOejqrlx7x`W;T>&4wPmtlqMfab3c@39+YN2l%@bmvj9r75K6NMN>d1>;r|o` z=O=|rpfpRNG|Qkg%b_$yP?{A`nw3zRVkpf6P?}Xxn$=L65-81sP?|MRnzc}xbx;}) zlx97Y#tWq>h0>HkX?#!`14>g4rSU^)Dxfqblx72zrV>gMfYMY!X@XFi5R@hirTGMu zCIY32LTO@9nrbLb4V0!9N>c}=sfW@uKxsY+rD=rHd<}QHbZGX1EqNkO0xw@^Ei}dE0pF5D9tt~&67}?r=T?3p)^lJX?8$qo`KTr zgwlK#O0x?}vl~jY2THRSO7l4=&F7&s`=B)Yp)}7zX%0YX4nk=TL1~_Y(mW5P`2v*Y zFqGztP?{r9nirrnFG6X)1f@9&rTH?H<`|UbIF#lkD9s5d%}FTDDJacXpft@;nieR{ zX(-KCp){>fnwOz8UxU)T0;Tynl;#^ynr}jB&Om8ih0?S^Xwu0v^l4yCyPrTGPv<{c=_FQGK=LTP>lrFjoZ z^J^&0Z=f{4h0^>EO7nXt%^#pNe}vNf2}<)ml;+P+n!iA4{tBh}07~;WD9wjZn!iJ7 zK7!Kx14{ExD9yj1H2;Ru{0B<&UnmVhX@pIPJESN<7Ei1`Y$WoD&nz#mjv77ryw))N z6)~A6Ts=6BgsS}&c6p|!yHu}e*eJ7Nx9Y&LCme5aa2GQavBFFhdShxho!dNqo!chr z>251@S(&+3RBJ^!YNGN$bsgV_>fs6aA}WY1nZ00yY~@3fr9-0TGJ-X#p(^AvI?_#* zEChQxr<=iY9>ZhC=T$*vl5EOwyPff(mcbkJ2Mq4))}3x$jpB_MUY=A>*R31&nbFFQ zNps{CK6vELlU4`KkDrv86V(9S4PllBtRZ+hmy$<9)+%$ygYk~Mxt-_s#;UAc_11fQ z7CNh=p|ZEk&vH9mdKTMNdzEQ)PUMDeSBNk8t@X%tt64*t9-mr|_DJ<}>DJ1+Tsq(D z-1xn6&yIUlpUU!(-_yQU);Qg6k81RHtb4bctp*Ml!KgY3M?xD^zFN5QPz?`}T^rO%@5?_ID&`oK&X>)Gf<^YjJj}$2e5Xl#kqAtahd}5DHZ(L6uo&ZKbtk(K2tq`tYmg)5{O2_1WP4 z^~5S7MzkUnP)q9KIi|seY-cE7~7*HPD#&K)jwE z%fO?0O8qwn;VZgRe(~H>;$1q;Z7rD3Z*J?xy%ee6eF9YcL}glY`x|Y-&q8 mZbA*AB16J%Mx}mFS*OUWBE?iY$$eZ-`K3CS8G!&Nxc&!DG{l-7kj6(kAetY4>0c qsJvzKtj28DUR`$t4rv5r$BX|*Sjv!wdDy#}`GmO$Ecw3ob^QU^OgTpY diff --git a/assets/voxygen/voxel/npc/reddragon/male/head.vox b/assets/voxygen/voxel/npc/reddragon/male/head.vox index 0de9789f15d4495178dca869b50b40272cc46005..f653816440c89eabe056976b827396f6756be5a5 100644 GIT binary patch literal 57523 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�Lr26j?FDTV&N^f6NR0Bwfci=FTFLB6JGHbT=n7$|J{GGjOK(FWo600PI2NgmMRb-#A(`MsBXtqK;P!N} ztAEiZ%8lxUM{N13psz6Iq;5hARq35YbScT{Zmb> ziMRXEjr{{%LHIYuYNL@xX4m80>EwZqJaE_@;)#^MAI&knYOW#PuJ>b~rQ@Oze`ll7 z2-iBJTq{TR*Q%e&j$A6fZ?F73hdmxWnCjp6!ydLyoJnSjx|1*DF4q2f<2rIHIYncv z0>8%-`DCG|w~+Kf>SMZ+6`4ePGM?2j`we{jKrSppaQc1--RVeYx^*YHI-lbN{%NgD z`xWb{L|d}>@l-0&%?DFoSI^sX{^2s~lUb3;<+?RNcY3vdl>U(w+Y%Z7;n(kHf?rVo z+2Hey_jDGL#m-ztZ)ud*IJLaS0gtMVP2ug&w(I5Ea+zF#;hQ71`aivN=e}26CmLN& z#QWL54V*Q;BK2_+o{7}r7q5LvIplz~{S9kRB@Yv%hgPNAd&-xR-lYr6SvatNVckg; z()-oVLwad_ip6}QEuGZ|;oo&St$*^7dhLQ&I-g0b(I?O4t}iddll=?%$&x)iNVea$ p=_BngLZ{GH5?~)&D^l^c1FVF$G^RdDj)~Udmkw@AW-{y${U6CTPIv$S literal 3040 zcmc(gTZ~m#8OPUs?{gcV4A6lJBZb01E!T1pibDb0fkLHN>^V}>Y8yKe7%~{rl8J_n zHey8)36zA2Xb767*peA?j3G!G(lj9r!N!mn(lkbW^}!h5{{Ge>`p_32J;^WM`mXC+ z-`;zjolic~d(s%Qb^X9Lgt<{OX2(ElQ#~vEDliEqz%$L(z?p&tzrR{ztaWW0AwdD9 zYbWFP6%GOiT+Oyq6*|(jT{VNR>aGOV5$S8L9l+N-c7MfJ z!vS9l`260;I%1FL0U5G%rX4&4h>)N#?Fc^05*>V|TC#ru$O@EY+oj^ROXY1Bi`yxK zp3p;u9xCin1!U~3*{>4lEzv`27p3Pck$M4qyU4a`Cbn&0P7ZvQ7RkApW5O1Z0SeXy z_5y#AeatrIxD5G;nHL4V65ZrAF#8zLc@_>mG1tV56Z;ey@`{{?KTy|`7m?8tgG`2c zl?;A-9=pr6$Z_OGY>qg`z7`_S!V+ug!PBG5(0AY&I{Nfrspsg)QOjq^9*JC+pEQe!fp;(LOJK2C zY!;hCFUrW=AVCBR0UY=&spHuLyTj&@0W52a-Qu^|M-89jd>V4(J8IbiUy04+HL#Zt z=6TKyROSvY!IsCz03gM*mxmFN%>@#v9UpY!R{Q!mzt$u+1Ka{ZhW${~;6 z;vW9a(D{dNuTC=*iHBp%0UL;GQnHvn}6(<^HhwPUgP0 z*jN;>Yao@R$yW+UlV*an|z#4n%Kun$Q1tR!5?;}J=;K0{8A4KqV zzDY=(_`GKSoZlcHLW5lJ9dcdn*E;_>#CZq}?g9u6^epSlwNbX8dhF5lCfxm>UbSkK zMn*>T$#J8{-@LB-yZ@zsba(68wXMp(w+F_xZOdXk|Lhu#9NePuBLf;g{=CLd?bpij zAx-R`s-EY1)%)#*>N~qyW>b{eQw0ZADwGL0#4=#U38%K<`pD_B`MWa`4lDmDnW)9BQoRI}uG1jjc!`+&Fbh;Lt zpQR=5&(pMBMsp5R`=rs@t48L_?0=|~IngC^sar?pP11$MQ}odzGo;O*)d^#C8U6@= zffFwqUHqxhwF^ccyo=s%bZ(PT`zfP4-!N*Szr54v*bCSX8g1w^+P%u?;6|f2uy0>J zU4xru>(KW3I{D&KjXb?lCtup2Yv2Eh{&s#)3-6z*wM%Dd%NOSB#hoj)XS31hvqopX zWpwq&Mk{7c*T8}~+O^^#4R2hnoeQRFaQO@!eQd7Ab}!PVwM+Em7gwwGrS;nL+%_E= zYU$Yb_Gs+FYr6H`n;JW_OV@t&P1R~O-8*@bdV71dq;IxXJoJD*zqC)szI&f8{(QD> zf3QGzK3u3X>^XMc=*I7i{`?1{Lxc16#^^F#e|v-e{-+%petn{j{<>T5-t5sG&HBHe zf7!BS`pL?(TD0Vx)*N|NJ)=E({})Cdebwl#`SaD+*QbZ?c|=baA-Mf35KK#vGU2gU0IJ5fn{MW5H-l^5xaYMr|Nw1u` zpwVBB=|`8|)9K&e(!=|YXx*!4wdH45wd0*z>hJH@Cq^i zzCtaW{;0BCXZLsH)_H>+`8m5rlb#;#tmh8?up@UqaJnN`yOEB}dHI*+>aQQ}$Oli~ T)Z__0T4o3T>-$g4r=>&YevlA^rGY|M*R~x#ygF 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 delta 725 zcmW-ey;%i82t~QT{=H9=SAn^y4Hz2eWPWzDHJI3l!7IWxEW*%pCtx`+aA9VDZuNJ6 zeIFkWUlH;8{PKp2-}UqQc&bJ!F%3;ie2s#Oe8Ez4-f+VK2OJ})32K6xh8u3{#WJd? z!(^Y>ZboNk)~=Bo@mAy1#=y-929PM?A}*TbMmLd9^6C6ayb`a(D?=A^;2FNK5OKf( z*Frxgd$H6)FD9(0t0hl9+?+r(3C?MVyPy$i7HZC6!GaUc3;sgg1wOo}^DI%kM%l9r z9B{x&G?M=G<mWX-N9^bdV>wmD>Mp6I( diff --git a/assets/voxygen/voxel/npc/reddragon/male/tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/male/tail_rear.vox index 0d401ba908eb07d1e96c37e96dadced1e628524a..7bed628bdf2a812af6ebc595a611fda017c16656 100644 GIT binary patch literal 55875 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 bD{T?^b)=d4B&Cnr#lLjtQZp2i2JVjlowES! delta 330 zcmW-cy;TE241{N-J>QQ_;tHJd2&lm!0Vv}U(2Hvzp%L5x4N(H0E|{GejaIAuz31O{ zey@+qx1`tW%NwN6>FfM-JC5>0mQUcA6;o7Xl+)!2Z0H4^!AdrRjlKn5xwABwv4RcE zSt1vi$V8vGBj$RdH>oi{+{n7w1Ho{sL{VrFc(1_>Gj#_UaNxrgt$WeYz&H1!yQilg nJa7m2z`{HCNAN6Vp%srDgqRQ;p{-HE3$NXa-)8+h=V|-{d%_{m diff --git a/assets/voxygen/voxel/npc/reddragon/male/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/male/wing_in_l.vox index 4248691c504188886c549aeeb41f1a43f1127a17..9bb52f6467d940ac077a47f0bcd82b4edaccce89 100644 GIT binary patch delta 1813 zcmWmEx0&2V00z+Et%LV&-5H896(~~;*9rpWNEzW%FKU1_C{j6k6TJNg17LP6e*8TA z_<8vIudQA_Lls>=Ln%u+)oZBv?d5y;ohFvQDDy`YzK3rwpWzq2^1(ZAyz=D1of}sc zW+p}k`j^iwbP6pEH5DZVITnPLnDA)U_FoLKwil{OYF2^;@wGlN&6tzYbbw(ETM#tH6-S8Q@(IBJAK%?1U zX|{0<&0xBtehn2bhc$dT?BV6OhXY5A98Y^Voz`$V@8Nu2!}+p@%ViChM5eA&^_lyb z%+=-Y6?;gEH6-O8(sB)HwTG-)Lsm;Ol{S0W($)j52RfDH-5TBh|sUnfDvNhT_Ihdk%c~bu&d(+=B&@$36S(;kTvXYA| zW#RoomT^Yqos0*adr#SK3a?(st;w4_t9*|)taHae%Sgjy?Q3Q#O7EAli_0Z%Re#})-u~G-KLafzx&1K7LRK2DY_u`{i5%1w@EdEhIa}k| zmuz-D$<7O{jnc+7jb)8C%8kYv^^NE2$VP0uQ(4N&btwx=kW(m^>N4%8Br%<^gv%-Z OvF~{Q&!3ln|N9@LOZ{H} delta 1813 zcmWmExq0J800z)mQ4(+BzAsYJYF&Xd*PvDqY|eBee(uE$Yz>ZFj^6~2|6l+N=ftny zn_s^-fB$vw+ON<@-B%doAoFAm9Zyd`!#CPk{-#Wb!q4#h^c7xsWy_8|2acRLb0Hxm zBd4IGdiuJDTA`t(qi0}bVrJpWjW^!;;5(oE;18yB4IBBq(YfeZ2cs9Aj9zs#+Ujhy zyX*0eyb8LJ(iH9FyZWuHOn*&DLqSV! zX*!w7UZ!%8qxVNS#2J-mW=_=Z9c6V_ICx>QCVTm&au;t{=bDm+f|lIccVzSo-XCNg zmrGulI5Rr7C+`gMD0_KOe`8N&|J-XoB@G3W{gBI1_8RYPv?BhAEY*$j!o-=`vnLjg zTsctfbc&LOB3_$`T=ueyZD!WLj(3MIdP8HoLKgEjVe@*PEG0fG_sJb%<0JJNf}6JP5DK38b8aKg)28I$FQb! z6dMX!ayl~lyPuSSgpmsqGYeNr=eVMvCZ}<}Gug^ib|mx+j7-cdl)eEK1vNSM#!p5| zO6OzIGboQt%#=PH6$LdpjTy*fOGnS(BQr87S2o<>nNp6HqL3GxJhAx_dn9>z+(T+j zQx~bq%o=CDWSQ$+)?R3AlqRleENiq?ZZ+1bZ#~~dHe&0Y-ct6i2RT}TiBWk_H*0_4 W8q*28a(jt?>^oll^XK;8|NaN000g7} diff --git a/assets/voxygen/voxel/npc/reddragon/male/wing_in_r.vox b/assets/voxygen/voxel/npc/reddragon/male/wing_in_r.vox index 10a75b0e8faa0744eab0d325bcc066bad64c4b88..ab80dfab8992af94f5efbde0861a5ee8989dde2a 100644 GIT binary patch delta 1814 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 delta 2479 zcmWmG$$2xo5rtt$oSHq)GfC-p9FBphFau`5#{t|d9K&6C<(xZ#3x)bCHIzF(m`e8TDL z6YBI6+OJor(pMn^(r}P<4hgUdqd_UU6oWXO) zVRik4@oED)(E``gC**WFenLi9+@gPar>S6z)B6>&=oGi`40k;6gJ1l?*B8E@;roCi zPS0>SDe8QvewAzyU9$* zrKzUuE>}A*&$uAL9kaUL=)*=ky(z&)bF3(^pu~*qB4}FUU~NPDShCA2e8)iO@$!6! z6XT2vZb-1>iVeNRD@`n3XwLCW3sjX2X{#|Snxc-+PBxg|ut!>&cQWUU3li*+FZJIT zDOP0YMVixr7Kz4^uF`X(ajs6C%0Nn|IG;A9`E(HI86B=Roi$!bC%RZO(k9NME$wOd zW*jus(IzLHu|x+JoOI|-7pKN{n$e9;wO}z~!+;$5wpsaVkR=!sIZ0wD_)1A(Z z`Y-;>txd6_wy?s|c}C}yopg3i-}?>s?4CVDVw#PObfgoV=p4svK4Fd&{2_Os+{T4q z3Qb)eKJQR^sGO{#NlY=)sGMa;BOGqJKBpOSPBV;7G9edmh7?ynxkbHK%-AqhpRm&r zH{|x~1#&p5|Ix-PCxaJv^yttaiM67mUZ`ZEX8)M`K*7$DA;lGm-~6Hv_VoTV(KS0rehc9qsywl-P|aAAMDtai^W`$ik% z6Mvh7&h%vbZoDr(;oZfFI2*j+VM2ivmGKeBRjQV zD_N_hdQq|!wfUJIIL5|SzWUq!e`oZ#*s!&zi7!Ojuv?B24lXzwJE8WzLWu&MCN0fN z*;gdEMBC=+`4i5rr)};4DQq>3`skKk*~uHhif6!;Scmsvq^c z`}sXI)5C4~;JkLKdty@g5mIlRxh6 zwO6Bv1p{{UxS@&Vu-RE)C0ztOI7t&r;Urhjm7ZA4t7+$3GVwKI#DW0_hwbTwcJy6x z(lTynP^0o?nxu8ch{TBodZj&`G-;vcJG(`L8mT}s2nCt=X_g^v0?@t?|v;&Skbc%tZ;Oc(KXMNPp=N-|3Mp zSO1l Self { - Self { - head: Bone::default(), - upper_torso: Bone::default(), - lower_torso: Bone::default(), - shoulder_l: Bone::default(), - shoulder_r: Bone::default(), - hand_l: Bone::default(), - hand_r: Bone::default(), - leg_l: Bone::default(), - leg_r: Bone::default(), - foot_l: Bone::default(), - foot_r: Bone::default(), - torso: Bone::default(), - } - } +impl DragonSkeleton { + pub fn new() -> Self { Self::default() } } -impl Skeleton for BipedLargeSkeleton { +impl Skeleton for DragonSkeleton { type Attr = SkeletonAttr; - fn bone_count(&self) -> usize { 11 } + fn bone_count(&self) -> usize { 15 } - fn compute_matrices(&self) -> ([FigureBoneData; 16], Vec3) { - let upper_torso_mat = self.upper_torso.compute_base_matrix(); - let shoulder_l_mat = self.shoulder_l.compute_base_matrix(); - let shoulder_r_mat = self.shoulder_r.compute_base_matrix(); - let leg_l_mat = self.leg_l.compute_base_matrix(); - let leg_r_mat = self.leg_r.compute_base_matrix(); - let torso_mat = self.torso.compute_base_matrix(); + fn compute_matrices(&self) -> [FigureBoneData; 16] { + let head_upper_mat = self.head_upper.compute_base_matrix(); + let head_lower_mat = self.head_lower.compute_base_matrix(); + let chest_front_mat = self.chest_front.compute_base_matrix(); + let chest_rear_mat = self.chest_rear.compute_base_matrix(); + let wing_in_l_mat = self.wing_in_l.compute_base_matrix(); + let wing_in_r_mat = self.wing_in_r.compute_base_matrix(); + let tail_front_mat = self.tail_front.compute_base_matrix(); - ( - [ - FigureBoneData::new(torso_mat * upper_torso_mat * self.head.compute_base_matrix()), - FigureBoneData::new(torso_mat * upper_torso_mat), - FigureBoneData::new( - torso_mat * upper_torso_mat * self.lower_torso.compute_base_matrix(), - ), - FigureBoneData::new(torso_mat * upper_torso_mat * shoulder_l_mat), - FigureBoneData::new(torso_mat * upper_torso_mat * shoulder_r_mat), - FigureBoneData::new( - torso_mat * upper_torso_mat * self.hand_l.compute_base_matrix(), - ), - FigureBoneData::new( - torso_mat * upper_torso_mat * self.hand_r.compute_base_matrix(), - ), - FigureBoneData::new(torso_mat * upper_torso_mat * leg_l_mat), - FigureBoneData::new(torso_mat * upper_torso_mat * leg_r_mat), - FigureBoneData::new(self.foot_l.compute_base_matrix()), - FigureBoneData::new(self.foot_r.compute_base_matrix()), - FigureBoneData::default(), - FigureBoneData::default(), - FigureBoneData::default(), - FigureBoneData::default(), - FigureBoneData::default(), - ], - Vec3::default(), - ) + [ + FigureBoneData::new(chest_front_mat * head_lower_mat * head_upper_mat), + FigureBoneData::new(chest_front_mat * head_lower_mat), + FigureBoneData::new( + chest_front_mat * head_lower_mat * head_upper_mat * self.jaw.compute_base_matrix(), + ), + FigureBoneData::new(chest_front_mat), + FigureBoneData::new(chest_front_mat * self.chest_rear.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * chest_rear_mat * tail_front_mat), + FigureBoneData::new( + chest_front_mat + * chest_rear_mat + * tail_front_mat + * self.tail_rear.compute_base_matrix(), + ), + FigureBoneData::new(chest_front_mat * self.wing_in_l.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * self.wing_in_r.compute_base_matrix()), + FigureBoneData::new( + chest_front_mat * wing_in_l_mat * self.wing_out_l.compute_base_matrix(), + ), + FigureBoneData::new( + chest_front_mat * wing_in_r_mat * self.wing_out_r.compute_base_matrix(), + ), + FigureBoneData::new(self.foot_fl.compute_base_matrix()), + FigureBoneData::new(self.foot_fr.compute_base_matrix()), + FigureBoneData::new(self.foot_bl.compute_base_matrix()), + FigureBoneData::new(self.foot_br.compute_base_matrix()), + FigureBoneData::default(), + ] } fn interpolate(&mut self, target: &Self, dt: f32) { - self.head.interpolate(&target.head, dt); - self.upper_torso.interpolate(&target.upper_torso, dt); - self.lower_torso.interpolate(&target.lower_torso, dt); - self.shoulder_l.interpolate(&target.shoulder_l, dt); - self.shoulder_r.interpolate(&target.shoulder_r, dt); - self.hand_l.interpolate(&target.hand_l, dt); - self.hand_r.interpolate(&target.hand_r, dt); - self.leg_l.interpolate(&target.leg_l, dt); - self.leg_r.interpolate(&target.leg_r, dt); - self.foot_l.interpolate(&target.foot_l, dt); - self.foot_r.interpolate(&target.foot_r, dt); - self.torso.interpolate(&target.torso, dt); + self.head_upper.interpolate(&target.head_upper, dt); + self.head_lower.interpolate(&target.head_lower, dt); + self.jaw.interpolate(&target.jaw, dt); + self.chest_front.interpolate(&target.chest_front, dt); + self.chest_rear.interpolate(&target.chest_rear, dt); + self.tail_front.interpolate(&target.tail_front, dt); + self.tail_rear.interpolate(&target.tail_rear, dt); + self.wing_in_l.interpolate(&target.wing_in_l, dt); + self.wing_in_r.interpolate(&target.wing_in_r, dt); + self.wing_out_l.interpolate(&target.wing_out_l, dt); + self.wing_out_r.interpolate(&target.wing_out_r, dt); + self.foot_fl.interpolate(&target.foot_fl, dt); + self.foot_fr.interpolate(&target.foot_fr, dt); + self.foot_bl.interpolate(&target.foot_bl, dt); + self.foot_br.interpolate(&target.foot_br, dt); } } pub struct SkeletonAttr { - head: (f32, f32), - upper_torso: (f32, f32), - lower_torso: (f32, f32), - shoulder: (f32, f32, f32), - hand: (f32, f32, f32), - leg: (f32, f32, f32), - foot: (f32, f32, f32), + head_upper: (f32, f32), + head_lower: (f32, f32), + jaw: (f32, f32), + chest_front: (f32, f32), + chest_rear: (f32, f32), + tail_front: (f32, f32), + tail_rear: (f32, f32), + wing_in: (f32, f32, f32), + wing_out: (f32, f32, f32), + feet_f: (f32, f32, f32), + feet_b: (f32, f32, f32), + height: f32, } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -118,7 +116,7 @@ impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { fn try_from(body: &'a comp::Body) -> Result { match body { - comp::Body::BipedLarge(body) => Ok(SkeletonAttr::from(body)), + comp::Body::Dragon(body) => Ok(SkeletonAttr::from(body)), _ => Err(()), } } @@ -127,41 +125,61 @@ impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { impl Default for SkeletonAttr { fn default() -> Self { Self { - head: (0.0, 0.0), - upper_torso: (0.0, 0.0), - lower_torso: (0.0, 0.0), - shoulder: (0.0, 0.0, 0.0), - hand: (0.0, 0.0, 0.0), - leg: (0.0, 0.0, 0.0), - foot: (0.0, 0.0, 0.0), + head_upper: (0.0, 0.0), + head_lower: (0.0, 0.0), + jaw: (0.0, 0.0), + chest_front: (0.0, 0.0), + chest_rear: (0.0, 0.0), + tail_front: (0.0, 0.0), + tail_rear: (0.0, 0.0), + wing_in: (0.0, 0.0, 0.0), + wing_out: (0.0, 0.0, 0.0), + feet_f: (0.0, 0.0, 0.0), + feet_b: (0.0, 0.0, 0.0), + height: (0.0), } } } -impl<'a> From<&'a comp::biped_large::Body> for SkeletonAttr { - fn from(body: &'a comp::biped_large::Body) -> Self { - use comp::biped_large::Species::*; +impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { + fn from(body: &'a comp::dragon::Body) -> Self { + use comp::dragon::Species::*; Self { - head: match (body.species, body.body_type) { - (Ogre, _) => (3.0, 6.0), + head_upper: match (body.species, body.body_type) { + (Reddragon, _) => (2.5, 4.5), }, - upper_torso: match (body.species, body.body_type) { - (Ogre, _) => (0.0, 20.0), + head_lower: match (body.species, body.body_type) { + (Reddragon, _) => (7.5, 3.5), }, - lower_torso: match (body.species, body.body_type) { - (Ogre, _) => (1.0, -9.5), + jaw: match (body.species, body.body_type) { + (Reddragon, _) => (7.0, -5.0), }, - shoulder: match (body.species, body.body_type) { - (Ogre, _) => (6.1, 0.5, 2.5), + chest_front: match (body.species, body.body_type) { + (Reddragon, _) => (0.0, 14.0), }, - hand: match (body.species, body.body_type) { - (Ogre, _) => (10.5, -1.0, 0.5), + chest_rear: match (body.species, body.body_type) { + (Reddragon, _) => (-12.5, 0.0), }, - leg: match (body.species, body.body_type) { - (Ogre, _) => (0.0, 0.0, -6.0), + tail_front: match (body.species, body.body_type) { + (Reddragon, _) => (-6.5, 1.5), }, - foot: match (body.species, body.body_type) { - (Ogre, _) => (4.0, 0.5, 2.5), + tail_rear: match (body.species, body.body_type) { + (Reddragon, _) => (-11.5, -1.0), + }, + wing_in: match (body.species, body.body_type) { + (Reddragon, _) => (2.5, -16.5, 0.0), + }, + wing_out: match (body.species, body.body_type) { + (Reddragon, _) => (23.0, 0.5, 4.0), + }, + feet_f: match (body.species, body.body_type) { + (Reddragon, _) => (6.0, 0.0, 1.5), + }, + feet_b: match (body.species, body.body_type) { + (Reddragon, _) => (6.0, -15.0, 3.0), + }, + height: match (body.species, body.body_type) { + (Reddragon, _) => (1.0), }, } } diff --git a/voxygen/src/anim/dragon/idle.rs b/voxygen/src/anim/dragon/idle.rs index a732fd3615..7453edec83 100644 --- a/voxygen/src/anim/dragon/idle.rs +++ b/voxygen/src/anim/dragon/idle.rs @@ -1,6 +1,7 @@ use super::{super::Animation, DragonSkeleton, SkeletonAttr}; //use std::{f32::consts::PI, ops::Mul}; use vek::*; + pub struct IdleAnimation; impl Animation for IdleAnimation { @@ -16,45 +17,49 @@ impl Animation for IdleAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const HEAD_X: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const HEAD_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const CHEST_F_X: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const CHEST_F_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const CHEST_R_X: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const CHEST_R_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const TAIL_F_X: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const TAIL_F_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const TAIL_R_X: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const TAIL_R_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const WING_IN_X: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] + const WING_IN_Y: f32 = 0.0; + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const WING_IN_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const WING_OUT_X: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] + const WING_OUT_Y: f32 = 0.0; + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const WING_OUT_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const FEET_F_X: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const FEET_F_Y: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const FEET_F_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const FEET_B_X: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const FEET_B_Y: f32 = 0.0; - #[const_tweaker::tweak(min = -100.0, max = 20.0, step = 0.5)] + #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const FEET_B_Z: f32 = 0.0; next.head.offset = Vec3::new(0.0, *HEAD_X, *HEAD_Z); @@ -77,19 +82,19 @@ impl Animation for IdleAnimation { next.tail_rear.ori = Quaternion::rotation_x(0.0); next.tail_rear.scale = Vec3::one() * 1.01; - next.wing_in_l.offset = Vec3::new(0.0, *WING_IN_X, *WING_IN_Z); + next.wing_in_l.offset = Vec3::new(*WING_IN_X, *WING_IN_Y, *WING_IN_Z); next.wing_in_l.ori = Quaternion::rotation_x(0.0); next.wing_in_l.scale = Vec3::one() * 1.01; - next.wing_in_r.offset = Vec3::new(0.0, *WING_IN_X, *WING_IN_Z); + next.wing_in_r.offset = Vec3::new(-*WING_IN_X, *WING_IN_Y, *WING_IN_Z); next.wing_in_r.ori = Quaternion::rotation_x(0.0); next.wing_in_r.scale = Vec3::one() * 1.01; - next.wing_out_l.offset = Vec3::new(0.0, *WING_OUT_X, *WING_OUT_Z); + next.wing_out_l.offset = Vec3::new(*WING_OUT_X, *WING_OUT_Y, *WING_OUT_Z); next.wing_out_l.ori = Quaternion::rotation_x(0.0); next.wing_out_l.scale = Vec3::one() * 1.01; - next.wing_out_r.offset = Vec3::new(0.0, *WING_OUT_X, *WING_OUT_Z); + next.wing_out_r.offset = Vec3::new(-*WING_OUT_X, *WING_OUT_Y, *WING_OUT_Z); next.wing_out_r.ori = Quaternion::rotation_x(0.0); next.wing_out_r.scale = Vec3::one() * 1.01; @@ -97,7 +102,7 @@ impl Animation for IdleAnimation { next.foot_fl.ori = Quaternion::rotation_x(0.0); next.foot_fl.scale = Vec3::one() * 1.01; - next.foot_fr.offset = Vec3::new(*FEET_F_X, *FEET_F_Y, *FEET_F_Z); + next.foot_fr.offset = Vec3::new(-*FEET_F_X, *FEET_F_Y, *FEET_F_Z); next.foot_fr.ori = Quaternion::rotation_x(0.0); next.foot_fr.scale = Vec3::one() * 1.01; @@ -105,7 +110,7 @@ impl Animation for IdleAnimation { next.foot_bl.ori = Quaternion::rotation_x(0.0); next.foot_bl.scale = Vec3::one() * 1.01; - next.foot_br.offset = Vec3::new(*FEET_F_X, *FEET_B_Y, *FEET_B_Z); + next.foot_br.offset = Vec3::new(-*FEET_F_X, *FEET_B_Y, *FEET_B_Z); next.foot_br.ori = Quaternion::rotation_x(0.0); next.foot_br.scale = Vec3::one() * 1.01; next diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index c144141096..4324d9053a 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -38,10 +38,12 @@ impl Skeleton for DragonSkeleton { fn compute_matrices(&self) -> ([FigureBoneData; 16], Vec3) { let chest_front_mat = self.chest_front.compute_base_matrix(); + let chest_rear_mat = self.chest_rear.compute_base_matrix(); let wing_in_l_mat = self.wing_in_l.compute_base_matrix(); let wing_in_r_mat = self.wing_in_r.compute_base_matrix(); let tail_front_mat = self.tail_front.compute_base_matrix(); +<<<<<<< HEAD ( [ FigureBoneData::new(self.head.compute_base_matrix() * chest_front_mat), @@ -63,6 +65,26 @@ impl Skeleton for DragonSkeleton { ], Vec3::default(), ) +======= + [ + FigureBoneData::new(self.head.compute_base_matrix() * chest_front_mat), + FigureBoneData::new(chest_front_mat), + FigureBoneData::new(self.chest_rear.compute_base_matrix() * chest_front_mat), + FigureBoneData::new(chest_rear_mat * self.tail_front.compute_base_matrix()), + FigureBoneData::new(self.tail_rear.compute_base_matrix() * tail_front_mat), + FigureBoneData::new(chest_front_mat * self.wing_in_l.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * self.wing_in_r.compute_base_matrix()), + FigureBoneData::new(self.wing_out_l.compute_base_matrix() * wing_in_l_mat), + FigureBoneData::new(self.wing_out_r.compute_base_matrix() * wing_in_r_mat), + FigureBoneData::new(self.foot_fl.compute_base_matrix()), + FigureBoneData::new(self.foot_fr.compute_base_matrix()), + FigureBoneData::new(self.foot_bl.compute_base_matrix()), + FigureBoneData::new(self.foot_br.compute_base_matrix()), + FigureBoneData::default(), + FigureBoneData::default(), + FigureBoneData::default(), + ] +>>>>>>> Symmetry of dragon skeleton } fn interpolate(&mut self, target: &Self, dt: f32) { @@ -88,8 +110,8 @@ pub struct SkeletonAttr { chest_rear: (f32, f32), tail_front: (f32, f32), tail_rear: (f32, f32), - wing_in: (f32, f32), - wing_out: (f32, f32), + wing_in: (f32, f32, f32), + wing_out: (f32, f32, f32), feet_f: (f32, f32, f32), feet_b: (f32, f32, f32), } @@ -113,8 +135,8 @@ impl Default for SkeletonAttr { chest_rear: (0.0, 0.0), tail_front: (0.0, 0.0), tail_rear: (0.0, 0.0), - wing_in: (0.0, 0.0), - wing_out: (0.0, 0.0), + wing_in: (0.0, 0.0, 0.0), + wing_out: (0.0, 0.0, 0.0), feet_f: (0.0, 0.0, 0.0), feet_b: (0.0, 0.0, 0.0), } @@ -141,10 +163,10 @@ impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { (Reddragon, _) => (0.0, 0.0), }, wing_in: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 0.0), + (Reddragon, _) => (0.0, 0.0, 0.0), }, wing_out: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 0.0), + (Reddragon, _) => (0.0, 0.0, 0.0), }, feet_f: match (body.species, body.body_type) { (Reddragon, _) => (0.0, 0.0, 0.0), diff --git a/world/src/lib.rs b/world/src/lib.rs index 41b8a54b36..6f47c7a311 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -21,7 +21,7 @@ use crate::{ util::{Grid, Sampler}, }; use common::{ - comp::{self, bird_medium, critter, quadruped_medium, quadruped_small, dragon}, + comp::{self, bird_medium, critter, quadruped_medium, quadruped_small}, generation::{ChunkSupplement, EntityInfo}, terrain::{Block, BlockKind, TerrainChunk, TerrainChunkMeta, TerrainChunkSize}, vol::{ReadVol, RectVolSize, Vox, WriteVol}, From 2060fcb525e1440222f884d6a4e0e68a3ee57613 Mon Sep 17 00:00:00 2001 From: Snowram Date: Sun, 3 May 2020 02:03:21 +0200 Subject: [PATCH 04/19] Initial idle animation work --- voxygen/src/anim/dragon/idle.rs | 179 +++++++++++++++++--------------- voxygen/src/anim/dragon/mod.rs | 63 +++++++++-- voxygen/src/scene/figure/mod.rs | 3 +- 3 files changed, 152 insertions(+), 93 deletions(-) diff --git a/voxygen/src/anim/dragon/idle.rs b/voxygen/src/anim/dragon/idle.rs index 7453edec83..fa0b5018f4 100644 --- a/voxygen/src/anim/dragon/idle.rs +++ b/voxygen/src/anim/dragon/idle.rs @@ -1,5 +1,5 @@ use super::{super::Animation, DragonSkeleton, SkeletonAttr}; -//use std::{f32::consts::PI, ops::Mul}; +use std::ops::Mul; use vek::*; pub struct IdleAnimation; @@ -10,109 +10,122 @@ impl Animation for IdleAnimation { fn update_skeleton( skeleton: &Self::Skeleton, - _global_time: Self::Dependency, - _anim_time: f64, + global_time: Self::Dependency, + anim_time: f64, _rate: &mut f32, - _skeleton_attr: &SkeletonAttr, + skeleton_attr: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const HEAD_X: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const HEAD_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const CHEST_F_X: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const CHEST_F_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const CHEST_R_X: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const CHEST_R_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const TAIL_F_X: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const TAIL_F_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const TAIL_R_X: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const TAIL_R_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const WING_IN_X: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const WING_IN_Y: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const WING_IN_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const WING_OUT_X: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const WING_OUT_Y: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const WING_OUT_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const FEET_F_X: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const FEET_F_Y: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const FEET_F_Z: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const FEET_B_X: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const FEET_B_Y: f32 = 0.0; - #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] - const FEET_B_Z: f32 = 0.0; + let wave_slow = (anim_time as f32 * 4.5).sin(); + let wave_slow_cos = (anim_time as f32 * 4.5).cos(); - next.head.offset = Vec3::new(0.0, *HEAD_X, *HEAD_Z); - next.head.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.head.scale = Vec3::one() * 1.01; + let duck_head_look = Vec2::new( + ((global_time + anim_time) as f32 / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + ((global_time + anim_time) as f32 / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, + ); - next.chest_front.offset = Vec3::new(0.0, *CHEST_F_X, *CHEST_F_Z); - next.chest_front.ori = Quaternion::rotation_x(0.0); - next.chest_front.scale = Vec3::one() * 1.01; + next.head.offset = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); + next.head.ori = Quaternion::rotation_z(duck_head_look.x) + * Quaternion::rotation_x(-duck_head_look.y.abs() + wave_slow_cos * 0.03); + next.head.scale = Vec3::one(); - next.chest_rear.offset = Vec3::new(0.0, *CHEST_R_X, *CHEST_R_Z); - next.chest_rear.ori = Quaternion::rotation_x(0.0); - next.chest_rear.scale = Vec3::one() * 1.01; + next.chest_front.offset = Vec3::new( + 0.0, + skeleton_attr.chest_front.0, + wave_slow * 0.3 + skeleton_attr.chest_front.1, + ) * 1.05; + next.chest_front.ori = Quaternion::rotation_y(wave_slow * 0.03); + next.chest_front.scale = Vec3::one() * 1.05; - next.tail_front.offset = Vec3::new(0.0, *TAIL_F_X, *TAIL_F_Z); - next.tail_front.ori = Quaternion::rotation_x(0.0); - next.tail_front.scale = Vec3::one() * 1.01; + next.chest_rear.offset = Vec3::new( + 0.0, + skeleton_attr.chest_rear.0, + wave_slow * 0.3 + skeleton_attr.chest_rear.1, + ) * 1.05; + next.chest_rear.ori = Quaternion::rotation_y(wave_slow * 0.03); + next.chest_rear.scale = Vec3::one() * 1.05; - next.tail_rear.offset = Vec3::new(0.0, *TAIL_R_X, *TAIL_R_Z); - next.tail_rear.ori = Quaternion::rotation_x(0.0); - next.tail_rear.scale = Vec3::one() * 1.01; + next.tail_front.offset = Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); + next.tail_front.ori = Quaternion::rotation_x(wave_slow_cos * 0.03); + next.tail_front.scale = Vec3::one(); - next.wing_in_l.offset = Vec3::new(*WING_IN_X, *WING_IN_Y, *WING_IN_Z); - next.wing_in_l.ori = Quaternion::rotation_x(0.0); - next.wing_in_l.scale = Vec3::one() * 1.01; + next.tail_rear.offset = Vec3::new(0.0, skeleton_attr.tail_rear.0, skeleton_attr.tail_rear.1); + next.tail_rear.ori = Quaternion::rotation_x(wave_slow_cos * 0.03); + next.tail_rear.scale = Vec3::one(); - next.wing_in_r.offset = Vec3::new(-*WING_IN_X, *WING_IN_Y, *WING_IN_Z); - next.wing_in_r.ori = Quaternion::rotation_x(0.0); - next.wing_in_r.scale = Vec3::one() * 1.01; + next.wing_in_l.offset = Vec3::new( + -skeleton_attr.wing_in.0, + skeleton_attr.wing_in.1, + skeleton_attr.wing_in.2, + ); + next.wing_in_l.ori = Quaternion::rotation_z(0.0); + next.wing_in_l.scale = Vec3::one() * 1.05; - next.wing_out_l.offset = Vec3::new(*WING_OUT_X, *WING_OUT_Y, *WING_OUT_Z); - next.wing_out_l.ori = Quaternion::rotation_x(0.0); - next.wing_out_l.scale = Vec3::one() * 1.01; + next.wing_in_r.offset = Vec3::new( + skeleton_attr.wing_in.0, + skeleton_attr.wing_in.1, + skeleton_attr.wing_in.2, + ); + next.wing_in_r.ori = Quaternion::rotation_y(0.0); + next.wing_in_r.scale = Vec3::one() * 1.05; - next.wing_out_r.offset = Vec3::new(-*WING_OUT_X, *WING_OUT_Y, *WING_OUT_Z); - next.wing_out_r.ori = Quaternion::rotation_x(0.0); - next.wing_out_r.scale = Vec3::one() * 1.01; + next.wing_out_l.offset = Vec3::new( + -skeleton_attr.wing_out.0, + skeleton_attr.wing_out.1, + skeleton_attr.wing_out.2, + ); + next.wing_out_l.ori = Quaternion::rotation_z(0.0); + next.wing_out_l.scale = Vec3::one() * 1.05; - next.foot_fl.offset = Vec3::new(*FEET_F_X, *FEET_F_Y, *FEET_F_Z); + next.wing_in_r.offset = Vec3::new( + skeleton_attr.wing_out.0, + skeleton_attr.wing_out.1, + skeleton_attr.wing_out.2, + ); + next.wing_out_r.ori = Quaternion::rotation_y(0.0); + next.wing_out_r.scale = Vec3::one() * 1.05; + + next.foot_fl.offset = Vec3::new( + -skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2, + ) * 1.05; next.foot_fl.ori = Quaternion::rotation_x(0.0); - next.foot_fl.scale = Vec3::one() * 1.01; + next.foot_fl.scale = Vec3::one() * 1.05; - next.foot_fr.offset = Vec3::new(-*FEET_F_X, *FEET_F_Y, *FEET_F_Z); + next.foot_fr.offset = Vec3::new( + skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2, + ) * 1.05; next.foot_fr.ori = Quaternion::rotation_x(0.0); - next.foot_fr.scale = Vec3::one() * 1.01; + next.foot_fr.scale = Vec3::one() * 1.05; - next.foot_bl.offset = Vec3::new(*FEET_F_X, *FEET_B_Y, *FEET_B_Z); + next.foot_bl.offset = Vec3::new( + -skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2, + ) * 1.05; next.foot_bl.ori = Quaternion::rotation_x(0.0); - next.foot_bl.scale = Vec3::one() * 1.01; + next.foot_bl.scale = Vec3::one() * 1.05; - next.foot_br.offset = Vec3::new(-*FEET_F_X, *FEET_B_Y, *FEET_B_Z); + next.foot_br.offset = Vec3::new( + skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2, + ) * 1.05; next.foot_br.ori = Quaternion::rotation_x(0.0); - next.foot_br.scale = Vec3::one() * 1.01; + next.foot_br.scale = Vec3::one() * 1.05; + next } } diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index 4324d9053a..a491ad3b8f 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -10,6 +10,51 @@ use crate::render::FigureBoneData; use common::comp::{self}; use vek::Vec3; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const HEAD_X: f32 = 4.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const HEAD_Z: f32 = 11.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const CHEST_F_X: f32 = 0.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const CHEST_F_Z: f32 = 14.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const CHEST_R_X: f32 = -13.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const CHEST_R_Z: f32 = 0.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const TAIL_F_X: f32 = -11.5; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const TAIL_F_Z: f32 = 16.5; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const TAIL_R_X: f32 = -25.5; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const TAIL_R_Z: f32 = 0.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const WING_IN_X: f32 = 10.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const WING_IN_Y: f32 = -32.5; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const WING_IN_Z: f32 = -19.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const WING_OUT_X: f32 = 0.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const WING_OUT_Y: f32 = 1.5; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const WING_OUT_Z: f32 = -10.5; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const FEET_F_X: f32 = 4.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const FEET_F_Y: f32 = 0.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const FEET_F_Z: f32 = 1.5; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const FEET_B_X: f32 = 4.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const FEET_B_Y: f32 = -15.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const FEET_B_Z: f32 = 3.0; + #[derive(Clone, Default)] pub struct DragonSkeleton { head: Bone, @@ -148,31 +193,31 @@ impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { use comp::dragon::Species::*; Self { head: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 0.0), + (Reddragon, _) => (*HEAD_X, *HEAD_Z), }, chest_front: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 0.0), + (Reddragon, _) => (*CHEST_F_X, *CHEST_F_Z), }, chest_rear: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 0.0), + (Reddragon, _) => (*CHEST_R_X, *CHEST_R_Z), }, tail_front: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 0.0), + (Reddragon, _) => (*TAIL_F_X, *TAIL_F_Z), }, tail_rear: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 0.0), + (Reddragon, _) => (*TAIL_R_X, *TAIL_R_Z), }, wing_in: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 0.0, 0.0), + (Reddragon, _) => (*WING_IN_X, *WING_IN_Y, *WING_IN_Z), }, wing_out: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 0.0, 0.0), + (Reddragon, _) => (*WING_OUT_X, *WING_OUT_Y, *WING_OUT_Z), }, feet_f: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 0.0, 0.0), + (Reddragon, _) => (*FEET_F_X, *FEET_F_Y, *FEET_F_Z), }, feet_b: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 0.0, 0.0), + (Reddragon, _) => (*FEET_B_X, *FEET_B_Y, *FEET_B_Z), }, } } diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 75b58a98e4..c9e529fdd2 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1052,7 +1052,7 @@ impl FigureMgr { is_player, ); }, - Body::Dragon(_) => { + Body::Dragon(dragon_body) => { let skeleton_attr = &self .dragon_model_cache .get_or_create_model( @@ -1064,6 +1064,7 @@ impl FigureMgr { None, ) .1; + let ref skeleton_attr = dragon_body.into(); let state = self .dragon_states From 61010851932363d30fea4bd7c78f30bcb1db63cb Mon Sep 17 00:00:00 2001 From: Snowram Date: Sun, 3 May 2020 18:24:58 +0200 Subject: [PATCH 05/19] Initial run animation work --- .../voxygen/voxel/dragon_lateral_manifest.ron | 16 +- .../voxel/npc/reddragon/female/wing_in_l.vox | Bin 57352 -> 57352 bytes .../voxel/npc/reddragon/female/wing_in_r.vox | Bin 57352 -> 57352 bytes .../voxel/npc/reddragon/male/wing_in_l.vox | Bin 57352 -> 57352 bytes .../voxel/npc/reddragon/male/wing_in_r.vox | Bin 57352 -> 57352 bytes voxygen/src/anim/dragon/idle.rs | 2 +- voxygen/src/anim/dragon/mod.rs | 15 +- voxygen/src/anim/dragon/run.rs | 159 +++++++++++++----- 8 files changed, 137 insertions(+), 55 deletions(-) diff --git a/assets/voxygen/voxel/dragon_lateral_manifest.ron b/assets/voxygen/voxel/dragon_lateral_manifest.ron index 63aef007dd..2ffdad5a15 100644 --- a/assets/voxygen/voxel/dragon_lateral_manifest.ron +++ b/assets/voxygen/voxel/dragon_lateral_manifest.ron @@ -17,37 +17,37 @@ lateral: ("npc.reddragon.male.wing_out_r"), ), foot_fl: ( - offset: (-2.5, 0.0, -6.0), + offset: (-2.5, -4.0, -1.5), lateral: ("npc.reddragon.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, 0.0, -6.0), + offset: (-2.5, -4.0, -1.5), lateral: ("npc.reddragon.male.foot_fr"), ), foot_bl: ( - offset: (-2.5, 0.0, -7.0), + offset: (-2.5, -4.0, -3.0), lateral: ("npc.reddragon.male.foot_bl"), ), foot_br: ( - offset: (-2.5, 0.0, -7.0), + offset: (-2.5, -4.0, -3.0), lateral: ("npc.reddragon.male.foot_br"), ) ), (Reddragon, Female): ( wing_in_l: ( - offset: (20.0, 20.0, 5.0), + offset: (-0.5, -3.5, -27.0), lateral: ("npc.reddragon.female.wing_in_l"), ), wing_in_r: ( - offset: (20.0, 20.0, 5.0), + offset: (-0.5, -3.5, -27.0), lateral: ("npc.reddragon.female.wing_in_r"), ), wing_out_l: ( - offset: (20.0, 20.0, 5.0), + offset: (-0.5, -3.5, -27.0), lateral: ("npc.reddragon.female.wing_out_l"), ), wing_out_r: ( - offset: (20.0, 20.0, 5.0), + offset: (-0.5, -3.5, -27.0), lateral: ("npc.reddragon.female.wing_out_r"), ), foot_fl: ( diff --git a/assets/voxygen/voxel/npc/reddragon/female/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/female/wing_in_l.vox index 9bb52f6467d940ac077a47f0bcd82b4edaccce89..5d3e33a6646d7d2552429e7510ab69b27fdf2b77 100644 GIT binary patch delta 1813 zcmWmExtZHW00z*}E=k~nJ`Fr@be1>26$_MYf@!-ylD;LhJ zEX+)d4D7w1j+Ta+ijsnyjFf~EM-II5!WRNXwuN8iw^`?+Ne81*C!;|}qh4pD?sE^1 zPOn?Njv76WYQ2vtBZx|)hzcVinYOUxMwA&*lp0l(7+G{OI!>PJkDsAG7-aNnpwWxL z(jN9Lv`5n&owiW(GH>C_{0uMCGrV%p$YFejJ63#a}Wl70(GCtKI8`o{f6 z*6M2as%J>6Eu`f$WaSpJ;u-Q{3wbWhRFF604nb>DP3oBQu&ab(Z0#i6urx%`VTpn{+^MJiI&;YG;)!(TxBIo z@0YTQGb*p--00oA%OSJ=4=)tf|<&qZ)u9S}L z%{!I6%UV9vC%iG(KmG1!q+_D6A7)v~TI02iHpM@Yqq2=ISo8 z;2N*Fk+s_%QiZ|M=@}iLPEN9wGYtzhD-~y2Q+|<+#;-CbBPC&Q40}dLv16iTreUG3 zt^cY}ai-)#K~6@>=o}AB^vrb5_aa-l%7!yF6(t2Z8KZB&z(mhXxBFRWS!sMMYAWTD zf}GKZV_>3ZrZWSJY-y;ed}K-r<-vxlJTuDDQcUtzAvpsTF-dAh7x>!{%)_CzH zTU^hw_d;i*ba72%S);9TtFcyn>-i?K5nJ!nma=wT$BYmOeZWQ8Mh>? OzT?C3pFfj-|N9>vHVCNz delta 1813 zcmWmExtZKH00vO(&cXXW=iFUcw$*_$x3H}+P(G=m`P_>ePz%mnjvsOEajS;m*6m>=w^+pyAM#s@}{rDOB$snWIK%>QA zX{W~)+R=1J!xm~@cUySbJ;Uq%8FuV7vOhe-;jo3n@fnWCEgX|)NRllismxqw>T~yV zS*R=AE1w}Pw~$uPkX2jA>SxI7E#!?fQ(3G2(RrX#=v7kmTPTKSD0QS9pP{1Gxq5nr zX41)7r*v@7fg=ei8941PL!M}xR}*kUiZ&O$P{iWQhAr1(Z0#i6urxX`VTpn{+^MJiI&;YG;)!(TxBIo z@0YTQGb%6ST|<&tL#E|iY# z)jO5E$y(mkC%iG(KmEhcNXJBBKg_a}wZ>~3ZHj*)M|GtaW7sn~iX9UzGYt!M zVf|NyiW4Pg3UV@1M(227qGzUaz8BfbRW_WcsVFJP$rybD1}1uDx`&^ImX*fGqNY+V zDaaXpI0hzqW;!#l$d-nh%15T8P#$c!$}^)ZEyX0yHu=fsJJ};A<;QAGR~M_w#TqZZ zWQ*%r_Fm|0lrFAmENiq?ZZ+1bZ#~~cHe&0Y+EUi8D_L5Cf>OCsmuo*Gjp>A?B!?{t PtMB+Q{_{Qg_rL!EG@$)u diff --git a/assets/voxygen/voxel/npc/reddragon/female/wing_in_r.vox b/assets/voxygen/voxel/npc/reddragon/female/wing_in_r.vox index ab80dfab8992af94f5efbde0861a5ee8989dde2a..83cce30c40f3e702ca55f21bdc4bd3e0f4a4119d 100644 GIT binary patch delta 1813 zcmWmFxtZKH7zSWy=iq&xbL}Zv>cE*>U@IFapH$I2?!^tL1!peDFM@YI5KDr@50Lxo z_wLv4-QR!RpSI9MU$#&MWG!pi?b&UirPuBcTNqe#iY=U?atr6E+QKEOw{VS`E!?7Z z3(rxvg_o$`!fP~a;f?#-xP`I&3|aLV2076))3MO9(v*)-Q)!nJepXessR8!n=!eRVXN_s5#NF(pDZoc5;?I69Xe@ zt&-#voGCd`u~M_pFyH;OOmvL&^&<={M!RpuO^$eRZ(Tk##MOW~|J4q7tO3v@BVsA}W?!w%qHPdG|Bl zi_|wH^|mC{;~o+_{%E%!nnyU=;YaUw)p}Cxf>OJ(u4nDm&2oDsBaLZ!Qj$p3jwH@c zY}&*oJ=)YK*Hx_4EHuotjrV_Y<1QYUU2A4d<4Vqjf^$4pq0?QXQMy%ja%Ye|2aY79WaJc-RMa%Ibo302 zOw25-oH%pg%8h64FMeKm>H%Z6?l~?+^cn^CwIvOe1&v5PF@tRJ`h8K#1D}3 z>-X;0@7>>j-H%&nqjd}Q3E9X-_A|>CItJ}w+QP`%(rn=r)mu16)fO&MxrJ*~Y~dE= zTX>GLExbhO7G9%d3vb-t4qKS&&yZK2VU#li3q40VR@(Xz8fxu|l7gvmEi(fP{pecR z(b7;ik5Ex+kFDeJ^ByLRYH+bUA0FY9e1=ns_L`x+>N{rSk8pIn$iex2M^9`U^kct; zkKGo&^6g3G{H-%~=e*AKZIpU|cx;>|zx&bot_triE>xkUqNd?Q%Su;y0NKk$4$O>9 zWTi?{P;#c?M9oUWk(TA|r(>pPVkjSBBrOa`PQiuNjD}b(58X3yW?p#RBI_O+D(=#zJ@_P6T2`~0T**?Ov91U{QH^|!cZ5&ip7Bj!#t-L&y}m|8~G#r49CO$5n2a}&Q8wsObm>??H}Q={|v8kGRTYUCo`9s{+rC@RTlCh zOL?Z^M9oUWk(Pz-?q{ZFVqoNb_Xuyi^0IR?Zd|!==ETa8g_((wfu4?*hMJ0!f}DHi zCne#)o*m=pyATaqm}wW4nhi87pV`-wb&jlSIhwID7lTTW_0qEBorJQ-=EY6+?H zQ=2xmNfVp;o7w zA%YLh7oM1V6*Jyoyphbq z#LU8xl@n(!T)FYg{l(8KZ@lxtR~9o_Is-)h;f(P$^N^#5?Bq;oSuPaHeU-Vq$==^4 i21YXdKfe47-}!^i_u>1K_S4Tav<{Z`pFh)o|N9>-CjCPI diff --git a/assets/voxygen/voxel/npc/reddragon/male/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/male/wing_in_l.vox index 9bb52f6467d940ac077a47f0bcd82b4edaccce89..5d3e33a6646d7d2552429e7510ab69b27fdf2b77 100644 GIT binary patch delta 1813 zcmWmExtZHW00z*}E=k~nJ`Fr@be1>26$_MYf@!-ylD;LhJ zEX+)d4D7w1j+Ta+ijsnyjFf~EM-II5!WRNXwuN8iw^`?+Ne81*C!;|}qh4pD?sE^1 zPOn?Njv76WYQ2vtBZx|)hzcVinYOUxMwA&*lp0l(7+G{OI!>PJkDsAG7-aNnpwWxL z(jN9Lv`5n&owiW(GH>C_{0uMCGrV%p$YFejJ63#a}Wl70(GCtKI8`o{f6 z*6M2as%J>6Eu`f$WaSpJ;u-Q{3wbWhRFF604nb>DP3oBQu&ab(Z0#i6urx%`VTpn{+^MJiI&;YG;)!(TxBIo z@0YTQGb*p--00oA%OSJ=4=)tf|<&qZ)u9S}L z%{!I6%UV9vC%iG(KmG1!q+_D6A7)v~TI02iHpM@Yqq2=ISo8 z;2N*Fk+s_%QiZ|M=@}iLPEN9wGYtzhD-~y2Q+|<+#;-CbBPC&Q40}dLv16iTreUG3 zt^cY}ai-)#K~6@>=o}AB^vrb5_aa-l%7!yF6(t2Z8KZB&z(mhXxBFRWS!sMMYAWTD zf}GKZV_>3ZrZWSJY-y;ed}K-r<-vxlJTuDDQcUtzAvpsTF-dAh7x>!{%)_CzH zTU^hw_d;i*ba72%S);9TtFcyn>-i?K5nJ!nma=wT$BYmOeZWQ8Mh>? OzT?C3pFfj-|N9>vHVCNz delta 1813 zcmWmExtZKH00vO(&cXXW=iFUcw$*_$x3H}+P(G=m`P_>ePz%mnjvsOEajS;m*6m>=w^+pyAM#s@}{rDOB$snWIK%>QA zX{W~)+R=1J!xm~@cUySbJ;Uq%8FuV7vOhe-;jo3n@fnWCEgX|)NRllismxqw>T~yV zS*R=AE1w}Pw~$uPkX2jA>SxI7E#!?fQ(3G2(RrX#=v7kmTPTKSD0QS9pP{1Gxq5nr zX41)7r*v@7fg=ei8941PL!M}xR}*kUiZ&O$P{iWQhAr1(Z0#i6urxX`VTpn{+^MJiI&;YG;)!(TxBIo z@0YTQGb%6ST|<&tL#E|iY# z)jO5E$y(mkC%iG(KmEhcNXJBBKg_a}wZ>~3ZHj*)M|GtaW7sn~iX9UzGYt!M zVf|NyiW4Pg3UV@1M(227qGzUaz8BfbRW_WcsVFJP$rybD1}1uDx`&^ImX*fGqNY+V zDaaXpI0hzqW;!#l$d-nh%15T8P#$c!$}^)ZEyX0yHu=fsJJ};A<;QAGR~M_w#TqZZ zWQ*%r_Fm|0lrFAmENiq?ZZ+1bZ#~~cHe&0Y+EUi8D_L5Cf>OCsmuo*Gjp>A?B!?{t PtMB+Q{_{Qg_rL!EG@$)u diff --git a/assets/voxygen/voxel/npc/reddragon/male/wing_in_r.vox b/assets/voxygen/voxel/npc/reddragon/male/wing_in_r.vox index ab80dfab8992af94f5efbde0861a5ee8989dde2a..83cce30c40f3e702ca55f21bdc4bd3e0f4a4119d 100644 GIT binary patch delta 1813 zcmWmFxtZKH7zSWy=iq&xbL}Zv>cE*>U@IFapH$I2?!^tL1!peDFM@YI5KDr@50Lxo z_wLv4-QR!RpSI9MU$#&MWG!pi?b&UirPuBcTNqe#iY=U?atr6E+QKEOw{VS`E!?7Z z3(rxvg_o$`!fP~a;f?#-xP`I&3|aLV2076))3MO9(v*)-Q)!nJepXessR8!n=!eRVXN_s5#NF(pDZoc5;?I69Xe@ zt&-#voGCd`u~M_pFyH;OOmvL&^&<={M!RpuO^$eRZ(Tk##MOW~|J4q7tO3v@BVsA}W?!w%qHPdG|Bl zi_|wH^|mC{;~o+_{%E%!nnyU=;YaUw)p}Cxf>OJ(u4nDm&2oDsBaLZ!Qj$p3jwH@c zY}&*oJ=)YK*Hx_4EHuotjrV_Y<1QYUU2A4d<4Vqjf^$4pq0?QXQMy%ja%Ye|2aY79WaJc-RMa%Ibo302 zOw25-oH%pg%8h64FMeKm>H%Z6?l~?+^cn^CwIvOe1&v5PF@tRJ`h8K#1D}3 z>-X;0@7>>j-H%&nqjd}Q3E9X-_A|>CItJ}w+QP`%(rn=r)mu16)fO&MxrJ*~Y~dE= zTX>GLExbhO7G9%d3vb-t4qKS&&yZK2VU#li3q40VR@(Xz8fxu|l7gvmEi(fP{pecR z(b7;ik5Ex+kFDeJ^ByLRYH+bUA0FY9e1=ns_L`x+>N{rSk8pIn$iex2M^9`U^kct; zkKGo&^6g3G{H-%~=e*AKZIpU|cx;>|zx&bot_triE>xkUqNd?Q%Su;y0NKk$4$O>9 zWTi?{P;#c?M9oUWk(TA|r(>pPVkjSBBrOa`PQiuNjD}b(58X3yW?p#RBI_O+D(=#zJ@_P6T2`~0T**?Ov91U{QH^|!cZ5&ip7Bj!#t-L&y}m|8~G#r49CO$5n2a}&Q8wsObm>??H}Q={|v8kGRTYUCo`9s{+rC@RTlCh zOL?Z^M9oUWk(Pz-?q{ZFVqoNb_Xuyi^0IR?Zd|!==ETa8g_((wfu4?*hMJ0!f}DHi zCne#)o*m=pyATaqm}wW4nhi87pV`-wb&jlSIhwID7lTTW_0qEBorJQ-=EY6+?H zQ=2xmNfVp;o7w zA%YLh7oM1V6*Jyoyphbq z#LU8xl@n(!T)FYg{l(8KZ@lxtR~9o_Is-)h;f(P$^N^#5?Bq;oSuPaHeU-Vq$==^4 i21YXdKfe47-}!^i_u>1K_S4Tav<{Z`pFh)o|N9>-CjCPI diff --git a/voxygen/src/anim/dragon/idle.rs b/voxygen/src/anim/dragon/idle.rs index fa0b5018f4..b827ca7ba0 100644 --- a/voxygen/src/anim/dragon/idle.rs +++ b/voxygen/src/anim/dragon/idle.rs @@ -86,7 +86,7 @@ impl Animation for IdleAnimation { next.wing_out_l.ori = Quaternion::rotation_z(0.0); next.wing_out_l.scale = Vec3::one() * 1.05; - next.wing_in_r.offset = Vec3::new( + next.wing_out_r.offset = Vec3::new( skeleton_attr.wing_out.0, skeleton_attr.wing_out.1, skeleton_attr.wing_out.2, diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index a491ad3b8f..fd915158ce 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -33,15 +33,15 @@ const TAIL_R_Z: f32 = 0.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const WING_IN_X: f32 = 10.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_IN_Y: f32 = -32.5; +const WING_IN_Y: f32 = -28.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_IN_Z: f32 = -19.0; +const WING_IN_Z: f32 = 6.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_OUT_X: f32 = 0.0; +const WING_OUT_X: f32 = 1.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_OUT_Y: f32 = 1.5; +const WING_OUT_Y: f32 = 2.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_OUT_Z: f32 = -10.5; +const WING_OUT_Z: f32 = 12.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const FEET_F_X: f32 = 4.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] @@ -159,6 +159,7 @@ pub struct SkeletonAttr { wing_out: (f32, f32, f32), feet_f: (f32, f32, f32), feet_b: (f32, f32, f32), + height: f32, } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -184,6 +185,7 @@ impl Default for SkeletonAttr { wing_out: (0.0, 0.0, 0.0), feet_f: (0.0, 0.0, 0.0), feet_b: (0.0, 0.0, 0.0), + height: (0.0), } } } @@ -219,6 +221,9 @@ impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { feet_b: match (body.species, body.body_type) { (Reddragon, _) => (*FEET_B_X, *FEET_B_Y, *FEET_B_Z), }, + height: match (body.species, body.body_type) { + (Reddragon, _) => (1.0), + }, } } } \ No newline at end of file diff --git a/voxygen/src/anim/dragon/run.rs b/voxygen/src/anim/dragon/run.rs index 2165c07ddf..695a8407d7 100644 --- a/voxygen/src/anim/dragon/run.rs +++ b/voxygen/src/anim/dragon/run.rs @@ -1,5 +1,5 @@ use super::{super::Animation, DragonSkeleton, SkeletonAttr}; -//use std::{f32::consts::PI, ops::Mul}; +use std::{f32::consts::PI, ops::Mul}; use vek::*; pub struct RunAnimation; @@ -10,64 +10,141 @@ impl Animation for RunAnimation { fn update_skeleton( skeleton: &Self::Skeleton, - (_velocity, _global_time): Self::Dependency, - _anim_time: f64, + (_velocity, global_time): Self::Dependency, + anim_time: f64, _rate: &mut f32, - _skeleton_attr: &SkeletonAttr, + skeleton_attr: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - next.head.offset = Vec3::new(0.0, 7.5, 15.0) / 11.0; - next.head.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.head.scale = Vec3::one() * 1.01; + let lab = 14; + let vertlf = (anim_time as f32 * lab as f32 + PI * 1.8).sin().max(0.15); + let vertrfoffset = (anim_time as f32 * lab as f32 + PI * 0.80).sin().max(0.15); + let vertlboffset = (anim_time as f32 * lab as f32).sin().max(0.15); + let vertrb = (anim_time as f32 * lab as f32 + PI).sin().max(0.15); - next.chest_front.offset = Vec3::new(0.0, 4.5, 2.0); - next.chest_front.ori = Quaternion::rotation_x(0.0); - next.chest_front.scale = Vec3::one() * 1.01; + let horilf = (anim_time as f32 * lab as f32 + PI * 1.2).sin(); + let horirfoffset = (anim_time as f32 * lab as f32 + PI * 0.20).sin(); + let horilboffset = (anim_time as f32 * lab as f32 + PI * 1.4).sin(); + let horirb = (anim_time as f32 * lab as f32 + PI * 0.4).sin(); - next.chest_rear.offset = Vec3::new(0.0, 4.5, 2.0); - next.chest_rear.ori = Quaternion::rotation_x(0.0); - next.chest_rear.scale = Vec3::one() * 1.01; + let vertchest = (anim_time as f32 * lab as f32 + PI * 0.3).sin().max(0.2); + let horichest = (anim_time as f32 * lab as f32 + PI * 0.8).sin(); + let verthead = (anim_time as f32 * lab as f32 + PI * 0.3).sin(); - next.tail_front.offset = Vec3::new(0.0, 4.5, 2.0); + let footl = (anim_time as f32 * lab as f32 + PI).sin(); + let footr = (anim_time as f32 * lab as f32).sin(); + + let wolf_look = Vec2::new( + ((global_time + anim_time) as f32 / 4.0) + .floor() + .mul(7331.0) + .sin() + * 0.25, + ((global_time + anim_time) as f32 / 4.0) + .floor() + .mul(1337.0) + .sin() + * 0.125, + ); + + next.head.offset = Vec3::new( + 0.0, + skeleton_attr.head.0 + horichest * 0.9, + skeleton_attr.head.1 + verthead * -0.9, + ) * 1.05; + next.head.ori = + Quaternion::rotation_x(wolf_look.y) * Quaternion::rotation_z(wolf_look.x); + next.head.scale = Vec3::one() * 1.05; + + next.tail_front.offset = Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); next.tail_front.ori = Quaternion::rotation_x(0.0); - next.tail_front.scale = Vec3::one() * 1.01; + next.tail_front.scale = Vec3::one(); - next.tail_rear.offset = Vec3::new(0.0, 4.5, 2.0); + next.tail_rear.offset = Vec3::new(0.0, skeleton_attr.tail_rear.0, skeleton_attr.tail_rear.1); next.tail_rear.ori = Quaternion::rotation_x(0.0); - next.tail_rear.scale = Vec3::one() * 1.01; + next.tail_rear.scale = Vec3::one(); - next.wing_in_l.offset = Vec3::new(0.0, 4.5, 2.0); - next.wing_in_l.ori = Quaternion::rotation_x(0.0); - next.wing_in_l.scale = Vec3::one() * 1.01; + next.chest_front.offset = Vec3::new( + 0.0, + skeleton_attr.chest_front.0 + horichest * 1.25, + skeleton_attr.chest_front.1 + vertchest * -1.6 + 1.0, + ) * 1.05; + next.chest_front.ori = Quaternion::rotation_y(horichest * -0.09); + next.chest_front.scale = Vec3::one() * 0.98 * 1.05; - next.wing_in_r.offset = Vec3::new(0.0, 4.5, 2.0); - next.wing_in_r.ori = Quaternion::rotation_x(0.0); - next.wing_in_r.scale = Vec3::one() * 1.01; + next.chest_rear.offset = Vec3::new( + 0.0, + skeleton_attr.chest_rear.0 + horichest * 1.25, + skeleton_attr.chest_rear.1 + vertchest * -1.6 + 1.0, + ) * 1.05; + next.chest_rear.ori = Quaternion::rotation_y(horichest * -0.09); + next.chest_rear.scale = Vec3::one() * 0.98 * 1.05; - next.wing_out_l.offset = Vec3::new(0.0, 4.5, 2.0); - next.wing_out_l.ori = Quaternion::rotation_x(0.0); - next.wing_out_l.scale = Vec3::one() * 1.01; + next.foot_fl.offset = Vec3::new( + -skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1 + horilf * 2.5, + skeleton_attr.feet_f.2 + vertlf * 5.0 * skeleton_attr.height - 0.5, + ) * 1.05; + next.foot_fl.ori = Quaternion::rotation_x(horilf * 0.4); + next.foot_fl.scale = Vec3::one() * 1.05; - next.wing_out_r.offset = Vec3::new(0.0, 4.5, 2.0); - next.wing_out_r.ori = Quaternion::rotation_x(0.0); - next.wing_out_r.scale = Vec3::one() * 1.01; + next.foot_fr.offset = Vec3::new( + skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1 + horirfoffset * 2.5, + skeleton_attr.feet_f.2 + vertrfoffset * 5.0 * skeleton_attr.height - 0.5, + ) * 1.05; + next.foot_fr.ori = Quaternion::rotation_x(horirfoffset * 0.4); + next.foot_fr.scale = Vec3::one() * 1.05; - next.foot_fl.offset = Vec3::new(0.0, 4.5, 2.0); - next.foot_fl.ori = Quaternion::rotation_x(0.0); - next.foot_fl.scale = Vec3::one() * 1.01; + next.foot_bl.offset = Vec3::new( + -skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1 + horilboffset * 3.0, + skeleton_attr.feet_b.2 + vertlboffset * 5.0 * skeleton_attr.height - 0.5, + ) * 1.05; + next.foot_bl.ori = Quaternion::rotation_x(horilboffset * 0.35); + next.foot_bl.scale = Vec3::one() * 1.05; - next.foot_fr.offset = Vec3::new(0.0, 4.5, 2.0); - next.foot_fr.ori = Quaternion::rotation_x(0.0); - next.foot_fr.scale = Vec3::one() * 1.01; + next.foot_br.offset = Vec3::new( + skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1 + horirb * 3.0, + skeleton_attr.feet_b.2 + vertrb * 5.0 * skeleton_attr.height - 0.5, + ) * 1.05; + next.foot_br.ori = Quaternion::rotation_x(horirb * 0.35); + next.foot_br.scale = Vec3::one() * 1.05; - next.foot_bl.offset = Vec3::new(0.0, 4.5, 2.0); - next.foot_bl.ori = Quaternion::rotation_x(0.0); - next.foot_bl.scale = Vec3::one() * 1.01; + next.wing_in_l.offset = Vec3::new( + -skeleton_attr.wing_in.0, + skeleton_attr.wing_in.1, + skeleton_attr.wing_in.2, + ); + next.wing_in_l.ori = Quaternion::rotation_y((footl * 0.35).max(0.0)); + next.wing_in_l.scale = Vec3::one() * 1.05; + + next.wing_in_r.offset = Vec3::new( + skeleton_attr.wing_in.0, + skeleton_attr.wing_in.1, + skeleton_attr.wing_in.2, + ); + next.wing_in_r.ori = Quaternion::rotation_y((footr * 0.35).max(0.0)); + next.wing_in_r.scale = Vec3::one() * 1.05; + + next.wing_out_l.offset = Vec3::new( + -skeleton_attr.wing_out.0, + skeleton_attr.wing_out.1, + skeleton_attr.wing_out.2, + ); + next.wing_out_l.ori = Quaternion::rotation_y((footl * 0.35).max(0.0)); + next.wing_out_l.scale = Vec3::one() * 1.05; + + next.wing_out_r.offset = Vec3::new( + skeleton_attr.wing_out.0, + skeleton_attr.wing_out.1, + skeleton_attr.wing_out.2, + ); + next.wing_out_r.ori = Quaternion::rotation_y((footr * 0.35).max(0.0)); + next.wing_out_r.scale = Vec3::one() * 1.05; - next.foot_br.offset = Vec3::new(0.0, 4.5, 2.0); - next.foot_br.ori = Quaternion::rotation_x(0.0); - next.foot_br.scale = Vec3::one() * 1.01; next } } From f671a60fff5f97309067a8b3992a0117eabbc2c4 Mon Sep 17 00:00:00 2001 From: Snowram Date: Tue, 5 May 2020 23:42:56 +0200 Subject: [PATCH 06/19] Initial fly animation work --- voxygen/src/anim/dragon/fly.rs | 161 ++++++++++++++++++++++++++++++++ voxygen/src/anim/dragon/mod.rs | 4 +- voxygen/src/anim/dragon/run.rs | 19 +++- voxygen/src/scene/figure/mod.rs | 2 +- 4 files changed, 179 insertions(+), 7 deletions(-) create mode 100644 voxygen/src/anim/dragon/fly.rs diff --git a/voxygen/src/anim/dragon/fly.rs b/voxygen/src/anim/dragon/fly.rs new file mode 100644 index 0000000000..09aaf27505 --- /dev/null +++ b/voxygen/src/anim/dragon/fly.rs @@ -0,0 +1,161 @@ +use super::{super::Animation, DragonSkeleton, SkeletonAttr}; +use std::{f32::consts::PI, ops::Mul}; +use vek::*; + +pub struct FlyAnimation; + +impl Animation for FlyAnimation { + type Dependency = (f32, f64); + type Skeleton = DragonSkeleton; + + fn update_skeleton( + skeleton: &Self::Skeleton, + (_velocity, global_time): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + skeleton_attr: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + let lab = 12.0; + + let vertlf = (anim_time as f32 * lab as f32 + PI * 1.8).sin().max(0.15); + let vertrfoffset = (anim_time as f32 * lab as f32 + PI * 0.80).sin().max(0.15); + let vertlboffset = (anim_time as f32 * lab as f32).sin().max(0.15); + let vertrb = (anim_time as f32 * lab as f32 + PI).sin().max(0.15); + + let horilf = (anim_time as f32 * lab as f32 + PI * 1.2).sin(); + let horirfoffset = (anim_time as f32 * lab as f32 + PI * 0.20).sin(); + let horilboffset = (anim_time as f32 * lab as f32 + PI * 1.4).sin(); + let horirb = (anim_time as f32 * lab as f32 + PI * 0.4).sin(); + + let vertchest = (anim_time as f32 * lab as f32 + PI * 0.3).sin().max(0.2); + let horichest = (anim_time as f32 * lab as f32 + PI * 0.8).sin(); + let verthead = (anim_time as f32 * lab as f32 + PI * 0.3).sin(); + + let footl = (anim_time as f32 * lab as f32 + PI).sin(); + let footr = (anim_time as f32 * lab as f32).sin(); + + let center = (anim_time as f32 * lab as f32 + PI / 2.0).sin(); + let centeroffset = (anim_time as f32 * lab as f32 + PI * 1.5).sin(); + + let wolf_look = Vec2::new( + ((global_time + anim_time) as f32 / 4.0) + .floor() + .mul(7331.0) + .sin() + * 0.25, + ((global_time + anim_time) as f32 / 4.0) + .floor() + .mul(1337.0) + .sin() + * 0.125, + ); + + next.head.offset = Vec3::new( + 0.0, + skeleton_attr.head.0 + 0.5, + skeleton_attr.head.1 + center * 0.5 - 1.0, + ); + next.head.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0 + center * 0.03); + next.head.scale = Vec3::one(); + + next.tail_front.offset = Vec3::new( + 0.0, + skeleton_attr.tail_front.0, + skeleton_attr.tail_front.1 + centeroffset * 0.6, + ); + next.tail_front.ori = Quaternion::rotation_x(center * 0.03); + next.tail_front.scale = Vec3::one(); + + next.tail_rear.offset = Vec3::new( + 0.0, + skeleton_attr.tail_rear.0, + skeleton_attr.tail_rear.1 + centeroffset * 0.6, + ); + next.tail_rear.ori = Quaternion::rotation_x(center * 0.03); + next.tail_rear.scale = Vec3::one(); + + next.chest_front.offset = Vec3::new( + 0.0, + skeleton_attr.chest_front.0, + skeleton_attr.chest_front.1, + ) * 1.05; + next.chest_front.ori = Quaternion::rotation_y(center * 0.05); + next.chest_front.scale = Vec3::one() * 1.05; + + next.chest_rear.offset = Vec3::new( + 0.0, + skeleton_attr.chest_rear.0, + skeleton_attr.chest_rear.1, + ) * 1.05; + next.chest_rear.ori = Quaternion::rotation_y(center * 0.05); + next.chest_rear.scale = Vec3::one() * 1.05; + + next.foot_fl.offset = Vec3::new( + -skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2, + ) * 1.05; + next.foot_fl.ori = Quaternion::rotation_x(-1.3 + footl * 0.06); + next.foot_fl.scale = Vec3::one() * 1.05; + + next.foot_fr.offset = Vec3::new( + skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2, + ) * 1.05; + next.foot_fr.ori = Quaternion::rotation_x(-1.3 + footl * 0.06); + next.foot_fr.scale = Vec3::one() * 1.05; + + next.foot_bl.offset = Vec3::new( + -skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2, + ) * 1.05; + next.foot_bl.ori = Quaternion::rotation_x(-1.3 + footl * 0.06); + next.foot_bl.scale = Vec3::one() * 1.05; + + next.foot_br.offset = Vec3::new( + skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2, + ) * 1.05; + next.foot_br.ori = Quaternion::rotation_x(-1.3 + footl * 0.06); + next.foot_br.scale = Vec3::one() * 1.05; + + next.wing_in_l.offset = Vec3::new( + -skeleton_attr.wing_in.0, + skeleton_attr.wing_in.1, + skeleton_attr.wing_in.2, + ); + next.wing_in_l.ori = Quaternion::rotation_y((0.57 + footl * 1.2).max(0.0)); + next.wing_in_l.scale = Vec3::one() * 1.05; + + next.wing_in_r.offset = Vec3::new( + skeleton_attr.wing_in.0, + skeleton_attr.wing_in.1, + skeleton_attr.wing_in.2, + ); + next.wing_in_r.ori = Quaternion::rotation_y((-0.57 + footr * 1.2).min(0.0)); + next.wing_in_r.scale = Vec3::one() * 1.05; + + next.wing_out_l.offset = Vec3::new( + -skeleton_attr.wing_out.0, + skeleton_attr.wing_out.1, + skeleton_attr.wing_out.2, + ); + next.wing_out_l.ori = Quaternion::rotation_y((0.57 + footl * 1.2).max(0.0)); + next.wing_out_l.scale = Vec3::one() * 1.05; + + next.wing_out_r.offset = Vec3::new( + skeleton_attr.wing_out.0, + skeleton_attr.wing_out.1, + skeleton_attr.wing_out.2, + ); + next.wing_out_r.ori = Quaternion::rotation_y((-0.57 + footr * 1.2).min(0.0)); + next.wing_out_r.scale = Vec3::one() * 1.05; + + next + } +} diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index fd915158ce..6f38213069 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -1,9 +1,9 @@ +pub mod fly; pub mod idle; -pub mod jump; pub mod run; // Reexports -pub use self::{idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation}; +pub use self::{fly::FlyAnimation, idle::IdleAnimation, run::RunAnimation}; use super::{Bone, Skeleton}; use crate::render::FigureBoneData; diff --git a/voxygen/src/anim/dragon/run.rs b/voxygen/src/anim/dragon/run.rs index 695a8407d7..5264e33ed0 100644 --- a/voxygen/src/anim/dragon/run.rs +++ b/voxygen/src/anim/dragon/run.rs @@ -35,6 +35,9 @@ impl Animation for RunAnimation { let footl = (anim_time as f32 * lab as f32 + PI).sin(); let footr = (anim_time as f32 * lab as f32).sin(); + let center = (anim_time as f32 * lab as f32 + PI / 2.0).sin(); + let centeroffset = (anim_time as f32 * lab as f32 + PI * 1.5).sin(); + let wolf_look = Vec2::new( ((global_time + anim_time) as f32 / 4.0) .floor() @@ -57,12 +60,20 @@ impl Animation for RunAnimation { Quaternion::rotation_x(wolf_look.y) * Quaternion::rotation_z(wolf_look.x); next.head.scale = Vec3::one() * 1.05; - next.tail_front.offset = Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); - next.tail_front.ori = Quaternion::rotation_x(0.0); + next.tail_front.offset = Vec3::new( + 0.0, + skeleton_attr.tail_front.0, + skeleton_attr.tail_front.1 + centeroffset * 0.6, + ); + next.tail_front.ori = Quaternion::rotation_x(center * 0.03); next.tail_front.scale = Vec3::one(); - next.tail_rear.offset = Vec3::new(0.0, skeleton_attr.tail_rear.0, skeleton_attr.tail_rear.1); - next.tail_rear.ori = Quaternion::rotation_x(0.0); + next.tail_rear.offset = Vec3::new( + 0.0, + skeleton_attr.tail_rear.0, + skeleton_attr.tail_rear.1 + centeroffset * 0.6, + ); + next.tail_rear.ori = Quaternion::rotation_x(center * 0.03); next.tail_rear.scale = Vec3::one(); next.chest_front.offset = Vec3::new( diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index c9e529fdd2..6edcb4b455 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1102,7 +1102,7 @@ impl FigureMgr { skeleton_attr, ), // In air - (false, _, false) => anim::dragon::JumpAnimation::update_skeleton( + (false, _, false) => anim::dragon::FlyAnimation::update_skeleton( &DragonSkeleton::new(), (vel.0.magnitude(), time), state.state_time, From 35e1a8ae60bbe314c06e09fec6c18fd380b918c1 Mon Sep 17 00:00:00 2001 From: Snowram Date: Wed, 6 May 2020 02:04:56 +0200 Subject: [PATCH 07/19] New dragon model, added jaw, splitted head into upper/lower --- .../voxygen/voxel/dragon_center_manifest.ron | 44 +++++++++----- .../voxygen/voxel/dragon_lateral_manifest.ron | 32 +++++------ .../npc/reddragon/female/6-tail_rear.vox | Bin 0 -> 1484 bytes .../npc/reddragon/female/chest_front.vox | Bin 59039 -> 5492 bytes .../voxel/npc/reddragon/female/chest_rear.vox | Bin 60563 -> 5984 bytes .../voxel/npc/reddragon/female/foot_bl.vox | Bin 55891 -> 1660 bytes .../voxel/npc/reddragon/female/foot_br.vox | Bin 55891 -> 1660 bytes .../voxel/npc/reddragon/female/foot_fl.vox | Bin 55891 -> 1932 bytes .../voxel/npc/reddragon/female/foot_fr.vox | Bin 55891 -> 1932 bytes .../voxel/npc/reddragon/female/head_lower.vox | Bin 0 -> 56303 bytes .../voxel/npc/reddragon/female/head_upper.vox | Bin 0 -> 57067 bytes .../voxel/npc/reddragon/female/jaw.vox | Bin 0 -> 1456 bytes .../npc/reddragon/female/old/chest_front.vox | Bin 0 -> 59039 bytes .../npc/reddragon/female/old/chest_rear.vox | Bin 0 -> 60563 bytes .../npc/reddragon/female/old/foot_bl.vox | Bin 0 -> 55891 bytes .../npc/reddragon/female/old/foot_br.vox | Bin 0 -> 55891 bytes .../npc/reddragon/female/old/foot_fl.vox | Bin 0 -> 55891 bytes .../npc/reddragon/female/old/foot_fr.vox | Bin 0 -> 55891 bytes .../npc/reddragon/female/{ => old}/head.vox | Bin .../npc/reddragon/female/old/tail_front.vox | Bin 0 -> 56267 bytes .../npc/reddragon/female/old/tail_rear.vox | Bin 0 -> 55875 bytes .../npc/reddragon/female/old/wing_in_l.vox | Bin 0 -> 57352 bytes .../npc/reddragon/female/old/wing_in_r.vox | Bin 0 -> 57352 bytes .../npc/reddragon/female/old/wing_out_l.vox | Bin 0 -> 58012 bytes .../npc/reddragon/female/old/wing_out_r.vox | Bin 0 -> 58012 bytes .../voxel/npc/reddragon/female/tail_front.vox | Bin 56267 -> 1892 bytes .../voxel/npc/reddragon/female/tail_rear.vox | Bin 55875 -> 55967 bytes .../voxel/npc/reddragon/female/wing_in_l.vox | Bin 57352 -> 56851 bytes .../voxel/npc/reddragon/female/wing_in_r.vox | Bin 57352 -> 56851 bytes .../voxel/npc/reddragon/female/wing_out_l.vox | Bin 58012 -> 58063 bytes .../voxel/npc/reddragon/female/wing_out_r.vox | Bin 58012 -> 58063 bytes .../voxel/npc/reddragon/male/chest_front.vox | Bin 59039 -> 5492 bytes .../voxel/npc/reddragon/male/chest_rear.vox | Bin 60563 -> 5984 bytes .../voxel/npc/reddragon/male/foot_bl.vox | Bin 55891 -> 1660 bytes .../voxel/npc/reddragon/male/foot_br.vox | Bin 55891 -> 1660 bytes .../voxel/npc/reddragon/male/foot_fl.vox | Bin 55891 -> 1932 bytes .../voxel/npc/reddragon/male/foot_fr.vox | Bin 55891 -> 1932 bytes .../voxel/npc/reddragon/male/head_lower.vox | Bin 0 -> 56303 bytes .../voxel/npc/reddragon/male/head_upper.vox | Bin 0 -> 57067 bytes .../voxygen/voxel/npc/reddragon/male/jaw.vox | Bin 0 -> 1456 bytes .../npc/reddragon/male/old/chest_front.vox | Bin 0 -> 59039 bytes .../npc/reddragon/male/old/chest_rear.vox | Bin 0 -> 60563 bytes .../voxel/npc/reddragon/male/old/foot_bl.vox | Bin 0 -> 55891 bytes .../voxel/npc/reddragon/male/old/foot_br.vox | Bin 0 -> 55891 bytes .../voxel/npc/reddragon/male/old/foot_fl.vox | Bin 0 -> 55891 bytes .../voxel/npc/reddragon/male/old/foot_fr.vox | Bin 0 -> 55891 bytes .../npc/reddragon/male/{ => old}/head.vox | Bin .../npc/reddragon/male/old/tail_front.vox | Bin 0 -> 56267 bytes .../npc/reddragon/male/old/tail_rear.vox | Bin 0 -> 55875 bytes .../npc/reddragon/male/old/wing_in_l.vox | Bin 0 -> 57352 bytes .../npc/reddragon/male/old/wing_in_r.vox | Bin 0 -> 57352 bytes .../npc/reddragon/male/old/wing_out_l.vox | Bin 0 -> 58012 bytes .../npc/reddragon/male/old/wing_out_r.vox | Bin 0 -> 58012 bytes .../voxel/npc/reddragon/male/tail_front.vox | Bin 56267 -> 1892 bytes .../voxel/npc/reddragon/male/tail_rear.vox | Bin 55875 -> 55967 bytes .../voxel/npc/reddragon/male/wing_in_l.vox | Bin 57352 -> 2368 bytes .../voxel/npc/reddragon/male/wing_in_r.vox | Bin 57352 -> 2368 bytes .../voxel/npc/reddragon/male/wing_out_l.vox | Bin 58012 -> 3580 bytes .../voxel/npc/reddragon/male/wing_out_r.vox | Bin 58012 -> 3580 bytes voxygen/src/anim/bird_medium/fly.rs | 5 ++ voxygen/src/anim/dragon/fly.rs | 31 ++++++++-- voxygen/src/anim/dragon/idle.rs | 35 ++++++++++-- voxygen/src/anim/dragon/mod.rs | 54 +++++++++++++----- voxygen/src/anim/dragon/run.rs | 33 +++++++++-- voxygen/src/scene/figure/cache.rs | 14 ++++- voxygen/src/scene/figure/load.rs | 54 ++++++++++++++++-- 66 files changed, 234 insertions(+), 68 deletions(-) create mode 100644 assets/voxygen/voxel/npc/reddragon/female/6-tail_rear.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/head_lower.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/head_upper.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/jaw.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/chest_front.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/chest_rear.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/foot_fr.vox rename assets/voxygen/voxel/npc/reddragon/female/{ => old}/head.vox (100%) create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/tail_front.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/tail_rear.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/wing_in_l.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/wing_in_r.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/wing_out_l.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/wing_out_r.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/head_lower.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/head_upper.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/chest_front.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/chest_rear.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/foot_fr.vox rename assets/voxygen/voxel/npc/reddragon/male/{ => old}/head.vox (100%) create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/tail_front.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/tail_rear.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/wing_in_l.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/wing_in_r.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/wing_out_l.vox create mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/wing_out_r.vox diff --git a/assets/voxygen/voxel/dragon_center_manifest.ron b/assets/voxygen/voxel/dragon_center_manifest.ron index bb906eeba8..af89c71348 100644 --- a/assets/voxygen/voxel/dragon_center_manifest.ron +++ b/assets/voxygen/voxel/dragon_center_manifest.ron @@ -1,45 +1,61 @@ ({ (Reddragon, Male): ( - head: ( - offset: (-4.5, -2.0, -7.5), - center: ("npc.reddragon.male.head"), + upper: ( + offset: (-6.5, -2.0, -6.0), + center: ("npc.reddragon.male.head_upper"), + ), + lower: ( + offset: (-2.5, -2.0, -5.0), + center: ("npc.reddragon.male.head_lower"), + ), + jaw: ( + offset: (-3.5, -2.0, -1.5), + center: ("npc.reddragon.male.jaw"), ), chest_front: ( - offset: (-6.5, -6.0, -6.0), + offset: (-6.5, -6.0, -7.5), center: ("npc.reddragon.male.chest_front"), ), chest_rear: ( - offset: (-6.5, -7.0, -6.0), + offset: (-6.5, -7.0, -7.0), center: ("npc.reddragon.male.chest_rear"), ), tail_front: ( - offset: (-2.5, -5.5, -3.0), + offset: (-2.5, -6.0, -3.5), center: ("npc.reddragon.male.tail_front"), ), tail_rear: ( - offset: (-1.5, -7.0, -2.5), + offset: (-3.5, -8.0, -3.0), center: ("npc.reddragon.male.tail_rear"), ) ), (Reddragon, Female): ( - head: ( - offset: (-4.5, -2.0, -7.5), - center: ("npc.reddragon.female.head"), + upper: ( + offset: (-6.5, -2.0, -6.0), + center: ("npc.reddragon.female.head_upper"), + ), + lower: ( + offset: (-2.5, -2.0, -5.0), + center: ("npc.reddragon.female.head_lower"), + ), + jaw: ( + offset: (-3.5, -2.0, -1.5), + center: ("npc.reddragon.female.jaw"), ), chest_front: ( - offset: (-6.5, -6.0, -6.0), + offset: (-6.5, -6.0, -7.5), center: ("npc.reddragon.female.chest_front"), ), chest_rear: ( - offset: (-6.5, -7.0, -6.0), + offset: (-6.5, -7.0, -7.0), center: ("npc.reddragon.female.chest_rear"), ), tail_front: ( - offset: (-2.5, -5.5, -3.0), + offset: (-2.5, -6.0, -3.5), center: ("npc.reddragon.female.tail_front"), ), tail_rear: ( - offset: (-1.5, -7.0, -2.5), + offset: (-3.5, -8.0, -3.0), center: ("npc.reddragon.female.tail_rear"), ) ), diff --git a/assets/voxygen/voxel/dragon_lateral_manifest.ron b/assets/voxygen/voxel/dragon_lateral_manifest.ron index 2ffdad5a15..4b606120fe 100644 --- a/assets/voxygen/voxel/dragon_lateral_manifest.ron +++ b/assets/voxygen/voxel/dragon_lateral_manifest.ron @@ -1,69 +1,69 @@ ({ (Reddragon, Male): ( wing_in_l: ( - offset: (-0.5, -3.5, -27.0), + offset: (-0.5, -3.5, -44.0), lateral: ("npc.reddragon.male.wing_in_l"), ), wing_in_r: ( - offset: (-0.5, -3.5, -27.0), + offset: (-0.5, -3.5, -44.0), lateral: ("npc.reddragon.male.wing_in_r"), ), wing_out_l: ( - offset: (-0.5, -3.5, -27.0), + offset: (-0.5, -3.5, -38.0), lateral: ("npc.reddragon.male.wing_out_l"), ), wing_out_r: ( - offset: (-0.5, -3.5, -27.0), + offset: (-0.5, -3.5, -38.0), lateral: ("npc.reddragon.male.wing_out_r"), ), foot_fl: ( - offset: (-2.5, -4.0, -1.5), + offset: (-6.5, -4.0, -1.5), lateral: ("npc.reddragon.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -4.0, -1.5), + offset: (-6.5, -4.0, -1.5), lateral: ("npc.reddragon.male.foot_fr"), ), foot_bl: ( - offset: (-2.5, -4.0, -3.0), + offset: (-6.5, -4.0, -3.0), lateral: ("npc.reddragon.male.foot_bl"), ), foot_br: ( - offset: (-2.5, -4.0, -3.0), + offset: (-6.5, -4.0, -3.0), lateral: ("npc.reddragon.male.foot_br"), ) ), (Reddragon, Female): ( wing_in_l: ( - offset: (-0.5, -3.5, -27.0), + offset: (-0.5, -3.5, -44.0), lateral: ("npc.reddragon.female.wing_in_l"), ), wing_in_r: ( - offset: (-0.5, -3.5, -27.0), + offset: (-0.5, -3.5, -44.0), lateral: ("npc.reddragon.female.wing_in_r"), ), wing_out_l: ( - offset: (-0.5, -3.5, -27.0), + offset: (-0.5, -3.5, -38.0), lateral: ("npc.reddragon.female.wing_out_l"), ), wing_out_r: ( - offset: (-0.5, -3.5, -27.0), + offset: (-0.5, -3.5, -38.0), lateral: ("npc.reddragon.female.wing_out_r"), ), foot_fl: ( - offset: (-2.5, -4.0, -1.5), + offset: (-6.5, -4.0, -1.5), lateral: ("npc.reddragon.female.foot_fl"), ), foot_fr: ( - offset: (-2.5, -4.0, -1.5), + offset: (-6.5, -4.0, -1.5), lateral: ("npc.reddragon.female.foot_fr"), ), foot_bl: ( - offset: (-2.5, -4.0, -3.0), + offset: (-6.5, -4.0, -3.0), lateral: ("npc.reddragon.female.foot_bl"), ), foot_br: ( - offset: (-2.5, -4.0, -3.0), + offset: (-6.5, -4.0, -3.0), lateral: ("npc.reddragon.female.foot_br"), ) ), diff --git a/assets/voxygen/voxel/npc/reddragon/female/6-tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/6-tail_rear.vox new file mode 100644 index 0000000000000000000000000000000000000000..022953a4b96774722866b14c3b4ddd9908998a7b GIT binary patch literal 1484 zcmbtTZAhJE7`~s6_jo)X>hw&fD;1}kN7tMmQ;+9l$LVQvrpwuEGbgh)+DTR-A)6dF zoDj2REfe(|Eps6&hPsI#iz1VdA;=JmC_=`F=x;wF`ge7|XVj1ViRgig>%Oo1e(vXb z-jC*^Co+eLsJ^PUfr;)KL`}6V0f(9JieV%$EQ}K;TWYTg4tTXQB&iBX(kDrH6=|;~ z<Hsw)*mXuIlC4^TB<qq>vsh1oyBnVV+B~%EG=R`_W=a z8$3_R3T=9@O7_EZV%P`AGKTMD@N9!;D%O9BIDG38L>%5FkOq#4`fn0Ba$ zwy810rp9%w3LAFri_zm2&dH|2((L6}#!RNpMaL$B)q-&Bx*v0#v#JXGlYv9 zytgq8>A@^yhw@N5@5jzA7qSM@kT;cq!h3s=(n`qg<=Mjo-!g$-;PZQ|prJU>oC^V) z4SuT?4Y9EZ7zT!ju*mqH@e5<<0%7I@!pcp;+8xgQgvkKm?lHpFtArNLFEkUbpJBb5 zQ0*qPl@q#a2&1ewmZTvV$U;wJE{4w*A#}V9!{@58a`i?0Iu%6zu4MR%GEnzSF3vWW zq2mal?-XI;O~Uefgwpgh)aGTQwR9i4YCLGpOGdC{Ck77XV7{#Y0be1GKI=it^Hu0L z-GG^~%lK+~0PA0l;>Wccm>+M&%BQcvZntAc(l%sfW}?uYh0=YyQBmYZ&+93e`8W$d ztmR?rem?5h_xu!L{R_g+-x7L)xfty$#_Du6e*38jUDpyY@RtcecH=lqwJBPD4YAtWwPg$-YD-4Zy+f? P6~!X>PwnrX$C&;C8uBm3 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/chest_front.vox b/assets/voxygen/voxel/npc/reddragon/female/chest_front.vox index 454d5fce85d72c0419cedf221cd9365becd58440..1adaa0b3dae3ec9b14cebf991754eeb7172c6d75 100644 GIT binary patch literal 5492 zcmbuDf9&4XRmbnobI!f@DZg6i+9@<0Y%R?3qYU^w&m)#W-MU&P!_}=a!gPzPWI`H4 zwx-#_niz4S6B~X=H)MuPvj7`unMS|X#*l@CECh|w7_uzJ_^*E$l!r?m(-c1u8xIBb=4<0?Rm^=KoK=b#-(8oV<^xzGb z^1<&=2|;ABGE3hzO>1rWWi8>nL7KzM25Ac4)kr_kkBhZN*2nmevZuwkp_bQ$@527d z{>t70RrZ#7e~B9v9!A?r+Nkhq#Wu9Yb)9)u&JBxot9e5uzHE?6S{u})Y&5AGmg7UM z7N|a?^Loy*6gSGI9IWBHWn^h(ZB{q5m-9L*I>qxkQ{{YQGg`5-A*>Vl3ug)Z1X+YV z0$)KFK__9quvd^#kXg_{&_~cs;8nt6RpVk=!(u7$EqrTQOf@k!^Qeop6z1|`Rp$BG zHnbI<8N1clZhTkHshnMqyCPRckBmMQIm_J6c16aF?im{tY>}}^#x?~VDpb&;LKzzt z)>ib%*f`Jj#_k2mwZS7Ua|!EI;xfTEYg#2M>m+GP>`N-Eq!lWR*C}b9$}E%RDQjNl z9F`@8DW|Y5F|2c>AHvG8L5gu*Lc|_%l|ot8m>_h7YAmY~%T!}smRMPVUkb>IenoXkF|jVOF0v;f7dok}t9Iu5vZlDIIZo9YxNl${-i`U% z@jbRr@JZ;L%DSYos;RCDR1@-L_~yJSIny$qu}Nk=*LBT;Z-|MKmZjhi+FGzbluKTw z0?$(D;}0nDT?>1mT+pLbY=b;S*pGdoRAf~PdPBMBDiwvN(Z@DWDUH32HQ2ZGsm!>k zX;mxd)lAEI6)aTzS@B)PKTxflQNc=;saE(`c+=L3FNFPq4WJAqL2kkSGUE(;2r>(P zf~v?=1m8hPkX7I%%0B!c_^!|X!T$k_gTboEpW0L#_B12T6#KKz7;nhbzzB22Y*iZ= zXy~26SHf0Wrj*b@(FL6o_D^}nG`7ylx2$qD##xiGV{Xfgo*CV8g%`RNY*H%rnn_rr zZB-Qi&v61qvf45$>xrYRm6+k&PCO;zEfaghLPnn=owy(#!^}g-1M`{4pRh-Ocb@f} zWe4X8+a_Wq6Q3EsC1YIzGvKs#VSJ2yP>Gj9@yFKVo4VIb*6* z6j{c+m||KmKb91lDT0>(ZekJEz(?7i#ySc)!8nIDR?dPVxDKVR12&9cCrDXFa2P7* zf&EbE6Jt^G6u?*nvjK|4O3d(A&YSs@%i`=G_-AaF(Ipd)nSR3F8J#k+q&UbUQD{0HR${sw0c@H4Mpkbi0C8Utl)UD5)* z2ACei``j+jYk(VcVm_5dY_};_@}dw2g|WGgjd`9qaGxSr5%$k|wSg|=KI7cLw;+?E zH~qqQ(LsC+e5&gOxo1KAEXZpMa@+!}EWpJ8D+82R1(7E=H$*fP-1~mv>!9b;+RO*K?CI*eZlHOU{ zAe#ig3N=Hhe?kqBx$cFw6zZE$yM)?TsYMcv_3)uq$zYsXDIwD`PK^?9Bc1WCj45Md zDXpUe_97Pz@}p3zByndUrwBffGWhO{(boAJ0<(fn0>*^8B-l`>N0Q)8juLXA5UT?I z1-}USM~Drf1_`xCu#I3l0bfGAN<BSwT)$;*D~J0eZ&EkaNVqM9vbmH zB1TOy@_yruVw>w`3}YweI`16iP1FLm;f>RSk&B2o>Ozb7g*TA0*Whiun_48kiD?aU z?BQ45I4u${%=N%`0B^j*I`6GceQFUKL~KND(uj?yRT{x!WIt~+<^9vCPa4oS5G$Md z1P|m41o%m;GR+5m(yD z#nj$PTL*WYKHuTFyHbk__Yj-&TqEz#Z*KmF5b~?kEoUS_<)UXLUUWwK_(SPio|UmU zBer-(bf$S8id&wMzBp5ct_yX$4DQN|vM&Fn-=4^A^)*t=g2krIlueR4gRT5uKeU9hy2`Q z2mRa=pYn50J?yuhd&n=@e}(UOV3+Uu;&s0Fxyi$U>fyoe;rYuvymp0Oaya<*&jtU9 zuLghbw}ab*!MB_WzLowJ-wJ;7;o%?t+$DbW(XIa5ul}Upbu#!pr-T3UOToYJCVTJM z=~o`x?N^_?)^9nx-`{zBo9}*nr(gTRRet05-s9Wv3x4&Z@P0D*`h4*43!Hz#JeI{o?JFa1IA3*QX>`giE>5B~gt;D7ef;BWtG z@T2rUe5q2%KfHdezy1B| z{19@VeIfW8e-Zqj|2FuEV|)DRQ~Uh27w`0c`=@*T_*X9R$NzMjf9K5|{=NI;^`if?{`>ar^WVSqIlunK=Y93qmwm^n9sa#<1pm8V3jVDk{sgxAar@uCdSa8;C+>a2kAK$v3r~I1PyO*(|J_&q#-I7?xBUGNKjyc8`8hxI z_49u3x8L&p`}g|~gL^Q@|HJcJ!GG}QKa%eU;Ol>zCj|YvogeVIy*)m>*&cq+vCa0U z;>s`m*zwKpYmWWSW_#q_&uq3+I=R`-`{v)=PQUW#X8Yb}-t?^(@9=%`*#FG^_nIGT G!+!w?dvJFE literal 59039 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 b-F{YYumWb-N$Jzw#Xq6*y86I?1a$uxz$}MF diff --git a/assets/voxygen/voxel/npc/reddragon/female/chest_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/chest_rear.vox index e327503d6fec6cd1ccb30f09320ad6c60dc93814..cc013a9bcb958368ed7ebb0613fe5c271f18cb19 100644 GIT binary patch literal 5984 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 AVgLXD literal 55891 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 diff --git a/assets/voxygen/voxel/npc/reddragon/female/foot_br.vox b/assets/voxygen/voxel/npc/reddragon/female/foot_br.vox index 9ad04079fc5be4868066daddcf510c931079d8f8..0571661ff95cea919f97ba8876240413a973cac6 100644 GIT binary patch delta 741 zcmXX^yJ{6t6y5JL_vUdW3V~F{GX8)wX9Oc&B#IFfB<2fj%m-LFUy$m8I5R1Ny=k-( z5iA2@W21$I{~;XLfCGzt_G|5R_L(0a_3wK3?D5g{H$?Pk|KJdYUIfw8gX87;A*b^UpN_e}x`Ij4Vm&i94OeZTvD z_ulupcizi^a9FW$rE{kcV*a#}1+o%T-x6YJNonyN9LOUNj7d3f|E6e zqgAszS{*$^t6dgNh^S_hMV{Ma5!~KWw##CZ#gQOmSu|N}vdF<(?G72sV&h_$=d#$j z)?|JUTg=f@!~_?4uJx3qmpqq6>n&mqK2NZ4DtNzfdcEH*9gNwOnVxV~mMktz10Q>I!|zG7B}9OzdWGyR3Z9S~6?;G{H9{kAi{%YHDht8`}lV-gl0MC4EF6BqdQ>+k8%? zqa~+k!CalZYbH`t?OZywxr9z__tL3dVah)hqP|7Rl(NoA&WFZO=Keww#R(*;`j9x- zpTxOj>N{W1plU()Y!fv0xS(EDg6?b%-hX>3MYi;%tuH3giOVT;jfVc;{W&=~^mP7y8t*zt6E|<9l;#vV|D2$! z4+=VxkwKZ6ndI(2ndZ$tNus%t21W+b>0Q;A6G&)3IYmyaNgNuAEGKbm3-t9t$@Q`O^a6RF?w zh&mr(KB4LrBloDfP-{{(_v3@>!txEO9=qo<4Y)gna%^VDwf3AYwfq*kY~E|KGavls z;cubp-5F~L8@*)U@tGABHBp0KC!RXP^jF3>&&4kxPb5_1ujCh?p5;=#qG6-liruOM z$DVM!guq(Eu-CoDMcv>{L${=pp1 z-rNhNNrTc1h0-{oH1|Pi(xEiNpftmwG$WuiBcU{-pfnj!noKCoXebT;Gdr9=5sZb> zjDyl-L21TAX>=%!3rdp>rOAQPZ15lckP?}Xxno=mugHW2)P?|MRnzc|G50qvd zl*S9CDTC6KLuq_a8UspG0j2RnX)2*KCX{A9l%@(w6M)iGLurCgnh=yG45j%5lqLeD zi9%^&P?{PjO)ZqB4oXuGrD=fDG(u@U38iU*(tHX^^AMEgVJOX~p)?zyG#jBb%}|<0 zpfry{X*NM=J_DtB3`(;ZO7l3BW($<&2`J50D9w{lnx~*N+n_X0Lus}{X`X@7?10jI z7D}@dO0x?}vl~jY2TJofD9z`gG<%^m`=B(>LTUCxX%0YX4nk?3gVH{Bp)@Z;X}$)fc?C-Ibtug@pfulv(wu?Pyb7ghgVMYPr8x_w`4*Js9F*qUP@3~l zn(shqE&(p-nq{2WSi14{D?D9t-inqNX`-i6Zq3QF@Hl;+n^ zn%_Waeha1f9hBzxP?|qLY5oYM`4g1peJIVJp)`Mi()<-l^8u9RZ%~>Kp)`Mo(tHG^ z`3IEdpHP~AL23RCrTGt(=D$!Hg3<_^5O+vXf-Ig`L)hrWCqA>Hq9$te6~r`D|if#8J|}LRf)1G+wFG7i&_S6&>t|kvs-t%bv24NVt9E{JxjN4*k?woIwsAR zSNPzOJ5O2@G(Ub)W{y(>bT@=q7O;lk>0C-430bSm9S_7i^5%A)+Z(I4cGcV9@mc8H zj)tl}GC$Ytbm_TlSMAlN(K(SDx?Lf@;J4PJz^!Ht<#>E*J=!DH&!t-{>vHLQuQTKK z$~`;oRedTeLVi#CT3O?CyFIGW-?8r9ZnhdYU<9M;BpeB?SNUq;Dnhk9M6SEH{N3XX z8{tdK z)l=rbIS60To$`z4o)GWSX>M!5e14;wPO7QS^u^*YCACUx;-hfKj)~QYKVsf;|J_5&x!ec@IKlNlRhbuy diff --git a/assets/voxygen/voxel/npc/reddragon/female/foot_fl.vox b/assets/voxygen/voxel/npc/reddragon/female/foot_fl.vox index acd39fbf047a0d592f891b2ec25766e2970585d7..5b4d8fd38ec3d16237a18e7ef3a108b3db0bf403 100644 GIT binary patch delta 1013 zcmW+!J+BQ>6y5vm&olQuSCB|lDES3?dIZ#Z3GfoTF=sF z6!@^CbQY!8{|qsRrX%O2b1%KYRv@jc!cY%3Kru*F=qTb~2b-c+p{LrWKtm7*n?Nhp z0#TqchTzVVd)u*VAHf)eTMOTr!46Hz4!>Wv7cx8op z2UKWffD3g2z;2yOiP|;A)*ibL<9S!NYuN?}uF4#=)MFciD1e*gD zexOek+hbb?hjN=llQWIMv`wa|Hf5*{O;O+jHF-T0qe+Y>{C9&kWy~y-0ba^b97T1< zWt4`8CTS3ZU@246&`^`665s_-y5Nz0r-fRlu{ON5261p!-g@Q9Di2o6#6e?G8nv!@ z6eKcvtI1Oha4p*m9-9S?lqkwFGJJ8~7DsKtum$;wEgBk=85`mN<{>Lh6uY4b1JhQK zuX{8ymaI5O6gmqmy1?MZgT&r$dYU$u`Rk|G^RF*&H;tV;@$~WO`RL90`RA7l^Y3pL=Ns2Hm+bL!xxbi~$M)w_Cyvjj TPafNRv`6yn%$fHW{2c!S-_wkS literal 55891 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 diff --git a/assets/voxygen/voxel/npc/reddragon/female/foot_fr.vox b/assets/voxygen/voxel/npc/reddragon/female/foot_fr.vox index 0ea802d8497e2d76669fdba2543ca76048234f43..f108563d0cc4ab522b0382f5c72da44ea0a7ef8a 100644 GIT binary patch delta 1005 zcmW-f&1w`u5XbAgyJr(uq7cZ*c#KalAEJT*gBTBj#Jqz!iwEZg^t2$(&K$(Mx#&qm z@E8z5yy(F<@Eykgy71e7Rd;n&b@lxGs4tiOi6%d2)JmPhsHq14yQh6V>d}sB3G$UF&dd#I#n^&VZY?0aex7R2z50ItcAsO$f}= zS(a835+$h(c#<}NC+);RNUI@@1@=O^fGsYyx}dOhjwS*=o77^+1I%#V5c^-P78Nvs zc;K)t^(Y?NYT;Hgx0<=O%#8yJt2Hr#xbwtlh8qrUB)C&x!Ds~QfSu7KqZzD29U6{& zW~~c#CRB$~?Mf(4Xo4Dn%{`1{gboQ~qS}nmIkf_xVTTh&igm|2RG{pL4{AJ+ERYPg z1fBtY!gB=hM2$f;A=gGRat-TJMov7NXPgDS;x7sg6m(fotfD$?Y{$4laYMYRU@F2* zC~gK!F##a3S#e9mhhb`lJ)nj?!&Ej(G#S&VOoITfWaNql75GB^z?p~av`)?=zO5lD zSxc7Dfr$(`aHzSt*0ppPYH{WdE$g%Y)ax0pZ-)5uPYRYEK>>|b0Cp0ibEOA6k5yXHn5F(tP=b} zBX0p{s%Q-CC*z@@Y2MV@g1?}3EYJXMJ@A5t)h+$IJglnucFyy0Df6NGsXSd!7khgj4q~7G0a;py?*IS* literal 55891 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 R+j!mlM>VdBC6hA1`(I-y9q0f6 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/head_upper.vox b/assets/voxygen/voxel/npc/reddragon/female/head_upper.vox new file mode 100644 index 0000000000000000000000000000000000000000..c8d97068ef98d5cc80afb45683f8400abec359e3 GIT binary patch literal 57067 zcmds6|J?l)>^eLwQ8-kcCT%%-FtfOeIYF7`~3R#zw^S)yXU^M z{m!}XCLw&RIOE)^ZH%$SGZ!qu8+-LF#+ENwIX9>Uyh?CX;?VNB=dE1uGRFyC9X`gm z5OF&o;ymCKdAVJ5%6)k*ts)OPmpZuS_<5J(cP@7V{8H}cMW@8dJEf=-z0LsZUxTXC`9ut^@g*p=RmB^rwL884x z27$RLTvy1UkV7GdL=J@<3OOWlDCCgnLuy^*km%o$EFy&Lm&n0t&nHB$?K*Kw z@tEcEc)(IUL0k0)ncM4kRF9vl{s32fej$4TLiPnX-fg`u`vZ>Z3!o3bz*?X`X30K= zb@E}27}m&jWlSNji~O$OF{NZ&2@#Xn9~b-MV4Zwipq=XXS*q8Mb!6z9VQdS1TU_Yxt?bMQ+M z^-GSrBH~v(;&(ar%8v1JE9zhmZ0wP(>?kk69=dkSc75pEir9WT&V>_mTpn{utq31( zM|e;~d636=De7Y^XP6at1ojf^{UB97+tiwMVfw(?=`d7NXNZDmC*)D>8F zTUxkRMO>IXF&C5_)D^0U*vIK2|$c#C=t}o)c zR@}v$rEsDOb5^BROk&P5C~)wY#GIuPF@-scAnKrhQSL-Vg%eS(h%3xR`O&AJqaKgA z$`=>h!n$Hyj`;*Q)(dk%->$+~68-D^OVE#wr!YrpMHDh9iFpLrPBo zVC-RbM3gvjB~iv9IExCMr(kh`c?g{=<|Ks=pYw<+M?X4;0CM<6OlXcW9GJVpx`+}U z5hyFyiAsEzM1>VqWthuw3*(|M?u!X+hy9l&$Q!`en2!)>hqZF?eH5kWzXEd%Vjkw5 zMIP*f&^dA&-(e9I+!vJ`^B2g6HFa?xsUVNKetcFUuvd5wVx7v-H+QhNn3F^s+>g@5 zy6gDJ?o?n8ab013B=$g+pbzQ9CFURn?gPx(Mwz3`g@wb8JLt=nzKG9Jy;n!a258Tyzy@J!44vTiRn1TF+0PdET|3|6ANZUuuInsI#%gV~cAT-3;5%^U_haD8drXvoYR3+tCo zf^Df9=svpvwzbZN{a2j>@9)aM)NvyqUUNJwI&~7HRy4rsg$y=c$Y5s&gU7FDFn!Eu zSTJQgTrj;F3UeZ`V#)}})Extx=S_e;7o7xi<6$`Cvg2*A-5!=b9G3c{1e!u0ABAX+mS*0+y@-M5Z~*PfjMZ$3X2 z7Gd6db}@MF5eDzR#9)19671Mm3s2uW8$NhrITWrbgUxqW!UHdif;Zv#|C@hUNdShG zmOy2B8H}tb{h#@3Yir@ghMjOy_%?`b+5n?Aj)G@yXYlg*4DOjU2_{dT4E5zF!|C%M z1h#QK991|9_HFlic-d&&J7dPccte+~+*0A1VfgpGIXf$JW83VNP+5$f}s;FJwJVbLv*!}9xIgc&ntz&m(=F@*y@ z0{cY#&SFX*CyBMGOuAKnchAE55K0tso#|G60EVi=#;TZ4HFYoJ1y9 z@WfgpCOeF~kX}oqLwapmsJh-0!=7fNC$06Q1{0_y+qq8XVJs5a=7JFprO~H19U9F} zheo%V4vpTBbZGR8O@~IGLUd^KflP540V$dbNzq(HiY7sd=3-JbNm4YcNYONrqG={YlOjdaLW(9$il&tmO@0xsw#lU8HF4CPniV zQZ)CFqWLN*ntMsn>?TEXA1RvqNzpt&isnI5G+!e{vxgMTUQ#ssNYQ+q6wO1VXdWg- z^9@ookC38yloZW3Nzpt;iso@rG*6JC*-wh*Nm4XVk)rt)DVnEA(R`Z}%`>EEzC()U zSyD9LB}MZ+QZ&zzqWL~4n&(N;{D2hA3#4d%NQ&k~QZz4-qIsDV&5uaYyh4iRRZ=vs zk)nB>6wQxG(Y!&5<|m|R-Xuly7AcyyNzwe26wN!NXnsbD=3P=WKPN@=9x0k%kfM2? z6wNP5(fo=O&96z({Du_GZ%NVojug%BNzwd)6wL>uX#Plw=1-(({!EJILsB$7?IEiIkJ zl+^RJsZ6@H1JzhqXt|KcOB5_(WgY^Wi}|+cTdWRAWvv4u*1(S(Wu%=x|{}UdVY>)`qtZ80zL8 z9y{65=5;mMm1y>$>joEA`%%BHzA7B5)9hxwEt5K2Q7;TxA^jlj)uXZAM9tMEnoT_p zNX9N4@+un+hjgxU26EMwgSnbr*^)~q4%Eu?Gh}l)@iI1#l1-`N!AI$2n{G@^b&W31xkGt2omrL5<=PBETV|ctO0Q+brexOJ z{O0{k>KD}88@j)Vj@Ck|*qY0ll7@ARlLulPwpER78sGl*W)rR{m(3M4d}FA}{4t?h z54`He(Zm5qx}Jk&&|VX((g&UBC!s3*(6OTfCWpoL3f7!X4Pj)K)@GVJ1`Z`tr3(kV zXv4w4W|A&s4#{6Hnb4+-#eA|U({38!opr{o*ZEM5QNdR_pG|g|&g*nH3F{5u!ZhcVMC#1p_cMfV0K1a3TwMXs1%FsN=d72?26URVn|Ci zZ77KmTeKqKCsvUfQcVN41c*i>5$vRiSHA)REX zP72zbQrDc)PzC8ykV#G%B$w2MQ<_rYm?T|DVcIw*9c(K?7cOB)mk0`uDI^Txw)BGQ ziMUWjP-+xZ(xf3(GK3~fVPn{Zp`>xHLzo)trAu~8Vy&ffb3Hqm(ndj%CQWk7pvG}E zP3kIZ6z)@TP*COb71pVCW*f7OS>rhvib}ewvQA+gLy;VpWGaI9+#;wl6qo2$xp&Pa zbk#26np2q4V(v+D@0wi%H5>11%&O2eg?p8p%e`tYY1-V9YsqevA>7s+oF_zFwV*K+ z5tkO&KD>WlJ*lZ{r`pw}VjF$F)ZY<|2Wf;q!YPpy5rRSr5W47eWpPTAWUVH4Vc=SYUk5_=Pci zjxh5sVd(~8~v!ep56*(O?0e_EQ@YmoqW=i3hjWyx2hg|DHc1-HnV*>F{J_A~$=}f1baxvJ&sqOrWfM z62`zKc>BG$bDi+rbA+44#Rvof*qik@o;olK>hHyt#1<@!KKO5oZ^*Z*(2T*ru z0!<$*qV3i?LZJ}u6F?3I{(!PhxcB*k{_gSn`nP@l3sLIZ2aD@OJjKmBV<~=27}$Iy sk+O?oS5n-*V?4#WOs3e%vzEpB3w literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/chest_front.vox b/assets/voxygen/voxel/npc/reddragon/female/old/chest_front.vox new file mode 100644 index 0000000000000000000000000000000000000000..454d5fce85d72c0419cedf221cd9365becd58440 GIT binary patch literal 59039 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 b-F{YYumWb-N$Jzw#Xq6*y86I?1a$uxz$}MF literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/chest_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/old/chest_rear.vox new file mode 100644 index 0000000000000000000000000000000000000000..e327503d6fec6cd1ccb30f09320ad6c60dc93814 GIT binary patch literal 60563 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/foot_br.vox b/assets/voxygen/voxel/npc/reddragon/female/old/foot_br.vox new file mode 100644 index 0000000000000000000000000000000000000000..9ad04079fc5be4868066daddcf510c931079d8f8 GIT binary patch literal 55891 zcmdtqd301)9S86`ZzgQ%!V&@rZJ35FVF_=NOcvI#q!9MKkOIRb^D=p4GBeIhR%0uq z#ZpR3DY7UOXhm8P3K%f8Doqg)MMR3VwjyG!b+>A*b^UpN_e}x`Ij4Vm&i94OeZTvD z_ulupcizi^a9FW$rE{kcV*a#}1+o%T-x6YJNonyN9LOUNj7d3f|E6e zqgAszS{*$^t6dgNh^S_hMV{Ma5!~KWw##CZ#gQOmSu|N}vdF<(?G72sV&h_$=d#$j z)?|JUTg=f@!~_?4uJx3qmpqq6>n&mqK2NZ4DtNzfdcEH*9gNwOnVxV~mMktz10Q>I!|zG7B}9OzdWGyR3Z9S~6?;G{H9{kAi{%YHDht8`}lV-gl0MC4EF6BqdQ>+k8%? zqa~+k!CalZYbH`t?OZywxr9z__tL3dVah)hqP|7Rl(NoA&WFZO=Keww#R(*;`j9x- zpTxOj>N{W1plU()Y!fv0xS(EDg6?b%-hX>3MYi;%tuH3giOVT;jfVc;{W&=~^mP7y8t*zt6E|<9l;#vV|D2$! z4+=VxkwKZ6ndI(2ndZ$tNus%t21W+b>0Q;A6G&)3IYmyaNgNuAEGKbm3-t9t$@Q`O^a6RF?w zh&mr(KB4LrBloDfP-{{(_v3@>!txEO9=qo<4Y)gna%^VDwf3AYwfq*kY~E|KGavls z;cubp-5F~L8@*)U@tGABHBp0KC!RXP^jF3>&&4kxPb5_1ujCh?p5;=#qG6-liruOM z$DVM!guq(Eu-CoDMcv>{L${=pp1 z-rNhNNrTc1h0-{oH1|Pi(xEiNpftmwG$WuiBcU{-pfnj!noKCoXebT;Gdr9=5sZb> zjDyl-L21TAX>=%!3rdp>rOAQPZ15lckP?}Xxno=mugHW2)P?|MRnzc|G50qvd zl*S9CDTC6KLuq_a8UspG0j2RnX)2*KCX{A9l%@(w6M)iGLurCgnh=yG45j%5lqLeD zi9%^&P?{PjO)ZqB4oXuGrD=fDG(u@U38iU*(tHX^^AMEgVJOX~p)?zyG#jBb%}|<0 zpfry{X*NM=J_DtB3`(;ZO7l3BW($<&2`J50D9w{lnx~*N+n_X0Lus}{X`X@7?10jI z7D}@dO0x?}vl~jY2TJofD9z`gG<%^m`=B(>LTUCxX%0YX4nk?3gVH{Bp)@Z;X}$)fc?C-Ibtug@pfulv(wu?Pyb7ghgVMYPr8x_w`4*Js9F*qUP@3~l zn(shqE&(p-nq{2WSi14{D?D9t-inqNX`-i6Zq3QF@Hl;+n^ zn%_Waeha1f9hBzxP?|qLY5oYM`4g1peJIVJp)`Mi()<-l^8u9RZ%~>Kp)`Mo(tHG^ z`3IEdpHP~AL23RCrTGt(=D$!Hg3<_^5O+vXf-Ig`L)hrWCqA>Hq9$te6~r`D|if#8J|}LRf)1G+wFG7i&_S6&>t|kvs-t%bv24NVt9E{JxjN4*k?woIwsAR zSNPzOJ5O2@G(Ub)W{y(>bT@=q7O;lk>0C-430bSm9S_7i^5%A)+Z(I4cGcV9@mc8H zj)tl}GC$Ytbm_TlSMAlN(K(SDx?Lf@;J4PJz^!Ht<#>E*J=!DH&!t-{>vHLQuQTKK z$~`;oRedTeLVi#CT3O?CyFIGW-?8r9ZnhdYU<9M;BpeB?SNUq;Dnhk9M6SEH{N3XX z8{tdK z)l=rbIS60To$`z4o)GWSX>M!5e14;wPO7QS^u^*YCACUx;-hfKj)~QYKVsf;|J_5&x!ec@IKlNlRhbuy literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/foot_fl.vox b/assets/voxygen/voxel/npc/reddragon/female/old/foot_fl.vox new file mode 100644 index 0000000000000000000000000000000000000000..acd39fbf047a0d592f891b2ec25766e2970585d7 GIT binary patch literal 55891 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/foot_fr.vox b/assets/voxygen/voxel/npc/reddragon/female/old/foot_fr.vox new file mode 100644 index 0000000000000000000000000000000000000000..0ea802d8497e2d76669fdba2543ca76048234f43 GIT binary patch literal 55891 zcmdtqd301)9S86`Zzd2(7nTqRv@m54OL&uHlCXy*g#cj-q>uu`B=a(PWHK|(Ojctn zq{UK7ODVD_6lg_S5ek@KYE_ydB8rF4r{_dLu5^_%e^qlVtH~0PS z``vrr=iYgb1L07-WR-K55TbBa!D3m7nQsYER8W$C2M6*KDlxT<+&_& zt~Ht8!xnS&6fwa?o@+g2NtEZZXuU+t!RHCKR;`CkjxFm1TgWbJo2+fJ%`S_k$u_&J z?Xq^r+99vW*d}YuW{YZ?CTp$LrfIEqE(uyMO%@v$hZeGFavWK-1bZ*L!`>-*{Ome#Dnp z1m`VZ+9#gU-o~|DXTf8Pk6+`M54$Wp1fO$Wd#)$OyQn*LXGXAS{?cT=E)P!UqkU*T zUo>m=^1*x(KlmDV_5{6E1_wG%aBCJf-j?O+n#H$xTUJKbEWV@LvNF47Il9Zr>YBxO zecM>>u30_0%gXMW)w8>-9L`!kZ}u#~HzbeT++1pGY@{1I1kK-njz%PZL?0w4Q(Idh zr_!;47FxVeC-2&+)L65STDBBW%MLHK><&{-ONjd9rBLd6CpjM)PiY4xlgLjXQQ4cs zp?)OJrBI(jK?AD<-LqZLgcE`iD+S%zB&ffPQ;rJCDommUReh*rV}E-5^u08laf)sD!pZT1m}EHq(`}`>A=~8ftrC z10^LT(V+f)$?0^GD{VMsr;ny78ELfrk$dR)!Qu4gg>iK4(sJw~HvUwGVB3F_}(YPNi!!?Emi1%*>>xa}LlX*CCp^WfP?~rPBH5 z1YLbl(9yADDJ?CH-2JB0qWPytG&RtG$N)OM+uFlL4hIb#I+PwBwUhKoVe)O=OoP@9 zq)RW2qSGa*v_q~{*Y%$jbnutx~$AxE2_1k95qpSpt_FlL-p_k zd=VAgs^Pacj)v_x8s26c4SyhUH2h%WX!tFJqv01aj;0rshX25cvo}dl8r~P2y}1)g za~G86ZYT}^MGnq$(-%t94@%P?O2dC!iSyhHfYPKuX$C@R20>|3p)~vx7Myq55GW1* zU=C+*?uF6}h0+Xz(m0_s_d#ifLup1pX+}b6MnP#tLutl9X~sfn(x5cspfvo?>~Q`> zFab(45lWK|rI`e!(V;XhC`|^GCKF1N1*LIAX|ka-IZ&EhD9vOj%@iojR4C0fD9v;z z%?v2bOejqrlx7x`W;T>&4wPmtlqMfab3c@39+YN2l%@bmvj9r75K6NMN>d1>;r|o` z=O=|rpfpRNG|Qkg%b_$yP?{A`nw3zRVkpf6P?}Xxn$=L65-81sP?|MRnzc}xbx;}) zlx97Y#tWq>h0>HkX?#!`14>g4rSU^)Dxfqblx72zrV>gMfYMY!X@XFi5R@hirTGMu zCIY32LTO@9nrbLb4V0!9N>c}=sfW@uKxsY+rD=rHd<}QHbZGX1EqNkO0xw@^Ei}dE0pF5D9tt~&67}?r=T?3p)^lJX?8$qo`KTr zgwlK#O0x?}vl~jY2THRSO7l4=&F7&s`=B)Yp)}7zX%0YX4nk=TL1~_Y(mW5P`2v*Y zFqGztP?{r9nirrnFG6X)1f@9&rTH?H<`|UbIF#lkD9s5d%}FTDDJacXpft@;nieR{ zX(-KCp){>fnwOz8UxU)T0;Tynl;#^ynr}jB&Om8ih0?S^Xwu0v^l4yCyPrTGPv<{c=_FQGK=LTP>lrFjoZ z^J^&0Z=f{4h0^>EO7nXt%^#pNe}vNf2}<)ml;+P+n!iA4{tBh}07~;WD9wjZn!iJ7 zK7!Kx14{ExD9yj1H2;Ru{0B<&UnmVhX@pIPJESN<7Ei1`Y$WoD&nz#mjv77ryw))N z6)~A6Ts=6BgsS}&c6p|!yHu}e*eJ7Nx9Y&LCme5aa2GQavBFFhdShxho!dNqo!chr z>251@S(&+3RBJ^!YNGN$bsgV_>fs6aA}WY1nZ00yY~@3fr9-0TGJ-X#p(^AvI?_#* zEChQxr<=iY9>ZhC=T$*vl5EOwyPff(mcbkJ2Mq4))}3x$jpB_MUY=A>*R31&nbFFQ zNps{CK6vELlU4`KkDrv86V(9S4PllBtRZ+hmy$<9)+%$ygYk~Mxt-_s#;UAc_11fQ z7CNh=p|ZEk&vH9mdKTMNdzEQ)PUMDeSBNk8t@X%tt64*t9-mr|_DJ<}>DJ1+Tsq(D z-1xn6&yIUlpUU!(-_yQU);Qg6k81RHtb4bctp*Ml!KgY3M?xD^zFN5QPz?`}T^rO%@5?_ID&`oK&X>)Gf<^YjJj}$2e5Xl#kqAtahd}5DHZ(L6uo&ZKbtk(K2tq`tYmg)5{O2_1WP4 z^~5S7MzkUnP)q9KIi|seY-cE7~7*HPD#&K)jwE z%fO?0O8qwn;VZgRe(~H>;$1q;Z7rD3Z*J?xy%ee6eF9YcL}glY`x|Y-&q8 mZbA*AB16J%Mx}mFS*OUWBE?iY$$eZ-`K3CS8G!&Nxc&!D>&YevlA^rGY|M*R~x#ygF zUf+9X<`Xu2SXHswze_2#cxL$$p43xsDz&1#a_)Je@Rh}*ACF!!?9+qmvdzcwKF;NnyaxLi?9Y7}(v#wxhV;g{c+HSC zt+PMNK9POm%XXRhObk97#cWDAm`8DL#Wj@l%6o3`J{!F6O3Q55vee?9xu(gvOxYKo zRbg?w#knlmzieKY!F5coVM;ANSBvvloWs;J$7`AW_*{K_&L-EhxVFVTSenzSh_76} z3F;-1?GZLS`-VC@7P4Ng-zO>+lVw<>|5gw!bL8 zV*b(`S?5dKfMu9iFhraH*2PnhWIKiEv44hR(gAfqWSlp zppiKr(FZv>bo}^Yaizz~kI<5ZHig$srPii}bYyEe9oZ44BfFDSawI|h%LY^Kb$;^S zFoE*-O(8Wmi&R}-Qu{9=bz(5}U#w_Iy`oFDE4us%McH+V&TmsRkoCcjC@Nmuj~3MT zr^-zO>DHr{(wtUB%XTWNI;5!OB*!kxqham{8r3?UCbyT-&{PhM*p^4*4-BWki(_fX zT1BHaaqeA;rX5qHR&xD~*`#(}KbI^4Qs| z=+NDYjvrL?(vz&0DcV0*(bLNnosKH1WW9NnqU{m3Hz}H(uV{U#qD7WP_pp6gaUQvI zN6^M)<7k&tNUc|w(5~9qbo`cU=)D6jO&B?trWFpSg;$OvXH^N+El||9PSL)!qGNX| znmjCz%EynQwUY}dHD?N~8b6ra;-R!{-e_uHKZ)i}3sA*XQ>b$3OsczX32jVN()OF{ zsQus;I`zW6)V_Bu9e?P0>esIyT|96A`Tc$hz4NM~jqW(Qr>%%iJT{x&e{%(;ZtG9m9?qdBPv+8T8vZ}|o93wh z3x82j5#3d?k0u57)6}h-DYq?`UVK2&Yu74zWZXE)&(EjeMbl}~{KKT$HqxNfAUe9+ zJHs3D_}&>djBXsglk7=Jirlt^E?z%`UU_^p9j(lz9lTfF_kYIJ9Xi*V6)#h&mZ)X- zL27%jo$fgN0_}P36a|x8X~yP#wD7)TwBm_VR903-Z}SUGW%Hm9$vma#t!KRc-s1b~ z20jHI3yk9GAt(U?jDu1;xrw0parSB=@D=PABcJxiQiGEb@Ar02`` zoTPyl=2DU2cCK~!bes7{mz9g2=U}Qm!YEKX90MSFqj745KAvclo)FQ2h(>k3kwoud-+eEt{ z=&1qEv((czcv^`rR1<4#mOgYuC>BX+_7C3jBkl@gq4@GkU6wQTDH1a_X&T}&Wism9Hnt@O>@@XZ`b2A8v zW-t`Z5Gb09p=ffUXyi96IPbKfP&D$3Ih?b(6pCgT6wPob8b1`xWl%IDplC)y(Tswk z84X1<28w1Z6wNp&ntUjl@lZ7K&+KsiMsPV4%|s}g0w|hEP&76aO#q6f5Q?S!D~uP&C&;(S)IBs-S49p=csdG!7I^ z4HQijil!Ed#)YD}9*U+8iY5j{Qx8QGhoVV9(Ila0J^@9Of}&}FqDe#1G(yodLD6i0 zqG^VrX@R2I2u1TrD4JF%nomK|+yF&$BNWZ2p=dTi(QJmIX@jD<35w=sD4H!$G@pT@ zxdn=5D-_MGP&Bte(cBJ2vki*o4k(&Cp=h>4(cA?^vjd9eZYY|aP&A)~qS*ySvm1)$ z9w?eUP&A)|qWL@&&0Z*)d!cCVgQD37MRPwC&3-7F2cT#kgrfNZ6wLuBnlD1p9E75I z2#V%mD4H)p(L4f0^C%R}V^B1QplBY4qIm*}=1C};!%#F|hN5YQqB#OZa}Gr=4B|F??TbM0!8yZD4LT{G~b7!IR!=YDiqCYP&7Y)qIn&P=7&%; zZ$Q!f2#V&%P&98s(fkC8<}?(|PoZeuf};5u6wTXEG(U%;c?XK-7f>|sLecyZisn5i znqNWD{2GepH&8Ucg`)W#6wU9UX#N02^G7I}_n~P11V!^_D4M@O(R=_!^H(UE520xO z21WA`6wTkEX#N33^G_(6e?igw8;a&XP&5QZqYS0aW1=h`p>#{q$rd5v*3>jMIK4&Q z;JDG+G`p!lFVRzp#%Qg{l3ftcQ4L9_+S7wNK=e>DW3eQ}O{6@vNUPzrPG^fP6t%@R z(JlyjYQXa>^|TG1R-y~l#2TBW4;>MTMN(QxRm@s2lC5(2cyyBJT28!48|o7gr_JVJT`C*j~dCx1p}H zXbG>#C7HVxZH&7gUsNzB>I6NdaI0co3Mm)RygigC9ttO& zRJt+ccp!yA-APp}9C1Q%9dnl9%ni9D10m@g{z&0 zGfUBMy&OzoL7{BV>Yg&|lc|a&67`y(-fi}d(mS$->Tt}v`StS|mIu_kH{^Un>DrXj zP@9P9Ee%MG>6sc`ZdDx{<)=R$(dDWWu|!JXOKrdYqf6IzJnA~p*i0hX&(3X-tf8vt znIy7e`}s?1Uy%vvQrp|GNYv>eNSijek#y#zq<3juCW{1i7S=*E<(}2Qm~?4wg|7qGG;iU0rr literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/old/tail_rear.vox new file mode 100644 index 0000000000000000000000000000000000000000..7bed628bdf2a812af6ebc595a611fda017c16656 GIT binary patch literal 55875 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 bD{T?^b)=d4B&Cnr#lLjtQZp2i2JVjlowES! literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/female/old/wing_in_l.vox new file mode 100644 index 0000000000000000000000000000000000000000..5d3e33a6646d7d2552429e7510ab69b27fdf2b77 GIT binary patch literal 57352 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 NdT?tho8=Di{{nsU;!gko literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/wing_in_r.vox b/assets/voxygen/voxel/npc/reddragon/female/old/wing_in_r.vox new file mode 100644 index 0000000000000000000000000000000000000000..83cce30c40f3e702ca55f21bdc4bd3e0f4a4119d GIT binary patch literal 57352 zcmdsa0nM}q^GSf-I)>I3q6_toc zL0T2jQnc2M0@d0U(OPS3twn2Xt+m!#yVthX+V%8z?h9e<$N&1rdGO`jd*8k1zVE&7 zy-5fkmc_0J?@~(5pE`R1f_nc=rIyTIF~i0c9D~3Z5CT^$Uol%1qk!WmpKuM1DJL^1 zrtAtJIuIR*?gB6*rd+^-vZpYnyr9$qtT7d2Y%vvL>@iiwIAW@tamG{ycKk&nYjWA9z3jxIqbUfl}bK^(hCiqih3KU;#cW#sWX^fBJHh#_B}3VL%Y=m98~x&g|iXe)68SDz|DJ%H#z zf43Q!0GE+-m_Me51!8JA7*T?C!#NjnyU@>t@lM8r`MHif4i`XMHP)aSV=Y(%E3g4O zaDX6if>PkJV}3+8VgS(t{J;x*z~sO>0t>K$5U_zDu!BB0QzzuxB7Tm6JiB0gK}U2W$XX5EgXmr zL>t-y=xasvBL=bl4wT&}`+x^{K^69+7*qlW*1p1vdjhc>(S}%tb}I-08}MMC?TB`s z3$X+^xt-@jbYYwyxPcFNfER>)IaLIza4%RbeX0`CiyReb^B~$W-pM(!CINVtqum0^ zfEC!$ZbP(jU&K<3cOZ@qcB>MUohSzoU5I|*20q{cUNF?(rwaW!6-M+SM-`&G5Z;I; zv{xXS5z7%Rh-HXY#1OE7Ah3f{-~c7S2?D?c{J;%-zyrLXI?$(vf-tBGU@lMr%0U?j zfgmUaB_II&zz4j*1Khv`oWKF>zy_?q0?fb!ia`-51O;FS@D|~Hz!b-nA2^3#oeGer z0BZ+#dm;9i!Jb-+;EOf36k{EL$%KeKF`Ka-ST76q%!23AjA!1A_k;=W4ilb}Vmv>^ zxYvttpBFm&R1xm&B0SS}JdZY%t-yw|9eWx=*@d|*xKGT$#1VUA0>up0tOyjNe=+XY zV%(oaxSxXsoog!Lbc{Tu=ckiP);Ng?Jd z#C=(WYfyN<3<86J--Pu-J`eJFfeF`Q2Ias4%77JwxQ_J+B08~drHF3CA;?hx3PBMl z1}0zz7GMQ7U@B$OsN0)Z1QD7u+;k_`b1ZChv zIbg|kE?vB!Tz?Xt{DVIdssG?IADuH7FLW72{aMOIJ~tSgnuF_n3;~>i%L6%<%v$K< z1{{2zj}zy(Ja6jq#r*kv;^1?IAl{kiNOC2@8BguSjc4_Wp4p49>8xJ0XZGSNI;&UR znY{|m)vNx@UVPPOXJiZ2L9Q&SW5_V&_SI~2{j z>scD+`;gxE`RLfO`P`KrnthlS%#BcD)nw{jJC_b`olS>#B(tp ze9br-vv(4y8HJ?UEu{8&NIe@M*L+1K9g51gD?0B{MW%K|_AQFMs0SWYR6pNJb2?nK zVw0C{I#NN?dlfC(sc6l^iZ;B2v5P`fnXabcy<=(Op(#|B_fhq>5RKhmMbYO*QOQb0 z!#5%KE=3m{Riu_;{*5M5I~}AB`e^GYHyw!h>6Hu1h~^BXow&V@fLFmgVCQ;858tln z*a1b)KZg1gMf+wbdVH~>H&TjLpuT>YqU|kcU#sYnF^X0hQGJNgGpcFh zqS3S~Sxdc_HPWuOOX%2*m(#oZ(=={afG()5qPZ83rsT3lYM-NM%PK{CyA>V1Rnf%C z5X~MtoK{Y(q5Skov}|mE()DGuZRQ9%w0Z)~xFAZgODEBag;S~hss*$$yMne~-%f`P z+(5^lxr+|nxss0Ee>GXHRx0(nDI5+{bWAl(tQkq?*N&m>*Ok-5_f*qs&yS@yUK~ev zV$MVR6}|AJqPJgGv@t!J?$}aC&pvbsz4!VO%HQmwZ4db9v6q7M237q}|FzTA|HZ$q zu8wYN+)ERp`)Kmk%@o`cr04Ec^vacr9vnTI#*7(54W0{W-mHV9wrnJS-cLt%8+&+7 z2=`89C0#pWCq*XYsO9DxsC0D+z4*uoIp=Oyww zgH$&tJ#g+spEDx9?^!zUX$Nq(Kg*Co@bwr=hh z<(E)ApY2Jt@e43g6V;=-a>-_+-k=9?J)Y}t;a5&Poy{B7I$ce4>vR!ri>D&oHa=3* zU{s?<&nBa`&Zsr&iCQx~>-jqLh9TlEy`w?D4XG; zY(|K(87azUlqj3gqHOrzMa%iBbF3(vaiVO_6J;}AlueB&n+c+9BBE@fqHJnK+0==$ zsTXC_Aj)Q4{Q8v>=*<2#Z zX1XYw8KP`16=gG1l+7$rHnT<9%n@ZXSCq{>Q8x2M+3IOGVjSCdy`+D4WYg*<2yYX1OSv6{2je6lJqgl+7wpHmgP1#6{U$CCVlt%4Ury zn`TiqEuw6aqHJ14*`!3-w287wi?X>|luf%Rn~W%%4pBCpqHMCFY;vM(J|@a0FUqD% zlufrNn;ua%Yem_t6J@hrl+6ZFHXB9Rd|Z@GuPB>Oh_bmxl+CrGY(6Q`Y;F)`^C?j_H;S^^D$3?2Q8qV=vbjZ+%{EaseWGk`6=kzsl+A6TY<7sU zxm}daPEj_W7G<+bl+A8YHg|}!*(1v4GooxhE6V0hQ8sspvbkH7&0bM9_lUCDC(7nt zQ8xF9viY1SoBg6}J}=7VfGC^$McF(c%H|8AY#tP4^F>iM4~epQSd`5pqHG=&W%HOQ zn}eckz9h=#kSLqOqHKFE23OQ8r%_W%G4WHb+I-JSEEJ zm?)d4McF(f%H|uQY@QWm^G#7U&xx}6mMEL&McI5?l+AZU*}Ndi=DVV7UKC~XJyA9< ziL&{=D4XM=Y+e>+^NJ{&ABeJfRg}#SMcKS2%H~I+Y_`Z$;VsPL$2>McMp8 zl+7PS*}Nyp=1-z*{w&JoFQRPT7iIHTQ8pilviX}Rn-4|V{9TmIKSbI5Qc&{L}x0K~c%9%}Dbi~)Mhc!Ts?GCRW0iT}J^cfDb5EZ;(cNL}YGOmY#gMKaXlS>fe|v5u{$3-K?%0{CRzSime*UBRYu2tWa zt=Uxk#9A47&bd9hF*UI6=iF?aIFsz`(uG_;d$sPb7p^tCmQ&O>nDJ*kkxS;gd-6#` zq_#m{$(l@}B^mG3V@_!}c|$Jfm*DgR61vcu&UENPa(yn#35?xZn>MakpGq_*yH1`; zB|3OxYHMnFd9FBDX1z0OGTCg0Ht0yNH@4E)vaaSt#<=Ik2@vhTpjh&Cw>MnSsbD6{jz4LszoBJo?lLHeO$&%gONOsDy=`9_&2%SRL ik`OytTa$`6pH@rgn%2}i$z!5n{L+J)lbH;6i2fJ%|Kd*o literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/wing_out_l.vox b/assets/voxygen/voxel/npc/reddragon/female/old/wing_out_l.vox new file mode 100644 index 0000000000000000000000000000000000000000..f3c30fbbb5020295b1aac5dac30aef7a28993f5f GIT binary patch literal 58012 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 diff --git a/assets/voxygen/voxel/npc/reddragon/female/tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/tail_rear.vox index 7bed628bdf2a812af6ebc595a611fda017c16656..4b596e4409055fcede44083b3cdc51a34daead9c 100644 GIT binary patch delta 561 zcmWkrJ&P1U6zqQWdUig$ms7Y@4Nr`WW@iIMH(10o5ahf}Ffh8r?2=6dF&YqOWQyjZB4_Ys_RwPd&7MBfY%?fdT{UH(o18^-J8pOf_eVSnET7a zMLAx0CaftdVI4d?Tt2fTJdaosFq0s23ARDdMg!&=WQNjiklQmI^@%-0YPU#a1NuQf zf~_%;2C1wX&G;ZgEg2gb#hh56k%D@{z=B#qt&~P9V#Qv?-pD=Cp@uhGcr@^~5s$fe zTZ@-ky`_hX`Ejt>Amd^c7b@&lbLN#RnQ2Ng5pKkwl#7r{%CE{9o-?$hR?1vG2U_hQ z7yzuHV`(oVcQPo@tHaf6$>=4QgnF*Mb?EIaMel$?z@{ieSfV|g zcFF)z5NQTF80A3e0HSaa?>dy)w~y_yy?*-F@<%N4Jl;stxSwTl;at0?%l4^z(*D+I zI2l&)^ZOU^>!(-o=lR?ApI+WMKH7~ZZ?422=X>$bx2y5a?e>~G3ZW`u@KwCHGmX0! K{OLQ_eg6*=w`KhR delta 456 zcmW-cKT88a5XEO^cQ1eLVo1+~vA(f3qNFjos!*YF_h2Oq6Gdr`pFYjhNGVO*oSNcSBdX%0)XzPdQJk5@i5MUWF z2OMZ#Wa%cuVATPORVJg%K#WpRl**!9X5}I<@D3UQi&_K>&N-+>k27s-7-E3|kx{_` zK~Y>lRL~?C%tbVmk;4U)1P~_{is1>VASduL%ZD85n8nC*j2hq=am-4=hliFf!-hl& z8ZHf5!l7_s0Zo7lc=1fbPY~l#T!F6yMGc{2?>$`m(V*iec2nN{qNU? Se|pTj?k4}Uhr`|IYWfen{ZDlO diff --git a/assets/voxygen/voxel/npc/reddragon/female/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/female/wing_in_l.vox index 5d3e33a6646d7d2552429e7510ab69b27fdf2b77..ceb43005d2722c8a0fd1c4ff979342a9996c9b00 100644 GIT binary patch delta 1476 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 W28|GL*oh?Wtd^ZK$?G<}`tyInx!jWg delta 1969 zcmWmFJ*(tY9LMo9cP7s{IZt^`=FZH$t9RAL!csvC7q6%(1X=GZSXj_0)<%$NRJ0iv z2CNk9wh**fOF_X(3k%u8Mtl=ig2e9`_{{I0OmdR*kj&}F4C2@<78B@s9{1*CN&fa$m}R`WYjKYn`25ck2sg?%cJPrUUU}JtpRn* zzQ#ZwMZ`?hm4(a3~QM3?))z=#is?M2i9q6l!QxFeqV*qi~26 z?IA&m0g4V;KU&!-gq|aDL#cVEEULg+Y#FP7dtP&?ARst|ck`#mENA@AnrZHRn|@C}H8S zE%zeChV_u8M{!O%+E}yCk_Slx$~Vfe)bxDhhZF-cNcQJs&M}f~X`mo)cMn8Et*C2K zlNAg~SUBveqX??K*pek}Y)BK(b26@&|20Lz0VA1`1DTOMa&(YrQJ{fB4UGy0B`h2+ z>Z90Ui%reNu*Qf1Jvy{C^WRX^s8GVe!azfzfJBZADH6np5F)?|OSq8tf)`Dqf?6_C zE81Bxdh}ifOtW`jUbB!MGt6nkNFa_$rX@)j5r!;f-claVgl9kDeG&5#iFsNg9;1jA zAF|p5brc~hJmlGyJeE0ihMZb5tv$8oS}AKKLF|+1ImCQL9>W$Q;)IA*8?j15R&~dT z5-kceP^h6%abe?YdZ+1`^0-ieGe%;;6r3@oORQ*r#aaotUcllE9rG`E(JXL=DrU%N z(9)no%*`YikzzoG-fuHP9jO?(mNev&HdY7_B0`J=DKg}cD4-hN|C++U!l6Wk8Vy=> z=rLf#8t2$xiyba-iCd`YNS$!L#~+UKPZ>AqxJgY`$e5Pl4qqw5J(3BzCJjH9uyBak zf4hAkuJAN8?}w{~8j8A3_oo+v*B0aHqhPc0e~yp84_-V|pI@2z(eu^(ev5bZ;m70r-8UEWpT9mk|MmNG^H*P- R{)^u`-H%^>{B3gY$^RjyIqm=e diff --git a/assets/voxygen/voxel/npc/reddragon/female/wing_out_l.vox b/assets/voxygen/voxel/npc/reddragon/female/wing_out_l.vox index f3c30fbbb5020295b1aac5dac30aef7a28993f5f..17f998c2eb0f008cfda548afdb318a3100970d19 100644 GIT binary patch delta 2698 zcmWlbxsNPK5yms3ue$HMs*f4KVVxDipsLFNi6`-dSd5j>vJNgzSCxT<(*_bA)<}qV z7zm$r)F z;A&3gV9r%dW*sqxU2g*9K64Ma zz(Hm+TF9llYHjzXX02cYw#av2&-}pHfg|%vJDO8_XVQ%3+)^+I&um^W_{98~`8T>= zj`>YoYmtx~dfUYm)ug38n?tim9nGd}Z)Vpn=1?!X_uuM{BHWnwqUN3P+gTY^%v%%J zvzE>*=lW*q=BDTTW~w`fvu2W0eUlEHs+(~zwgGm#XcNvN80)IF;NO^Sv#7gY)Zc=` zqB~vWSl&!nFUDE-4vR$IVj`T`n?;IXmMWYzJS@ho789W7Hw26Qpqb5mj}vEAM5&>b z>SWRg!|rC$kZQjaH;uV@#5^Z@-(5^o-?VmTiJZk)Ee_p9OLx}FnT=w2SHXlXS~#;> zj2UM(IQ2?`EEi2}f`F~opYB?4u)uLz&QcO>9TRahO98chxk$MN7ELCvCvojX(rngX zw}_w6irLKsP}~NS30ne++4l(wCeGkg#3@b+9({K@ol-MD) zLkgmbbdmq0;4mnU1vt-4r@tPL&U2l=tfdP*c z?H37L9IQy#gB2T{95x;F0$>9_Cn%pHUgrc>X0uqx?lwOTaDfLxHZ7E#jDz67Joje_ zBlcJa8I0f{Ab@y1N3aLd;j+#WoT3*KOhV8_I*Uh8F*c%XF(<0tT2qH^Kq_r}xl0Uf zIdlY28j(XkWh0`XsEH5?D#|*&OMAad6~<1m`Ic9|BsE z0~vwkAWbRE0}eUtLx1h_kift(yGi6PT6wfyFq^cRO^v-6Swhie1eM3LX0R8Nx;R-( z+RPeZJ0gIH3*SS2LKYzb1dKtvn2tQTI}H1?i8R4CcPhd za9Sd1GmuQuFz;5dZdlg^pzZ2>l8Sk=t}Euqnia@fWEHXow8+Y8GDQuV$&~8|<@q`X z73-XJ#k{Vkt;yQy<%9hr`RFBg&Z+RP9UnULi(l>d{rK|nKMsQ62j71E zLlOM$zd`V$*KfX)&lUe3_zFAT{mGlxA0-O@{cPdSxw{4@I*vSUu0boS?KLRdYw)za z1eH9um*6Ci90=JHwYO`qQ`i>QV8gbQOtVUz9aAmY(+~95V34tUhw(WWXX=~L!*yb_ zc@EP28e}u=<`iVw&1c#yWN}j{70Nj^Ud@y%$7HLK?!HXWgPjOMJ}ymY>D znX5RA_QDZ?h zJ{qlT9qZ=rf&JcUq_co}YopVdZoW^waeS|S;ON+iooglwZ!6dHi#QiKo_M)NTesL2 ztL@Xsf;#AJDU}Z9zG4NXRbAVz4dr}Xqa_>VN^WJsL`>w(Bf00mkrRU{D4c6s z`@dA^G&s?-wHs=^tY~KQ4f8oSjWV0f4|QFtJSgwAk;+7UoO3?UXh#*=7_?ES_ws0@ zI{9S5wvGAE-JEeUyhjeK)FZi;u?%G*x1>gCBX@>ylsSVfTF7439#k6Y+C6JSefDiQ zsh{kCqiH;_C!)X24^W8b2gpRGazn;QqrqV=`%UQQx@$V$f|G{pc^#PdgN1r@{y@l{ zh#fJ7H|{LD)V;mjskf%|RvMmEWpL3^gS~9$2guCvVty0ly*%2x2Ww)_j)}p;Yinqn z%k*@#G&*B<>o)pcuMF2jUSYQkHcQic1 Ff!0HX>_DfuBj}{ zwTumSC>v7|$yCNNlZkA#zn|ZpiEU>7Hwq)ed_bcc3Ja-GuUS#CrX-~BZI5J5Oh!V= zKJ`JfSSPk@=7r13+b`*q_tsD=>zh9nYf3^2B62?*vCK$F+4)*d-eSv!T!RI@a>rV^ zoQGSvCZr;wB&HxC=clP(ri{rac+18|VPv4Eqb1bvNT^&9Q4&*-_+`uG;=zy9!Vd8{ zAEWEb|B~-M9A3VWo>%k#+CFbq{_W=e>DPz*m*3pq@85fR`AhzK`Tf=EWl{X9 z`t>j0+&}#7d-u;j{owwuzy0y$gW{?E@HdD1pa1mg{_nqk_5PoKeC__pA71`iy#Mlc N@vYB(UjE|C{{sM*lP&-N diff --git a/assets/voxygen/voxel/npc/reddragon/female/wing_out_r.vox b/assets/voxygen/voxel/npc/reddragon/female/wing_out_r.vox index 3790e73c8b98e96f083d6216b5b7f75232fa4dae..cbd7cd4432817392ae6130123852dff35f4d591b 100644 GIT binary patch delta 2698 zcmW-jyRR%q5yrQw_c8DHduAW!00~YkM8M2W01}qCLYTl3GESV5?92p2BpV=+5giF} z9|0oAi4!CcnFC8#kPtvX!auV7h9iC3-PP4q)n8ThoOfTDe|%-`Kl|yYm)~tRo1gsP z)yE8*zx;Qz`Q+7SA9?G7zb*I{ID$`q{@JTP+f4Yo>HmkfntQXl>9X1SuVw4MQO{oF z6kN@z9L%}u&7~g9Q*#xw8N`xN5B@0GVU+wZNMYRvDXmc|dyvMtO6v~d$W?d#J8|?X zp1Df2?Zsu@`B(KVj7R8sy`G9e&t)$@Iy)I;FQWw8t6cJ4I&YMtf0bi!l~XvXPf+J* zkaNs_GRh@o%tkrilR*wL=-wansk+Kj335;j@?3(dm*<)wcD*F~Q9K>h_D8kQKcjDR z)(x)e1fzOEuNTe-rk505TL;bJQBUPn>uk^_>$S}X?ebBhXwV}UxX00`Nz`i^!+;Al z`>Q0oQLD7qGVLYa4H9mzS|q*Z$yE-UUj4Aw0EFQn+YNy?pzdW0bC()aSAA|^6=n;l z-fepG+zzJdNJ#@zo6$7g)s)@!Zd!!j1W)ZKwbPq|dCq3Wn0BK{K+HN~47=V0$bIG> zaDju&X0(t?ca_@iP0db8aaZgl9G{7<^*>%={Z& zugCnRuC-`L4!!MSifWS5p3R|Iw2o#|wl}kD7jvi=+52x~M-iIMJJrowH#w!SNigSC567qECMiKj1QM6Caq9bG_Cyx4 znOU=>7Bs;~!Wcr2jr^d{MIcth4KRF)ZyKjKDUd^{UBKRIjJ1m`mvzS4V@$(E9a3V4 z)D9_#D$+&%lZwmcvpDzdqE#}R07LFdNjPZ;olQXg_BiA~QOueZv&3s!(09E>V+RI2 zQnX(*aB;9AVGmYpbaL2q&dpf~F*QX8lykah`8PE|HUD6V8zylTWP-PCcXH4kxEqWIHpOZpwO$oBJos752 zfxY&>jf32pjfKIOzCTcqJ2qRM<`_yt96M0wGv>u?qK0Bcr)fwXFIxxY7F}Sit;x+3 zS}&*IYzjA`n+hH*i`O)#P7+cQB6q2gI;FVp&~L2|1RofO8yuj|=Amf$79=sfyjx5{ zS5*0A(i#J_QL+XA3kii4lglcbBv`)*%v-(_T|7z0Gu}m$w9Jny)^*4l*>Oe6I+)~s z;O@_Wvx;YW`1_`YR5 zKDO=0N4wq2uf10<@BLrAeAkb{FW%lCfBVyKAMgMA`^Ue({^QFh{!{X+seF9#hv&z? lzW(;(KY#z=@#7!9{KlWc(03nU;6Jh?dX#DKr3qgD^M4E@jsE}u delta 2634 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 G!+!w?dvJFE literal 59039 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 b-F{YYumWb-N$Jzw#Xq6*y86I?1a$uxz$}MF diff --git a/assets/voxygen/voxel/npc/reddragon/male/chest_rear.vox b/assets/voxygen/voxel/npc/reddragon/male/chest_rear.vox index e327503d6fec6cd1ccb30f09320ad6c60dc93814..cc013a9bcb958368ed7ebb0613fe5c271f18cb19 100644 GIT binary patch literal 5984 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 AVgLXD literal 55891 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 diff --git a/assets/voxygen/voxel/npc/reddragon/male/foot_br.vox b/assets/voxygen/voxel/npc/reddragon/male/foot_br.vox index 9ad04079fc5be4868066daddcf510c931079d8f8..0571661ff95cea919f97ba8876240413a973cac6 100644 GIT binary patch delta 741 zcmXX^yJ{6t6y5JL_vUdW3V~F{GX8)wX9Oc&B#IFfB<2fj%m-LFUy$m8I5R1Ny=k-( z5iA2@W21$I{~;XLfCGzt_G|5R_L(0a_3wK3?D5g{H$?Pk|KJdYUIfw8gX87;A*b^UpN_e}x`Ij4Vm&i94OeZTvD z_ulupcizi^a9FW$rE{kcV*a#}1+o%T-x6YJNonyN9LOUNj7d3f|E6e zqgAszS{*$^t6dgNh^S_hMV{Ma5!~KWw##CZ#gQOmSu|N}vdF<(?G72sV&h_$=d#$j z)?|JUTg=f@!~_?4uJx3qmpqq6>n&mqK2NZ4DtNzfdcEH*9gNwOnVxV~mMktz10Q>I!|zG7B}9OzdWGyR3Z9S~6?;G{H9{kAi{%YHDht8`}lV-gl0MC4EF6BqdQ>+k8%? zqa~+k!CalZYbH`t?OZywxr9z__tL3dVah)hqP|7Rl(NoA&WFZO=Keww#R(*;`j9x- zpTxOj>N{W1plU()Y!fv0xS(EDg6?b%-hX>3MYi;%tuH3giOVT;jfVc;{W&=~^mP7y8t*zt6E|<9l;#vV|D2$! z4+=VxkwKZ6ndI(2ndZ$tNus%t21W+b>0Q;A6G&)3IYmyaNgNuAEGKbm3-t9t$@Q`O^a6RF?w zh&mr(KB4LrBloDfP-{{(_v3@>!txEO9=qo<4Y)gna%^VDwf3AYwfq*kY~E|KGavls z;cubp-5F~L8@*)U@tGABHBp0KC!RXP^jF3>&&4kxPb5_1ujCh?p5;=#qG6-liruOM z$DVM!guq(Eu-CoDMcv>{L${=pp1 z-rNhNNrTc1h0-{oH1|Pi(xEiNpftmwG$WuiBcU{-pfnj!noKCoXebT;Gdr9=5sZb> zjDyl-L21TAX>=%!3rdp>rOAQPZ15lckP?}Xxno=mugHW2)P?|MRnzc|G50qvd zl*S9CDTC6KLuq_a8UspG0j2RnX)2*KCX{A9l%@(w6M)iGLurCgnh=yG45j%5lqLeD zi9%^&P?{PjO)ZqB4oXuGrD=fDG(u@U38iU*(tHX^^AMEgVJOX~p)?zyG#jBb%}|<0 zpfry{X*NM=J_DtB3`(;ZO7l3BW($<&2`J50D9w{lnx~*N+n_X0Lus}{X`X@7?10jI z7D}@dO0x?}vl~jY2TJofD9z`gG<%^m`=B(>LTUCxX%0YX4nk?3gVH{Bp)@Z;X}$)fc?C-Ibtug@pfulv(wu?Pyb7ghgVMYPr8x_w`4*Js9F*qUP@3~l zn(shqE&(p-nq{2WSi14{D?D9t-inqNX`-i6Zq3QF@Hl;+n^ zn%_Waeha1f9hBzxP?|qLY5oYM`4g1peJIVJp)`Mi()<-l^8u9RZ%~>Kp)`Mo(tHG^ z`3IEdpHP~AL23RCrTGt(=D$!Hg3<_^5O+vXf-Ig`L)hrWCqA>Hq9$te6~r`D|if#8J|}LRf)1G+wFG7i&_S6&>t|kvs-t%bv24NVt9E{JxjN4*k?woIwsAR zSNPzOJ5O2@G(Ub)W{y(>bT@=q7O;lk>0C-430bSm9S_7i^5%A)+Z(I4cGcV9@mc8H zj)tl}GC$Ytbm_TlSMAlN(K(SDx?Lf@;J4PJz^!Ht<#>E*J=!DH&!t-{>vHLQuQTKK z$~`;oRedTeLVi#CT3O?CyFIGW-?8r9ZnhdYU<9M;BpeB?SNUq;Dnhk9M6SEH{N3XX z8{tdK z)l=rbIS60To$`z4o)GWSX>M!5e14;wPO7QS^u^*YCACUx;-hfKj)~QYKVsf;|J_5&x!ec@IKlNlRhbuy diff --git a/assets/voxygen/voxel/npc/reddragon/male/foot_fl.vox b/assets/voxygen/voxel/npc/reddragon/male/foot_fl.vox index acd39fbf047a0d592f891b2ec25766e2970585d7..5b4d8fd38ec3d16237a18e7ef3a108b3db0bf403 100644 GIT binary patch delta 1013 zcmW+!J+BQ>6y5vm&olQuSCB|lDES3?dIZ#Z3GfoTF=sF z6!@^CbQY!8{|qsRrX%O2b1%KYRv@jc!cY%3Kru*F=qTb~2b-c+p{LrWKtm7*n?Nhp z0#TqchTzVVd)u*VAHf)eTMOTr!46Hz4!>Wv7cx8op z2UKWffD3g2z;2yOiP|;A)*ibL<9S!NYuN?}uF4#=)MFciD1e*gD zexOek+hbb?hjN=llQWIMv`wa|Hf5*{O;O+jHF-T0qe+Y>{C9&kWy~y-0ba^b97T1< zWt4`8CTS3ZU@246&`^`665s_-y5Nz0r-fRlu{ON5261p!-g@Q9Di2o6#6e?G8nv!@ z6eKcvtI1Oha4p*m9-9S?lqkwFGJJ8~7DsKtum$;wEgBk=85`mN<{>Lh6uY4b1JhQK zuX{8ymaI5O6gmqmy1?MZgT&r$dYU$u`Rk|G^RF*&H;tV;@$~WO`RL90`RA7l^Y3pL=Ns2Hm+bL!xxbi~$M)w_Cyvjj TPafNRv`6yn%$fHW{2c!S-_wkS literal 55891 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 diff --git a/assets/voxygen/voxel/npc/reddragon/male/foot_fr.vox b/assets/voxygen/voxel/npc/reddragon/male/foot_fr.vox index 0ea802d8497e2d76669fdba2543ca76048234f43..f108563d0cc4ab522b0382f5c72da44ea0a7ef8a 100644 GIT binary patch delta 1005 zcmW-f&1w`u5XbAgyJr(uq7cZ*c#KalAEJT*gBTBj#Jqz!iwEZg^t2$(&K$(Mx#&qm z@E8z5yy(F<@Eykgy71e7Rd;n&b@lxGs4tiOi6%d2)JmPhsHq14yQh6V>d}sB3G$UF&dd#I#n^&VZY?0aex7R2z50ItcAsO$f}= zS(a835+$h(c#<}NC+);RNUI@@1@=O^fGsYyx}dOhjwS*=o77^+1I%#V5c^-P78Nvs zc;K)t^(Y?NYT;Hgx0<=O%#8yJt2Hr#xbwtlh8qrUB)C&x!Ds~QfSu7KqZzD29U6{& zW~~c#CRB$~?Mf(4Xo4Dn%{`1{gboQ~qS}nmIkf_xVTTh&igm|2RG{pL4{AJ+ERYPg z1fBtY!gB=hM2$f;A=gGRat-TJMov7NXPgDS;x7sg6m(fotfD$?Y{$4laYMYRU@F2* zC~gK!F##a3S#e9mhhb`lJ)nj?!&Ej(G#S&VOoITfWaNql75GB^z?p~av`)?=zO5lD zSxc7Dfr$(`aHzSt*0ppPYH{WdE$g%Y)ax0pZ-)5uPYRYEK>>|b0Cp0ibEOA6k5yXHn5F(tP=b} zBX0p{s%Q-CC*z@@Y2MV@g1?}3EYJXMJ@A5t)h+$IJglnucFyy0Df6NGsXSd!7khgj4q~7G0a;py?*IS* literal 55891 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 R+j!mlM>VdBC6hA1`(I-y9q0f6 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/head_upper.vox b/assets/voxygen/voxel/npc/reddragon/male/head_upper.vox new file mode 100644 index 0000000000000000000000000000000000000000..c8d97068ef98d5cc80afb45683f8400abec359e3 GIT binary patch literal 57067 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 sk+O?oS5n-*V?4#WOs3e%vzEpB3w literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/chest_front.vox b/assets/voxygen/voxel/npc/reddragon/male/old/chest_front.vox new file mode 100644 index 0000000000000000000000000000000000000000..454d5fce85d72c0419cedf221cd9365becd58440 GIT binary patch literal 59039 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 b-F{YYumWb-N$Jzw#Xq6*y86I?1a$uxz$}MF literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/chest_rear.vox b/assets/voxygen/voxel/npc/reddragon/male/old/chest_rear.vox new file mode 100644 index 0000000000000000000000000000000000000000..e327503d6fec6cd1ccb30f09320ad6c60dc93814 GIT binary patch literal 60563 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/foot_br.vox b/assets/voxygen/voxel/npc/reddragon/male/old/foot_br.vox new file mode 100644 index 0000000000000000000000000000000000000000..9ad04079fc5be4868066daddcf510c931079d8f8 GIT binary patch literal 55891 zcmdtqd301)9S86`ZzgQ%!V&@rZJ35FVF_=NOcvI#q!9MKkOIRb^D=p4GBeIhR%0uq z#ZpR3DY7UOXhm8P3K%f8Doqg)MMR3VwjyG!b+>A*b^UpN_e}x`Ij4Vm&i94OeZTvD z_ulupcizi^a9FW$rE{kcV*a#}1+o%T-x6YJNonyN9LOUNj7d3f|E6e zqgAszS{*$^t6dgNh^S_hMV{Ma5!~KWw##CZ#gQOmSu|N}vdF<(?G72sV&h_$=d#$j z)?|JUTg=f@!~_?4uJx3qmpqq6>n&mqK2NZ4DtNzfdcEH*9gNwOnVxV~mMktz10Q>I!|zG7B}9OzdWGyR3Z9S~6?;G{H9{kAi{%YHDht8`}lV-gl0MC4EF6BqdQ>+k8%? zqa~+k!CalZYbH`t?OZywxr9z__tL3dVah)hqP|7Rl(NoA&WFZO=Keww#R(*;`j9x- zpTxOj>N{W1plU()Y!fv0xS(EDg6?b%-hX>3MYi;%tuH3giOVT;jfVc;{W&=~^mP7y8t*zt6E|<9l;#vV|D2$! z4+=VxkwKZ6ndI(2ndZ$tNus%t21W+b>0Q;A6G&)3IYmyaNgNuAEGKbm3-t9t$@Q`O^a6RF?w zh&mr(KB4LrBloDfP-{{(_v3@>!txEO9=qo<4Y)gna%^VDwf3AYwfq*kY~E|KGavls z;cubp-5F~L8@*)U@tGABHBp0KC!RXP^jF3>&&4kxPb5_1ujCh?p5;=#qG6-liruOM z$DVM!guq(Eu-CoDMcv>{L${=pp1 z-rNhNNrTc1h0-{oH1|Pi(xEiNpftmwG$WuiBcU{-pfnj!noKCoXebT;Gdr9=5sZb> zjDyl-L21TAX>=%!3rdp>rOAQPZ15lckP?}Xxno=mugHW2)P?|MRnzc|G50qvd zl*S9CDTC6KLuq_a8UspG0j2RnX)2*KCX{A9l%@(w6M)iGLurCgnh=yG45j%5lqLeD zi9%^&P?{PjO)ZqB4oXuGrD=fDG(u@U38iU*(tHX^^AMEgVJOX~p)?zyG#jBb%}|<0 zpfry{X*NM=J_DtB3`(;ZO7l3BW($<&2`J50D9w{lnx~*N+n_X0Lus}{X`X@7?10jI z7D}@dO0x?}vl~jY2TJofD9z`gG<%^m`=B(>LTUCxX%0YX4nk?3gVH{Bp)@Z;X}$)fc?C-Ibtug@pfulv(wu?Pyb7ghgVMYPr8x_w`4*Js9F*qUP@3~l zn(shqE&(p-nq{2WSi14{D?D9t-inqNX`-i6Zq3QF@Hl;+n^ zn%_Waeha1f9hBzxP?|qLY5oYM`4g1peJIVJp)`Mi()<-l^8u9RZ%~>Kp)`Mo(tHG^ z`3IEdpHP~AL23RCrTGt(=D$!Hg3<_^5O+vXf-Ig`L)hrWCqA>Hq9$te6~r`D|if#8J|}LRf)1G+wFG7i&_S6&>t|kvs-t%bv24NVt9E{JxjN4*k?woIwsAR zSNPzOJ5O2@G(Ub)W{y(>bT@=q7O;lk>0C-430bSm9S_7i^5%A)+Z(I4cGcV9@mc8H zj)tl}GC$Ytbm_TlSMAlN(K(SDx?Lf@;J4PJz^!Ht<#>E*J=!DH&!t-{>vHLQuQTKK z$~`;oRedTeLVi#CT3O?CyFIGW-?8r9ZnhdYU<9M;BpeB?SNUq;Dnhk9M6SEH{N3XX z8{tdK z)l=rbIS60To$`z4o)GWSX>M!5e14;wPO7QS^u^*YCACUx;-hfKj)~QYKVsf;|J_5&x!ec@IKlNlRhbuy literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/foot_fl.vox b/assets/voxygen/voxel/npc/reddragon/male/old/foot_fl.vox new file mode 100644 index 0000000000000000000000000000000000000000..acd39fbf047a0d592f891b2ec25766e2970585d7 GIT binary patch literal 55891 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/foot_fr.vox b/assets/voxygen/voxel/npc/reddragon/male/old/foot_fr.vox new file mode 100644 index 0000000000000000000000000000000000000000..0ea802d8497e2d76669fdba2543ca76048234f43 GIT binary patch literal 55891 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/male/old/tail_rear.vox new file mode 100644 index 0000000000000000000000000000000000000000..7bed628bdf2a812af6ebc595a611fda017c16656 GIT binary patch literal 55875 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 bD{T?^b)=d4B&Cnr#lLjtQZp2i2JVjlowES! literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/male/old/wing_in_l.vox new file mode 100644 index 0000000000000000000000000000000000000000..5d3e33a6646d7d2552429e7510ab69b27fdf2b77 GIT binary patch literal 57352 zcmds{+@Y5fIvU~*FT=cFVD=pGtbO-=6&A~ z;)fNBS4Ouhr54Vdy9hzO|E5yQ=dPM<;|e|{U;>DMl^3s?t13{y=OABjmMm5dMlDu$ zL_1=@l2=YJHds{SfQ!o^l)-o=TvVfji`6JF5{v**Pz!26HK+oWAOgZ51cD#{{J;mi zzysXC1)RVE?7#-Bzyi#`1S&u|CfC5%?UX4K<9l+WcKi0?iutvs1aK}+#2}&rF@$JGv|+pr z(a!scSP3kk3V3j>8qtebgZ@^WM=fGG+M?W!Gxh)=ChUh?U2ktRH&w=Pen+-7n zte_HD(6A03V(kH=-ZW zg%|)%5Cjeo0(KAvF6?&%(TUuZh!$W5CQt#qc>X-VhiA|Y{J;eQzzKrD0YbnI!oUV1 zzzQtD3{1d>=hqATzykunjpsUu=t2x3IzbpXfF0O?66n+5sJz{C;HmI+jV5Z>M1vc=sOEL&8izY-q%jlU$)z=zBH={|qi z5|>fbUrV{j*M@=Pb8wwM!vUw@@?ehTbC&qH0Uy53pQG2fykO?V%lPZ_(GOoM1Bvcr zSBfh!&Ukz;Zak@1d}uFT(@DMRhxXzXoz$ygXs^;!^=cg2i&uS8uBM^A%1_m6%Ftf? z2bGg@HFK|J=btlE@q+MaX=$OpzCLNO2dZgSpQ5GP6s_K?X#L9=yEH;I znUOTQZz4_EH-jn*J{oyTgeKl!OY!H&QSeelqclrEJcjxVMZ0G!dSaQPBWXpeP+zw~ z(Uvx}uTgaF1Vxv(C|XcjN_U`rX=8*kvq#c~rQ>OPs-F5TY^LoU=hC4YE~0nu&(Ne% z0h(T4OY_ejPpK8n)HzSlrppxVDk?g7tD-425t=)3G+jESjtaA;(u#=z$~0EeE$5G+ zeV3n3v!};t@p)5e)smUidBq~ykXuDtuIr?Id#n}{CBQH&&J2B_J`xU+Tl%ls^QM4g5p6=MxK+ipV zF1`20aw^>9qFWyH(PJ-%=?K;SPyaQu)c?i5p`n3pYu-ht$9L1T&DT(PQ<$E=SJA7N zD0*o8c$zR_0yTNgqy=*xC$(t<`3rtJu){dRt0K5}YHH}}G21A1dY;;Dx}HLp2kE6p z#?XOPVcLql8oK{yP1~w-UA+87Ds&L7-?4`_-M5eWAAgp1K7E*)@|)?bYj)B6yARUx zM-S7C88hfDys?xC&<8a9u%b7gG}ec2B|h>x9zmKEIfvhObXG}T$A#lEI!-Q`M(zs> zx;!RxvyLmq?$mMWus$7m9Dg`YZQZEjX**vguQN;yC7Ho%NBazk_`c_Y1| z-}mTuXK{T#WkMyvUz}e;i9)V7-N7%wSY2F?>dB{Cje3(F z!1Y9apoL#KiA=6wR2y_PS=8xb+?GhkxNUN*uF0szjh-z=ZLLvj))Td7d)M(g^oT^Z zt)MH%+wj|4jt#rZvEgHuW5YM392*n+3??1%6V@5qHF@9Y=WX}LZWQKqHOplEOOpym7;9; zCvkGlrdpIujVPO1Q8rOgHX}sYj1*-vN|eoLQ8r^l*^CusGftGvcu_X||3%CBQ|Clc zHj_lzoF>Xin3WD%H|?bHY-Kh zTrA3Fl_;A_MA=*_%H}drHkXUCNr5@mC(D4Xj<*<3Hm=2N0`$XC77iDuml+Bk# z**qc2=1EaDUlC>Vlqj38in95dD4VZ~vN9>DcPexRk4hh%aE zquQXW$)Zjd2Bv7iOj&fy3%PyQ+-oYbO5~#$?kME#eJZY>hW-PcZ)6+RPX)~_yhcllzX>WJtqbFs}$vVNQQe;+VjTAgxT$>ki z#xC=~djYMaRR%erKsYJIPb6mr*8*+(5HV4T*PjIm;UDcPFpId&W-t2x=u81AQA89;5Km9#On01Bzz?n#V?-wjDaC1%x!E~TRL@$ zLAq&ermZ;eQqsG0*+3Q^I5@E`qzjqj*3V6PYJG}5`DAORTOWk+uG49alaJNwE_kH# z+2neC^1R$@1}5T*gA*CaQpF;Y9k*@zNCy|8Q|MX>V#jK$(}~s-YDrzwn))PpOgxHT NdT?tho8=Di{{nsU;!gko literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/wing_in_r.vox b/assets/voxygen/voxel/npc/reddragon/male/old/wing_in_r.vox new file mode 100644 index 0000000000000000000000000000000000000000..83cce30c40f3e702ca55f21bdc4bd3e0f4a4119d GIT binary patch literal 57352 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/wing_out_l.vox b/assets/voxygen/voxel/npc/reddragon/male/old/wing_out_l.vox new file mode 100644 index 0000000000000000000000000000000000000000..f3c30fbbb5020295b1aac5dac30aef7a28993f5f GIT binary patch literal 58012 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 diff --git a/assets/voxygen/voxel/npc/reddragon/male/tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/male/tail_rear.vox index 7bed628bdf2a812af6ebc595a611fda017c16656..4b596e4409055fcede44083b3cdc51a34daead9c 100644 GIT binary patch delta 561 zcmWkrJ&P1U6zqQWdUig$ms7Y@4Nr`WW@iIMH(10o5ahf}Ffh8r?2=6dF&YqOWQyjZB4_Ys_RwPd&7MBfY%?fdT{UH(o18^-J8pOf_eVSnET7a zMLAx0CaftdVI4d?Tt2fTJdaosFq0s23ARDdMg!&=WQNjiklQmI^@%-0YPU#a1NuQf zf~_%;2C1wX&G;ZgEg2gb#hh56k%D@{z=B#qt&~P9V#Qv?-pD=Cp@uhGcr@^~5s$fe zTZ@-ky`_hX`Ejt>Amd^c7b@&lbLN#RnQ2Ng5pKkwl#7r{%CE{9o-?$hR?1vG2U_hQ z7yzuHV`(oVcQPo@tHaf6$>=4QgnF*Mb?EIaMel$?z@{ieSfV|g zcFF)z5NQTF80A3e0HSaa?>dy)w~y_yy?*-F@<%N4Jl;stxSwTl;at0?%l4^z(*D+I zI2l&)^ZOU^>!(-o=lR?ApI+WMKH7~ZZ?422=X>$bx2y5a?e>~G3ZW`u@KwCHGmX0! K{OLQ_eg6*=w`KhR delta 456 zcmW-cKT88a5XEO^cQ1eLVo1+~vA(f3qNFjos!*YF_h2Oq6Gdr`pFYjhNGVO*oSNcSBdX%0)XzPdQJk5@i5MUWF z2OMZ#Wa%cuVATPORVJg%K#WpRl**!9X5}I<@D3UQi&_K>&N-+>k27s-7-E3|kx{_` zK~Y>lRL~?C%tbVmk;4U)1P~_{is1>VASduL%ZD85n8nC*j2hq=am-4=hliFf!-hl& z8ZHf5!l7_s0Zo7lc=1fbPY~l#T!F6yMGc{2?>$`m(V*iec2nN{qNU? Se|pTj?k4}Uhr`|IYWfen{ZDlO diff --git a/assets/voxygen/voxel/npc/reddragon/male/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/male/wing_in_l.vox index 5d3e33a6646d7d2552429e7510ab69b27fdf2b77..1263cc91ca77fd6dce4abe91672fa7d07e6ee36b 100644 GIT binary patch delta 1444 zcmWlZIgcY%5XaxE>bq_C;r2a;?U~u#ndJk}hgKjl!3ePgNNCwlK+?8j5~m~tXe7ii z6RgPDgcQN1DBldY-xy;)djIA*%)ApC z^U2N2>)t`(H-(-;F7)EFmpA`82>hN|V}e4q?vb|cLR)XFTW_RWjdf>Tt*obw^|c9m zTKcJ0ex{|DLqn~+LhGQfr90An?T)o}Cn!_+44P}@96<|hqLH-Du{N6MPL|r*3n}GX zYUfN!J(Efg@>(i;O2J23+6yh^0{H|w)@m@c^&q!(e<+nX(%K#YYJuMzPAxm#qfp$A z2^e84w2@N^4LQuwGp*zVJw;9ca)$32d`Y2WZF?jhWVVVYQro3Arl+-@Yc1zmg;Rj7 z;4>-x6Dh+vJkin&n8>kISz=3nep^pMGweULloBF2jiXbf2fTN^)B{05M~VkF++CHYqiW)Rud@ zro%O;PqoZ4TlPj$dZ5)69iMCCuBCBT(s(PWyrtCsA^Ak>gv7x@>VO7lfK1z-kTUBESkTq&K}7`X>$;fxQ3=mX-|50mZr z6B6WbHq$5o=8ywD!al>sLIoq)MmaQ;O*oWoFp-Tvg=W%v3uvxwFqTa}wQV?(O+Z5d zjfKR7nQY@+HiN@iLCi!q-jTFEalwAdA4$S7G{MMte4deCkRa8aPZB@Zokx&Am$skT zwwF_I#*>@s#$`EO7BNX|n?g!q?dvYcbf@HzNO!$V+Nh8=9#V^!2K_8;n-kB@;&Rp4h^F(nlcjnST*E{pr zc`#3qjfLdi2nnp*8LJPs{|0|0*HP5H7X;n&Fzl{f_xA7b=JwtA^V?TZn!LW>cR&B| zRrl*p-*$hz{r>isXqA7lnRKsTt-IgfUUh%|_O$!(gWG?iO_KEEE*bQ@B2T-?aPZ?c H{@VTzO!vqT literal 57352 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 NdT?tho8=Di{{nsU;!gko diff --git a/assets/voxygen/voxel/npc/reddragon/male/wing_in_r.vox b/assets/voxygen/voxel/npc/reddragon/male/wing_in_r.vox index 83cce30c40f3e702ca55f21bdc4bd3e0f4a4119d..30c4c14f3893dbd749078587a91093d7d61c6554 100644 GIT binary patch delta 1444 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 diff --git a/assets/voxygen/voxel/npc/reddragon/male/wing_out_l.vox b/assets/voxygen/voxel/npc/reddragon/male/wing_out_l.vox index f3c30fbbb5020295b1aac5dac30aef7a28993f5f..dcca02bfd521286b79b0f8417c75f4942566e4ab 100644 GIT binary patch literal 3580 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 literal 58012 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 Z>G2hM>G5|ZjXSbQFaBrm-#QR%${Kq&wK literal 58012 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 Zuak2$ot?C8I@ Self::Skeleton { let mut next = (*skeleton).clone(); + let wave_ultra_slow = (anim_time as f32 * 1.0 + PI).sin(); + let wave_ultra_slow_cos = (anim_time as f32 * 3.0 + PI).cos(); + let wave_slow = (anim_time as f32 * 4.5).sin(); + let wave_slow_cos = (anim_time as f32 * 4.5).cos(); + let lab = 12.0; //14.0 let footl = (anim_time as f32 * lab as f32 + PI).sin(); diff --git a/voxygen/src/anim/dragon/fly.rs b/voxygen/src/anim/dragon/fly.rs index 09aaf27505..e830d836f0 100644 --- a/voxygen/src/anim/dragon/fly.rs +++ b/voxygen/src/anim/dragon/fly.rs @@ -18,7 +18,12 @@ impl Animation for FlyAnimation { let mut next = (*skeleton).clone(); let lab = 12.0; - + + let wave_ultra_slow = (anim_time as f32 * 1.0 + PI).sin(); + let wave_ultra_slow_cos = (anim_time as f32 * 3.0 + PI).cos(); + let wave_slow = (anim_time as f32 * 4.5).sin(); + let wave_slow_cos = (anim_time as f32 * 4.5).cos(); + let vertlf = (anim_time as f32 * lab as f32 + PI * 1.8).sin().max(0.15); let vertrfoffset = (anim_time as f32 * lab as f32 + PI * 0.80).sin().max(0.15); let vertlboffset = (anim_time as f32 * lab as f32).sin().max(0.15); @@ -52,13 +57,27 @@ impl Animation for FlyAnimation { * 0.125, ); - next.head.offset = Vec3::new( + let wave = (anim_time as f32 * 14.0).sin(); + let wave_slow = (anim_time as f32 * 3.5 + PI).sin(); + let wave_stop = (anim_time as f32 * 5.0).min(PI / 2.0).sin(); + + next.head_upper.offset = Vec3::new(0.0, 7.5, 15.0 + wave_stop * 4.8) * 1.05; + next.head_upper.ori = + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(wave_slow * -0.25); + next.head_upper.scale = Vec3::one() * 1.05; + + next.head_lower.offset = Vec3::new(0.0, 7.5, 15.0 + wave_stop * 4.8) * 1.05; + next.head_lower.ori = + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(wave_slow * -0.25); + next.head_lower.scale = Vec3::one() * 1.05; + + next.jaw.offset = Vec3::new( 0.0, - skeleton_attr.head.0 + 0.5, - skeleton_attr.head.1 + center * 0.5 - 1.0, + skeleton_attr.jaw.0 - wave_ultra_slow_cos * 0.12, + skeleton_attr.jaw.1 + wave_slow * 0.2, ); - next.head.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0 + center * 0.03); - next.head.scale = Vec3::one(); + next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.05); + next.jaw.scale = Vec3::one() * 0.98; next.tail_front.offset = Vec3::new( 0.0, diff --git a/voxygen/src/anim/dragon/idle.rs b/voxygen/src/anim/dragon/idle.rs index b827ca7ba0..0557bef6ec 100644 --- a/voxygen/src/anim/dragon/idle.rs +++ b/voxygen/src/anim/dragon/idle.rs @@ -1,5 +1,5 @@ use super::{super::Animation, DragonSkeleton, SkeletonAttr}; -use std::ops::Mul; +use std::{f32::consts::PI, ops::Mul}; use vek::*; pub struct IdleAnimation; @@ -17,10 +17,12 @@ impl Animation for IdleAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); + let wave_ultra_slow = (anim_time as f32 * 1.0 + PI).sin(); + let wave_ultra_slow_cos = (anim_time as f32 * 3.0 + PI).cos(); let wave_slow = (anim_time as f32 * 4.5).sin(); let wave_slow_cos = (anim_time as f32 * 4.5).cos(); - let duck_head_look = Vec2::new( + let look = Vec2::new( ((global_time + anim_time) as f32 / 8.0) .floor() .mul(7331.0) @@ -33,10 +35,31 @@ impl Animation for IdleAnimation { * 0.25, ); - next.head.offset = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); - next.head.ori = Quaternion::rotation_z(duck_head_look.x) - * Quaternion::rotation_x(-duck_head_look.y.abs() + wave_slow_cos * 0.03); - next.head.scale = Vec3::one(); + next.head_upper.offset = Vec3::new( + 0.0, + skeleton_attr.head_upper.0, + skeleton_attr.head_upper.1 + wave_ultra_slow * 0.4, + ) * 1.05; + next.head_upper.ori = + Quaternion::rotation_z(0.8 * look.x) * Quaternion::rotation_x(0.8 * look.y); + next.head_upper.scale = Vec3::one() * 1.05; + + next.head_lower.offset = Vec3::new( + 0.0, + skeleton_attr.head_lower.0, + skeleton_attr.head_lower.1 + wave_ultra_slow * 0.20, + ); + next.head_lower.ori = + Quaternion::rotation_z(-0.4 * look.x) * Quaternion::rotation_x(-0.4 * look.y); + next.head_lower.scale = Vec3::one() * 1.05; + + next.jaw.offset = Vec3::new( + 0.0, + skeleton_attr.jaw.0 - wave_ultra_slow_cos * 0.12, + skeleton_attr.jaw.1 + wave_slow * 0.2, + ); + next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.05); + next.jaw.scale = Vec3::one() * 0.98; next.chest_front.offset = Vec3::new( 0.0, diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index 6f38213069..63db3aaee8 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -11,9 +11,17 @@ use common::comp::{self}; use vek::Vec3; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const HEAD_X: f32 = 4.0; +const HEAD_UPPER_X: f32 = 11.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const HEAD_Z: f32 = 11.0; +const HEAD_UPPER_Z: f32 = 18.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const HEAD_LOWER_X: f32 = -4.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const HEAD_LOWER_Z: f32 = -2.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const JAW_X: f32 = 7.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] +const JAW_Z: f32 = -5.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const CHEST_F_X: f32 = 0.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] @@ -23,11 +31,11 @@ const CHEST_R_X: f32 = -13.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const CHEST_R_Z: f32 = 0.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_F_X: f32 = -11.5; +const TAIL_F_X: f32 = -13.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const TAIL_F_Z: f32 = 16.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_R_X: f32 = -25.5; +const TAIL_R_X: f32 = -28.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const TAIL_R_Z: f32 = 0.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] @@ -57,7 +65,9 @@ const FEET_B_Z: f32 = 3.0; #[derive(Clone, Default)] pub struct DragonSkeleton { - head: Bone, + head_upper: Bone, + head_lower: Bone, + jaw: Bone, chest_front: Bone, chest_rear: Bone, tail_front: Bone, @@ -81,7 +91,13 @@ impl Skeleton for DragonSkeleton { fn bone_count(&self) -> usize { 13 } +<<<<<<< HEAD fn compute_matrices(&self) -> ([FigureBoneData; 16], Vec3) { +======= + fn compute_matrices(&self) -> [FigureBoneData; 16] { + let head_upper_mat = self.head_upper.compute_base_matrix(); + let head_lower_mat = self.head_lower.compute_base_matrix(); +>>>>>>> New dragon model, added jaw, splitted head into upper/lower let chest_front_mat = self.chest_front.compute_base_matrix(); let chest_rear_mat = self.chest_rear.compute_base_matrix(); let wing_in_l_mat = self.wing_in_l.compute_base_matrix(); @@ -112,7 +128,9 @@ impl Skeleton for DragonSkeleton { ) ======= [ - FigureBoneData::new(self.head.compute_base_matrix() * chest_front_mat), + FigureBoneData::new(head_upper_mat), + FigureBoneData::new(head_upper_mat * head_lower_mat), + FigureBoneData::new(head_upper_mat * self.jaw.compute_base_matrix()), FigureBoneData::new(chest_front_mat), FigureBoneData::new(self.chest_rear.compute_base_matrix() * chest_front_mat), FigureBoneData::new(chest_rear_mat * self.tail_front.compute_base_matrix()), @@ -126,14 +144,14 @@ impl Skeleton for DragonSkeleton { FigureBoneData::new(self.foot_bl.compute_base_matrix()), FigureBoneData::new(self.foot_br.compute_base_matrix()), FigureBoneData::default(), - FigureBoneData::default(), - FigureBoneData::default(), ] >>>>>>> Symmetry of dragon skeleton } fn interpolate(&mut self, target: &Self, dt: f32) { - self.head.interpolate(&target.head, dt); + self.head_upper.interpolate(&target.head_upper, dt); + self.head_lower.interpolate(&target.head_lower, dt); + self.jaw.interpolate(&target.jaw, dt); self.chest_front.interpolate(&target.chest_front, dt); self.chest_rear.interpolate(&target.chest_rear, dt); self.tail_front.interpolate(&target.tail_front, dt); @@ -150,7 +168,9 @@ impl Skeleton for DragonSkeleton { } pub struct SkeletonAttr { - head: (f32, f32), + head_upper: (f32, f32), + head_lower: (f32, f32), + jaw: (f32, f32), chest_front: (f32, f32), chest_rear: (f32, f32), tail_front: (f32, f32), @@ -176,7 +196,9 @@ impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { impl Default for SkeletonAttr { fn default() -> Self { Self { - head: (0.0, 0.0), + head_upper: (0.0, 0.0), + head_lower: (0.0, 0.0), + jaw: (0.0, 0.0), chest_front: (0.0, 0.0), chest_rear: (0.0, 0.0), tail_front: (0.0, 0.0), @@ -194,8 +216,14 @@ impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { fn from(body: &'a comp::dragon::Body) -> Self { use comp::dragon::Species::*; Self { - head: match (body.species, body.body_type) { - (Reddragon, _) => (*HEAD_X, *HEAD_Z), + head_upper: match (body.species, body.body_type) { + (Reddragon, _) => (*HEAD_UPPER_X, *HEAD_UPPER_Z), + }, + head_lower: match (body.species, body.body_type) { + (Reddragon, _) => (*HEAD_LOWER_X, *HEAD_LOWER_Z), + }, + jaw: match (body.species, body.body_type) { + (Reddragon, _) => (*JAW_X, *JAW_Z), }, chest_front: match (body.species, body.body_type) { (Reddragon, _) => (*CHEST_F_X, *CHEST_F_Z), diff --git a/voxygen/src/anim/dragon/run.rs b/voxygen/src/anim/dragon/run.rs index 5264e33ed0..31ce82a4df 100644 --- a/voxygen/src/anim/dragon/run.rs +++ b/voxygen/src/anim/dragon/run.rs @@ -18,6 +18,12 @@ impl Animation for RunAnimation { let mut next = (*skeleton).clone(); let lab = 14; + + let wave_ultra_slow = (anim_time as f32 * 1.0 + PI).sin(); + let wave_ultra_slow_cos = (anim_time as f32 * 3.0 + PI).cos(); + let wave_slow = (anim_time as f32 * 4.5).sin(); + let wave_slow_cos = (anim_time as f32 * 4.5).cos(); + let vertlf = (anim_time as f32 * lab as f32 + PI * 1.8).sin().max(0.15); let vertrfoffset = (anim_time as f32 * lab as f32 + PI * 0.80).sin().max(0.15); let vertlboffset = (anim_time as f32 * lab as f32).sin().max(0.15); @@ -51,14 +57,31 @@ impl Animation for RunAnimation { * 0.125, ); - next.head.offset = Vec3::new( + next.head_upper.offset = Vec3::new( 0.0, - skeleton_attr.head.0 + horichest * 0.9, - skeleton_attr.head.1 + verthead * -0.9, + skeleton_attr.head_upper.0 + horichest * 1.8, + skeleton_attr.head_upper.1 + verthead * -1.8, ) * 1.05; - next.head.ori = + next.head_upper.ori = Quaternion::rotation_x(wolf_look.y) * Quaternion::rotation_z(wolf_look.x); - next.head.scale = Vec3::one() * 1.05; + next.head_upper.scale = Vec3::one() * 1.05; + + next.head_lower.offset = Vec3::new( + 0.0, + skeleton_attr.head_lower.0 + horichest * 1.8, + skeleton_attr.head_lower.1 + verthead * -1.8, + ) * 1.05; + next.head_lower.ori = + Quaternion::rotation_x(wolf_look.y) * Quaternion::rotation_z(wolf_look.x); + next.head_lower.scale = Vec3::one() * 1.05; + + next.jaw.offset = Vec3::new( + 0.0, + skeleton_attr.jaw.0 - wave_ultra_slow_cos * 0.12, + skeleton_attr.jaw.1 + wave_slow * 0.2, + ); + next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.05); + next.jaw.scale = Vec3::one() * 0.98; next.tail_front.offset = Vec3::new( 0.0, diff --git a/voxygen/src/scene/figure/cache.rs b/voxygen/src/scene/figure/cache.rs index 4ca5547771..d88d4f2fb2 100644 --- a/voxygen/src/scene/figure/cache.rs +++ b/voxygen/src/scene/figure/cache.rs @@ -417,7 +417,17 @@ impl FigureModelCache { DragonLateralSpec::load_watched(manifest_indicator); [ - Some(dragon_center_spec.mesh_head( + Some(dragon_center_spec.mesh_head_upper( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_center_spec.mesh_head_lower( + body.species, + body.body_type, + generate_mesh, + )), + Some(dragon_center_spec.mesh_jaw( body.species, body.body_type, generate_mesh, @@ -483,8 +493,6 @@ impl FigureModelCache { generate_mesh, )), None, - None, - None, ] }, Body::BirdSmall(body) => [ diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 1bfd77b30f..acceb10df0 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -1873,7 +1873,9 @@ pub struct DragonCenterSpec(HashMap<(DSpecies, DBodyType), SidedDCenterVoxSpec>) #[derive(Serialize, Deserialize)] struct SidedDCenterVoxSpec { - head: DragonCenterSubSpec, + upper: DragonCenterSubSpec, + lower: DragonCenterSubSpec, + jaw: DragonCenterSubSpec, chest_front: DragonCenterSubSpec, chest_rear: DragonCenterSubSpec, tail_front: DragonCenterSubSpec, @@ -1927,7 +1929,7 @@ impl DragonCenterSpec { .unwrap() } - pub fn mesh_head( + pub fn mesh_head_upper( &self, species: DSpecies, body_type: DBodyType, @@ -1937,15 +1939,57 @@ impl DragonCenterSpec { Some(spec) => spec, None => { error!( - "No head specification exists for the combination of {:?} and {:?}", + "No upper head specification exists for the combination of {:?} and {:?}", species, body_type ); return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); }, }; - let center = graceful_load_segment(&spec.head.center.0); + let central = graceful_load_segment(&spec.upper.center.0); - generate_mesh(¢er, Vec3::from(spec.head.offset)) + generate_mesh(¢ral, Vec3::from(spec.upper.offset)) + } + + pub fn mesh_head_lower( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No lower head specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let central = graceful_load_segment(&spec.lower.center.0); + + generate_mesh(¢ral, Vec3::from(spec.lower.offset)) + } + + pub fn mesh_jaw( + &self, + species: DSpecies, + body_type: DBodyType, + generate_mesh: impl FnOnce(&Segment, Vec3) -> Mesh, + ) -> Mesh { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No jaw specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh); + }, + }; + let central = graceful_load_segment(&spec.jaw.center.0); + + generate_mesh(¢ral, Vec3::from(spec.jaw.offset)) } pub fn mesh_chest_front( From 76cdd81c06f914f1a7d54da3bd1673bd55fe425f Mon Sep 17 00:00:00 2001 From: jshipsey Date: Fri, 8 May 2020 01:00:12 -0400 Subject: [PATCH 08/19] skeletal tweaks --- voxygen/src/anim/dragon/idle.rs | 8 +++--- voxygen/src/anim/dragon/mod.rs | 48 ++++++++++++++++----------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/voxygen/src/anim/dragon/idle.rs b/voxygen/src/anim/dragon/idle.rs index 0557bef6ec..ecc2f29404 100644 --- a/voxygen/src/anim/dragon/idle.rs +++ b/voxygen/src/anim/dragon/idle.rs @@ -90,7 +90,7 @@ impl Animation for IdleAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_l.ori = Quaternion::rotation_z(0.0); + next.wing_in_l.ori = Quaternion::rotation_y(wave_ultra_slow * -0.5); next.wing_in_l.scale = Vec3::one() * 1.05; next.wing_in_r.offset = Vec3::new( @@ -98,7 +98,7 @@ impl Animation for IdleAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_r.ori = Quaternion::rotation_y(0.0); + next.wing_in_r.ori = Quaternion::rotation_y(wave_ultra_slow * 0.5); next.wing_in_r.scale = Vec3::one() * 1.05; next.wing_out_l.offset = Vec3::new( @@ -106,7 +106,7 @@ impl Animation for IdleAnimation { skeleton_attr.wing_out.1, skeleton_attr.wing_out.2, ); - next.wing_out_l.ori = Quaternion::rotation_z(0.0); + next.wing_out_l.ori = Quaternion::rotation_y(wave_ultra_slow * -0.5); next.wing_out_l.scale = Vec3::one() * 1.05; next.wing_out_r.offset = Vec3::new( @@ -114,7 +114,7 @@ impl Animation for IdleAnimation { skeleton_attr.wing_out.1, skeleton_attr.wing_out.2, ); - next.wing_out_r.ori = Quaternion::rotation_y(0.0); + next.wing_out_r.ori = Quaternion::rotation_y(wave_ultra_slow * 0.5); next.wing_out_r.scale = Vec3::one() * 1.05; next.foot_fl.offset = Vec3::new( diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index 63db3aaee8..393b85c9b2 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -11,13 +11,13 @@ use common::comp::{self}; use vek::Vec3; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const HEAD_UPPER_X: f32 = 11.5; +const HEAD_UPPER_X: f32 = 2.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const HEAD_UPPER_Z: f32 = 18.0; +const HEAD_UPPER_Z: f32 = 4.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const HEAD_LOWER_X: f32 = -4.0; +const HEAD_LOWER_X: f32 = 8.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const HEAD_LOWER_Z: f32 = -2.0; +const HEAD_LOWER_Z: f32 = 3.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const JAW_X: f32 = 7.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] @@ -31,25 +31,25 @@ const CHEST_R_X: f32 = -13.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const CHEST_R_Z: f32 = 0.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_F_X: f32 = -13.5; +const TAIL_F_X: f32 = -12.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_F_Z: f32 = 16.5; +const TAIL_F_Z: f32 = 1.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_R_X: f32 = -28.0; +const TAIL_R_X: f32 = -30.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_R_Z: f32 = 0.0; +const TAIL_R_Z: f32 = 14.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_IN_X: f32 = 10.0; +const WING_IN_X: f32 = 2.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_IN_Y: f32 = -28.5; +const WING_IN_Y: f32 = -16.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_IN_Z: f32 = 6.0; +const WING_IN_Z: f32 = 3.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_OUT_X: f32 = 1.0; +const WING_OUT_X: f32 = 23.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_OUT_Y: f32 = 2.0; +const WING_OUT_Y: f32 = 0.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_OUT_Z: f32 = 12.0; +const WING_OUT_Z: f32 = 4.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const FEET_F_X: f32 = 4.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] @@ -89,7 +89,7 @@ impl DragonSkeleton { impl Skeleton for DragonSkeleton { type Attr = SkeletonAttr; - fn bone_count(&self) -> usize { 13 } + fn bone_count(&self) -> usize { 15 } <<<<<<< HEAD fn compute_matrices(&self) -> ([FigureBoneData; 16], Vec3) { @@ -128,17 +128,17 @@ impl Skeleton for DragonSkeleton { ) ======= [ - FigureBoneData::new(head_upper_mat), - FigureBoneData::new(head_upper_mat * head_lower_mat), - FigureBoneData::new(head_upper_mat * self.jaw.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * head_lower_mat*head_upper_mat), + FigureBoneData::new(chest_front_mat * head_lower_mat), + FigureBoneData::new(chest_front_mat * head_lower_mat*head_upper_mat * self.jaw.compute_base_matrix()), FigureBoneData::new(chest_front_mat), - FigureBoneData::new(self.chest_rear.compute_base_matrix() * chest_front_mat), - FigureBoneData::new(chest_rear_mat * self.tail_front.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * self.chest_rear.compute_base_matrix() ), + FigureBoneData::new(chest_front_mat*chest_rear_mat * tail_front_mat), FigureBoneData::new(self.tail_rear.compute_base_matrix() * tail_front_mat), FigureBoneData::new(chest_front_mat * self.wing_in_l.compute_base_matrix()), FigureBoneData::new(chest_front_mat * self.wing_in_r.compute_base_matrix()), - FigureBoneData::new(self.wing_out_l.compute_base_matrix() * wing_in_l_mat), - FigureBoneData::new(self.wing_out_r.compute_base_matrix() * wing_in_r_mat), + FigureBoneData::new(chest_front_mat*wing_in_l_mat*self.wing_out_l.compute_base_matrix()), + FigureBoneData::new(chest_front_mat*wing_in_r_mat*self.wing_out_r.compute_base_matrix()), FigureBoneData::new(self.foot_fl.compute_base_matrix()), FigureBoneData::new(self.foot_fr.compute_base_matrix()), FigureBoneData::new(self.foot_bl.compute_base_matrix()), @@ -244,10 +244,10 @@ impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { (Reddragon, _) => (*WING_OUT_X, *WING_OUT_Y, *WING_OUT_Z), }, feet_f: match (body.species, body.body_type) { - (Reddragon, _) => (*FEET_F_X, *FEET_F_Y, *FEET_F_Z), + (Reddragon, _) => (4.0, 0.0, 1.5), }, feet_b: match (body.species, body.body_type) { - (Reddragon, _) => (*FEET_B_X, *FEET_B_Y, *FEET_B_Z), + (Reddragon, _) => (4.0, -15.0, 3.0), }, height: match (body.species, body.body_type) { (Reddragon, _) => (1.0), From e3cbdc82bc8e0cdd39a9a2f3f340e0a880193ba4 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Fri, 8 May 2020 01:01:50 -0400 Subject: [PATCH 09/19] asset and manifest tweaks --- .../voxygen/voxel/dragon_lateral_manifest.ron | 16 ++++++++-------- .../npc/reddragon/female/6-tail_rear.vox | Bin 1484 -> 0 bytes .../voxel/npc/reddragon/female/wing_in_l.vox | Bin 56851 -> 2368 bytes .../voxel/npc/reddragon/female/wing_in_r.vox | Bin 56851 -> 2368 bytes .../voxel/npc/reddragon/female/wing_out_l.vox | Bin 58063 -> 3580 bytes .../voxel/npc/reddragon/female/wing_out_r.vox | Bin 58063 -> 3580 bytes 6 files changed, 8 insertions(+), 8 deletions(-) delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/6-tail_rear.vox diff --git a/assets/voxygen/voxel/dragon_lateral_manifest.ron b/assets/voxygen/voxel/dragon_lateral_manifest.ron index 4b606120fe..f4194d97c3 100644 --- a/assets/voxygen/voxel/dragon_lateral_manifest.ron +++ b/assets/voxygen/voxel/dragon_lateral_manifest.ron @@ -1,19 +1,19 @@ ({ (Reddragon, Male): ( wing_in_l: ( - offset: (-0.5, -3.5, -44.0), + offset: (-24.0, -3.0, 0.0), lateral: ("npc.reddragon.male.wing_in_l"), ), wing_in_r: ( - offset: (-0.5, -3.5, -44.0), + offset: (0.0, -3.0, 0.0), lateral: ("npc.reddragon.male.wing_in_r"), ), wing_out_l: ( - offset: (-0.5, -3.5, -38.0), + offset: (-29.0, -3.0, -4.0), lateral: ("npc.reddragon.male.wing_out_l"), ), wing_out_r: ( - offset: (-0.5, -3.5, -38.0), + offset: (0.0, -3.0, -4.0), lateral: ("npc.reddragon.male.wing_out_r"), ), foot_fl: ( @@ -35,19 +35,19 @@ ), (Reddragon, Female): ( wing_in_l: ( - offset: (-0.5, -3.5, -44.0), + offset: (-24.0, -3.0, 0.0), lateral: ("npc.reddragon.female.wing_in_l"), ), wing_in_r: ( - offset: (-0.5, -3.5, -44.0), + offset: (0.0, -3.0, 0.0), lateral: ("npc.reddragon.female.wing_in_r"), ), wing_out_l: ( - offset: (-0.5, -3.5, -38.0), + offset: (-29.0, -3.0, -4.0), lateral: ("npc.reddragon.female.wing_out_l"), ), wing_out_r: ( - offset: (-0.5, -3.5, -38.0), + offset: (0.0, -3.0, -4.0), lateral: ("npc.reddragon.female.wing_out_r"), ), foot_fl: ( diff --git a/assets/voxygen/voxel/npc/reddragon/female/6-tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/6-tail_rear.vox deleted file mode 100644 index 022953a4b96774722866b14c3b4ddd9908998a7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1484 zcmbtTZAhJE7`~s6_jo)X>hw&fD;1}kN7tMmQ;+9l$LVQvrpwuEGbgh)+DTR-A)6dF zoDj2REfe(|Eps6&hPsI#iz1VdA;=JmC_=`F=x;wF`ge7|XVj1ViRgig>%Oo1e(vXb z-jC*^Co+eLsJ^PUfr;)KL`}6V0f(9JieV%$EQ}K;TWYTg4tTXQB&iBX(kDrH6=|;~ z<Hsw)*mXuIlC4^TB<qq>vsh1oyBnVV+B~%EG=R`_W=a z8$3_R3T=9@O7_EZV%P`AGKTMD@N9!;D%O9BIDG38L>%5FkOq#4`fn0Ba$ zwy810rp9%w3LAFri_zm2&dH|2((L6}#!RNpMaL$B)q-&Bx*v0#v#JXGlYv9 zytgq8>A@^yhw@N5@5jzA7qSM@kT;cq!h3s=(n`qg<=Mjo-!g$-;PZQ|prJU>oC^V) z4SuT?4Y9EZ7zT!ju*mqH@e5<<0%7I@!pcp;+8xgQgvkKm?lHpFtArNLFEkUbpJBb5 zQ0*qPl@q#a2&1ewmZTvV$U;wJE{4w*A#}V9!{@58a`i?0Iu%6zu4MR%GEnzSF3vWW zq2mal?-XI;O~Uefgwpgh)aGTQwR9i4YCLGpOGdC{Ck77XV7{#Y0be1GKI=it^Hu0L z-GG^~%lK+~0PA0l;>Wccm>+M&%BQcvZntAc(l%sfW}?uYh0=YyQBmYZ&+93e`8W$d ztmR?rem?5h_xu!L{R_g+-x7L)xfty$#_Du6e*38jUDpyY@RtcecH=lqwJBPD4YAtWwPg$-YD-4Zy+f? P6~!X>PwnrX$C&;C8uBm3 diff --git a/assets/voxygen/voxel/npc/reddragon/female/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/female/wing_in_l.vox index ceb43005d2722c8a0fd1c4ff979342a9996c9b00..1263cc91ca77fd6dce4abe91672fa7d07e6ee36b 100644 GIT binary patch delta 1353 zcmWlZNv_*Q5Qe*}IEs`wh}1kjy=VJ5xd7ROfh@9kizJHxf#W++(hYP70|6B47TIQz zg9S)F3MkdkHT+dw&98s!KjrPWUp^oHFvk4!!`sg=^L=d0uWw&|Ob3PE0{RZ}q0hg6 zdHdHx;P=TI6IF8YH`@Da?Sq+Kf?6+{=+*k#+CV!SY8R*4gt@k1p-oUiQ*DDvT{PCl zul45qnL2-tvVbq4mA2jnT5C6|rT4blX{J{>Xm4Mnk!NwpeDW~0t-0JX+%1*eu>+)yZPX9Uz3EA3=Yp(%$YdZDfC&~xMr zASZlJ@B@Xm+NUI*6t+#~;_N{?ld98ab@Hrjya3n{zLX~1NfWQ&nKov^M7GivnQg+` zMw+a!F4&8kX0|g4$)B_tSJD-^?WVbPRc76Y0yP0SdNQNyow^#?KQNJ#wk1B}(spSj ztxqn)h{tqa=C;jB+j;;oGm6*h%t*VOnpJL_n|-3gCs6OTDGJ-9wKM@}^+?Ch+WAk? z`A6x3qqM<6TsS13tIJ3nt;Iz&5Us?;Yeqa)m(IiKOsR0XETigUWmG~_ zImc7EL~}WZ3uq~Qu!dIJM>9E(bKA$YoFf{FXe=fsF65Gwa-Ixl6)|%?2OH@_;-cGv zKa#{VXpWKbggm3LB0;X#kR)NL*MOjKCH=UteOgj*$&*{?*=IR@7BS0gpF>Jv9qTnJ z^s3~MkzUh6`cWl)GNl$T$)AuHp8$RfFa#9R7$b&&K!0$;<|E6I0s!y<;_)(kfO)B2 zJra2M>u`O%c?r>p(*iw0CSJ(tk;4O&H^dLIfb#fOcr@fK^mg`^2#im2kkh?#pme6# zb+EHI$}%ZkD&5L(PFG4Y!B3ck;3oqpz7Ya2nUHH}W-Gm9$eaoJ1#sq79_Cf=qeLEY z`biMrnK$dpWF4{q2@+^yQw$|F#_VnEQLRi1guV4Q=FPz+a?mf%> zo%`-hNcdPZXR&8HV{F!hX|u6m@FrsmrY&tN6be2$D5Fq{P!=y)I_={j*uiIgP7ApWCeg?yv^A$>QfuTadd@ zG@G9nVe3XIwgq^pJ-|!sA;oD*@-lmfTQH`_nN(_Aex=$ORI2QLrOFXdsvSY45^XCm z-*A_o<2#-XH25Wvm(F%jygX4vm1J}f>odKoD9N@!T z0mW_hE9I(RDaJZjum)z$uav0)gJq~+DOLRjYhF;Pum%m5At7$mLcG%9R~!W)gE|yt z2#)ihqM5K&{022QsJJj!xjkr5m7wCmx>Y$bRt|C&gcOG{pj2QD9a_*}FF>1|fWelB z>%bbhG^{tSuRseKthqSH{k#(SDxE=I;lOp^dYndFEAG)SM~GLuLQ17Aqzn^c4JaNf zu2aRm!q{qFKq;{Vl~N0GVOxT%CM~Eq3q!md8A`EcMVPAs`yLJV67><-cR5qsiIRhJ z4riL%QEVu~P`98|;u@>az8XcL%&kAFG1fTOHy&8xXejKGvoPDu{LU&J5W?hhTE~VsTr4M;|keS;ZL6t0-2KVYp{DZ0)u*udpY%1KUD7`lFap?3lyo%y#iL~)^L_7pEdaibJtTowIX4y+AI5sDk7*nxKnN-0ViN;!&# z?@a-&)q(a!*mvXlictzNmj~mRur=emWOihfGOUpW`-Nz)VrzA#m0E2Nuhse$qiK&) zXzu6O8jPlXrB2&rsMB`yk=h=H^FwO2UAzw45!#+1BXN#tyA-DFRupZIV$k}zLEDpB zIDdAjehm(O#_N#5z$5zNNllqQSJk`h?3id3F^4h4y(%7|i-)6#5TY;a&f121#4YUg zcs&iN1ykob#5_L2Ts&t(i~h_BOXe4g&cGw)gmX9*Nk)a@6$#F_5`&jm`7X8+OT5IY z;bJSXqD!nAFSZh2K`yasy4Xsr`Vy<=i>-!U&T8z%R=Jn6Y7tiRr%ar{2EL@VwzfiF zUmv`^mBG||Pe7I9Bly7KfaAw!2~#*Q?Fh`C;f2WZAoQ)C0Y^4ZgCkobaAZdYT8^Ya z9q$77^&artI0|a_`hm6O09#c6Y@ZF-2^Xld7-&fbrFSv7;&BFfs~DIzF|ecVdXz!a zEF(-$s<3o}9d12Z29x_3%-hCb>2V*d4cz_yuz9dbZhK>>`<%Y)hZ`Oub=1KaRzJBsou%DX7r z)-pJF4};?mF*x}I>f;&gYh&=_eEhB;#$YMxYZo!Ns{_YZGniD%U_~o~)sq?Q#PNAe z#Sm|+g!S`A!uDtb^j*^e+q)*g@msEi_x8tORFw-t4HYoss*w;~)B>xfGuX78!QLJQ z$L?e>w!9do)m6i?vGtIh?1x2lE{Hdkz?LaBaCpTSXbbsZ&eeWcI(GuBx_&ks+*FI~=cYzDabOa>|HcBy-loEqM;!3PX*awH75_KC#bgAF z*#r)o3Yy*gKl3*>Hp1O4dtr=k9|SjV1otL4y!ZfvSFU65=*W>!TU!gwwku)g)I-2F ztp{h;2}gJ6dw63pzB}dRa8u1T@Q%qq$89%5(FzS-daMSHE_K6JtkuQ!9~ayzV=Y;5 z3bI`Q>vlW@n;tw2cN}^F`ky-k&6&+GZsT5=&kojukK8=UDunXgV4j7fe~@#gyZR~t~N?F(j&up z#aKAz6=S2l_078K(=A(dZH=zA$V8oq-nC*K(j%Pc$V%mW8gYBmp%LtKXv8+tp%E`6 z9U5`4>ClKDVoWoXxd28Tuq8*3MrbYq-ds*qM1&LW(FymnWSiDk)jd*0}`Fz6wV<< zGnW+2JW@3CNzp7IMYE6;%{8QG7LlU4mK4omQZ!3Q(JUoJa~&y~Wu$19lcHHciY82o z=6X^z5mGcONzt^EqUj(-6D38{Ns1;$il&PcO`H_X4WwvRk)lbEqDhjXNs*#SlcLFx zqWKglnk*@rZc;Qoq-c6c(X1v#vxXGST2eIYNYSh(Me}J=G<~FKK0}J;Mp864k)ru5 zDVhzWXf~3f*+h!wbEIfKPm1PdQZ!#6MRN-&n$4tWZY4!?8!4LGNzrT}MRNx!nmb9+ z+(nA!Zc;Q`NzvRxie?)rnlF-~*-naP2PvAJq-gp{(d;5cvzrvn9#S;-lA^hf6wO{z zH20ID*++`z0a7#%lA`$%DVqJHXueE}<{?rv50j#KgcQwJNYOk>isq}NXbzB~IY^4; zF;X;-lcITo6wM)0G+!e{bC?v(5mGcqNzr_r6wQ;QXr3ZP^9@ooPm`i~h7`>=Nzpt@ zisl$8n&(K-94AHdJSmzNNYQ+Y6wL`zG~Xsg^CBsl?~tN7Ns8vXq-efJislq4n(vdM zd5ILw4@l9RCPni@QZ#2s(Y#EG<`q&jKO#l*Dk+*DlcITz6wT|TXnsP9<_%IbKP5%; zCMlYqk)nBv6wS{`(Y#HH<`<-B-XTTvOHwrNlA`$)DVq04(fpbe&2LE2{FW5W??}=7 zo)pa=NYVU}6wRMV(Y#NJ=Fg;P{z8i8ucT-`AVu>xQZyfuqWL>1nvY1){DTzDKS|O2 zixkbrq-g$4isnD0Xn+(AGcZ<&L^&woo^_dMp6GPMJ3D*3qq(BLCK``*^`IH^4HbGe z-5cxT*z?x=q*r$)+OF%((n09q%)rPH;Sx`0b+u8dkscY&E5^bxuNWKct#8&;iz~NltB`iE1Fs@2a@TI=%9IA8Z#z%E;Ns) zIz^0dd?2q>RvB@qp}E;JAhHaRR4fq{&dpv=vsXrmWTO$0)LZY>7u*r=UNxAs1!u$~ zB43!aHx>Wnqylra3~;#+@s$ZZgh=O;zjn*_TYPsXDc8j69-R!B_5^m?>5%dF|faEGkNSxx%+yn1DQKCf8oc;YcQ$ z?di=%b&!T;xssKMNJliBl0N4RoO>Z>4?u|UgAlUQ8BZi-C%QJ176J6#S{>I{ETsQzw<{SEhY zWux6)>4Yq)Pvp3AAjbu-s`QQF=}&dYbnWRxIxFB?y&m~TrtUg>)McO%1A#<62g@L$ zhF8YU1rak|4}OT;fdQ8ba_a@_h(#~sB!||-J9-8#C0V8A15t$IU}D*cW#i|qUku6A zau>TZk@k2>ZiIf<$*}s)dmE$)9_dUXvQF;2SnkGwL}GF}EGx>qwf#_BeR~E-;Wo4s%Fy2oN}a2TFPaJ%oV(6VF@Z znnNBeK=M&Qsg|zguj*=k{agQW*WZ5meE1_tlAnHf`5BgcKTVQfU%vd94hp{|^c{2q zeg6H+%fBN8exFQ|6e>A%=vJF> zhh8A(0C~Xo0e+y+PWw5Dr`9xSl(sr(7gKHhqqgBun`{ZNBYY)waVK@QhUZ$xjEU@| zxy?;oT(?qBtZD6D+EH%0I4AkN)-x~NZDG1mVOq^iyP$v&Fh)-+y1vs^kllfaJZN)+ z&&-)_?xk_$ii~(h_cw)UCeAb^Kw?GlplzIKH>Rc*roLA9ba)Tyz1FwZ)bk*<1+72Q z@uPO`UOIP_&K{+)2Wg8TdDM17;(Q}*P6PQ`+HAv!7uu#lx_HMF*^9`P#ywLxP=g(b z@3B{U3PDfthADZyo>j(FtRv{m2~+|+Qm}pBsYzL5|A4J#0fqu zTHN5rR8kL^jH{b)O;fIvPOCX`3TNTs7@DGI#IYaIUilLeI5?Xb6##2!1iiz)!p1`7 zLCy;Ym2%2TIp};C%Ngzkf*R; z=q0y$@#G0Jz09rj3om_IQj3@5GVWjKJ9 zsa{GFl=%DM`grqUj82@l=o4h(1361_lz=LS_#qZhCEtpYhRUU0Pvr`M@%aMebniLv zbmp=9!Or4%mdVqlr`s@`)0HP#z%MX~fL|Cu@r?)o3mLhFW_Hqt9GSB~{s6f6EN}5y zUl((E%hFGRpl^%0d5s_C&-l@Niyst+^yQw$|F#_VnEQLRi1guV4Q=FPz+a?mf%> zo%`-hNcdPZXR&8HV{F!hX|u6m@FrsmrY&tN6be2$D5Fq{P!=y)I_={j*uiHUXH0Qe z(!A7`O=XPs=JFG!&viP~v7UV7z z&F1Gt*t$`QZ2?|t5AYIuNO78yyv!cr7L4g}CY2hOU#WHml`6Ymsd5CAYDZA1MB56? zH{9jtIL~XG0bY)JnJZwh=LZe8{Gehlz?fQ)m*RR#(54t$w=2ktu&<%G(B6q-4wMRK zlG}04hJ7oJm!qy?--1%*@bfBcJ=m7vdhEu4!I~dXw89|w;CLbCz%}t|XFw@32ly~o zKyjP>O1bJ+im?tBtbtkcD`jfHU>WLHN>#tXnio_mtU-fiNQfJ?5U+Ij6-PnHpbkYD zg5!puqM5K&{022QsJJj!xjkr5m7wCmx>Y$bRt|C&gcOG{pj2QD9a_*}FF>1|fWelB z>%bbhG^{tSuRseKthqR6@bgOKt8@l=g#*`t>v0-!t++?S93fuq3MrMgkTOh&HK2H` zxK0)K3S+Bz0j0zeR7x$#g>4D4nzW$eEDZ5-WGKa&6=ALl?0YoaOVmeT-{nkkCrS>^ zIh<*3N3o#{L*0T>iEFGv`)U+b!`hibN*Ts4GWiV_hMYWLP#M;N2Y4RZ48@owXy-Bo z6-Ob~))M4-xS#pRRe<|p#C{>RCTw#tc0P(3=gQF6ilU&u4O=^k0rMB53_%%=<8BL%&kAFG1fTOHy&8xXejKGvoPDu{LU&J5W?hhTE~VsTr4M;|keS;ZL6t0-2KVYp{DZ0)u*udpY%1KUD7`lFap?3lyo%y#iL~)^L_7pEdaibJtTowIX4y+AI5sDk7*nxKnN-0ViN;!&# z?@a-&)q(a!*mvXlictzNmj~mRur=emWOihfGOUpW`-Nz)VrzA#m0E2Nuhse$qiK&) zXzu6O8jPlXrB2&rsMB`yk=mXiIL~UeUAzw45!xO$66ctMbY*sTyW{~Bl_Y=O_@Je)w}HMm}nI-hcU#xDjuPW$ABV2h`z8pYa8wnx3Jga z^)#dwOr7fx^Y{pJ@th4U`ZFginO`hA1CN*!&f!!f85N3GBskwn3|?a8yVy!B@e-?s zi><_pF0pF7*h+i_xx}jJVk@!gORSnNwi$Jz+6sMr zeem{H22<}n0acEV-~)#Pjvt>TOyR(^BQSf07b44p(6@R99N9b#j%d1>Q3g%3 zj4(Z^!qN?Pxb)_3o zM!^hR_u>5vPCd=wotGJ`kB@|%n;PN7fl2WG8w((Nn+jVValjL&-S8$<{NMZ*lMyUt z6F6)tXm<1e%-`792zR&ag)zQ;5Zt^G+?(9+;sXp`xsJi3BS%7QZ7nq0u7sIW4*}b> z9-LVx9NnSs;f=-k?v$6qO*PxVJ0=4ix7`dyD>QiNu^KqK)D2s)Ru|WQTyU$5wPe95 z$aVp&+wl-=dhjsZap(o;f9?!4XEwvQjeB9neaB$I<7Z&}`0?;IUSKQ_1wI7B83u1X zrLXTTe7`)B50!97ytA{nJ1VY| z@S12m*3~2IeBu%cXVbm0E^z^R>wVIzI}>f!^=9cH^l)ZiL|i%Hcsi@AjZ%&D$Z%dU z7LIwv*l2Hkv#$Dd%T`@mqiZcPQD>retyqWj2q!wSQaPVS+}?C(1UnrXvCVX7#0yD> zMjUK9G~yPbLnAI^IyCvDXbMQt7)jBHGehUxm`Kr>NzqtH(TE@9&^b3&QZzPFG`fUdnsQP!6{Ki9q-chb zqNyZBQ$>oVniNe9DVpJ=Xhx8t8A*z!mK04LDH`$5?CAWB;0jVSqe;=!lcE_zipEQd z#z%^#ffP+6DVioyG|i-F#*(6GAw|gt4YzUAw{#66wNwPH0w#xe3}$ZA1Rv8kfOPf6wOVfXg*7d zW&>WG>?*^`6?-z1EgpUlA?Kx z6wTwLXr3TNbBGkp*GSPECPj0E6wOgmG+!r0^CT&nr%2I!gA~ovq-dTYMe|KkG|!Tv zIYx@+IZ`yoNzpt{isl7UG~XgcbAlAjw@J~wNQ&k=q-ai(qWLZq0za~ZV8&WjCB}MZ)QZ&CO zMe_$zG=C&T^Cwa??~|hWGbx(CkfQl3DVh&R(fo}R&4;9D{!WVKBT_W~AVu>}QZ)Y} zMe{K!ntzj``41@?AVtGCV}(eRgA(ppmx<w2?v5PCQ>Ffv5A#M4<_ZIo)HM~3r?v2e^Q#zuSVn|0NvTej-j z8eMCVi8>R#YsEUGM>x@ul}dKb#OYNyDjo%8kVNK+rdG>=WV$0dXdaiwj0v6#&Eu&~ z5hENQ$SajqMjUErZuSg_EJGv}OGJfpv)9w?l~E$uXhbCS)_e5@cf`9_4JK{D8S#k7 z7bfjZ#XmWzz#J_DTrNa>WkL@j()lELHmz4#INm?tC^q-P+>xH7zN?XS;SL?TX>edw z0ope;dwkv|!7j&>@#uwyV&JkB5)(1K9<9wXYq~MqA?tBglYTz0URj^dE7m%BV6DP) zaINyK>`cePXKSU$x$O4H!PsEkFT2??a3Y%OmYqyCeS@@@h3ibO79pCN^YL>yl8I(} zdb3d-q@h`^WMv}K5e=uL&v^sqUdY)45F-2_gzR+26G_>LuFa%H0DZSs$MqGf)`2aERfV6gMbCbx8O5i*3- iq6l_QTNw+tU!X;#CNbqs3Ll>bKcsVeG?5SnzW)MPYJx@p diff --git a/assets/voxygen/voxel/npc/reddragon/female/wing_out_l.vox b/assets/voxygen/voxel/npc/reddragon/female/wing_out_l.vox index 17f998c2eb0f008cfda548afdb318a3100970d19..dcca02bfd521286b79b0f8417c75f4942566e4ab 100644 GIT binary patch literal 3580 zcmbuBYph&V70379XWldCoSE}}%zgCILLUf}Ld!hF@~BX1i=|Sb0s)1{wV697jUmw7 zK%j{cwTiVV^r00DK|`oO+6JQ$8$$>QAq0)l7($3K`q2-@_-*++m*@w+7~@I)S!=Jo z-h1smv-j3J=8q|*c3!uA7exKlR%*}oecL+af^P<_0Tpn^o%^=G)`a1km=$ue6Pl^t zHicbL$L)$f(d?MQnbo6s)*2>r)*zj?hS@4>q%1wu4L!E&W?T>SxE|_ZBLcA=HxoT< zWqQ=k(P`)+1fTuBOKoM~}jJ zJ?Qj_GowciaA)yf+Rf=$^(cUP$aGx~?V1@TtIQ}~g*}K?>0!K}hslB- zqzigfC5M`)$EJhdrWxA}^ykb-H}%kIn~~EpW2a*V@w^#X4!SU!YX zX5c!&HA7X=^wtd1Rc4?odXy4B0oj5XHxhar>9MNnLB3!O`w8bTXAKp7>SxxdAA=nE zYHOIUvc|1c5Bd@75P1Ogt#RK2J=R^QYYqAiavQz_+MtE332h+P)~H$fNLd?TfeP{} zsKM8veK2E<^La39jkA)@;UB(FZvA=ukxReK_abW$&X`Gq*=o9`sC0CZMAlL>*3+zR z72VWK^Vpi?RjWu@+ckZ{uIdxYGN+U=Cv)4HDx*&-txu#qYudstoimdxwI<=5p5%!& z$pULBoi&rRZzc&eZ&^idfu>csnVu?bP9^LqrH^M7tEjbgQL%MV2d1ivnEX=LDl+Wq z>~*@PNW0e5YU;v?%+yWHwC<93n;aeVY>j@g{h$*>8WYxq8;cWqn@|} z$g%0`A|(eq*Gp}5Iw1DV)QQcsM?bsd+a;eE9T!}Av+)4N8Xrw#UUderd97k@GR zH+A&Ob8g_5{CoKDd!~qpksy!IiODr8ePJ7cIAD#gOD^@6DcmNsoEze%oK@mk(~!C< z^xdP@gxpf>+_E3cn8P{LIJ*QNQRy3hbhhB(X$a@*F-$5QA3)t(_vBOsvc~Am>75dSFhUC!3 zu3E049yxZgYnQ$8c#Fx~!)J$ez`10z)}+cTw20rtzKQ>cy(F}zKI@!$_1Wu|ahauF zW|ms`YXTox9Gj&M{%riVJ#?t2SL!44iQS`*ZppJ3qSJvo&fO+YyX+b8%KY$=v){vCkC-m94t5Uxt}zqcvX}Vt(X0E!Eqh=3D084U0W)M1 zze9cwNPO-w?}<%6>&$Lg_5=GS_bx!@fef7*ci6+uFM&@F^h!!zJ&^S|BWBFTXGYCc za*ydlm3PLWCocIqWnb|Z;NQVd#9QXz!{WXN)E)AE_1JgFx5|7vrEla8bLFC6rM^bl zZ*&ss$UEfDo0f2oa^4lUtdaT8ctbky3HQ^*wu`^CysO-kI`_ZEEM>VhX}~wjw~1Pt z)ZPMV>92g3%J+&`Es*=XvD~K=c}lDdG}w<>H@I67cR3|yj?aYJ6W#=mdK2EDh*~q| zGb(#jzJ17ZdetVc3V8&aVa&|C=(Wn(q0WF=v)F4ABV?~dkGkmjystj?b!;2xHsCGp zP#r!cc8~s6xx;z+MkHn_<=g^f8S5_bQ)rER1NLfVA2^#Nr{{gW$jl8d+XmmJg38x%vBV$VI_F28fAy?0*bAKf79P7g$F ztBTs+67{Sn>WxUcJC(!}CH<$AT>7$-#(pLCAtgTR=tU)0?QF{}ldkN0+?Q{hpOG7v zmFzyMt*xVt&$%IWZ`fo>z|*Kjc;Be@m)$*KaTHXO2)4% zQJ*9J!G@@#j;L1y+16^w)<#2iHJh@nT9uf^;RX% zZd3BwZA#w%vXXtQAKt6vsr!*Xq~wNmO76Kv$wN0Pc?S9Jt1?;Kwjc+0ua#pDTq(=9 zZ;@jU-XIsg{(1S!^NX_KqDaP9&dH8Xt(6D%Zjt@BC^>YulG9&R^7?m_Y@W?z`});# z*XGOQz>NdhyFQY|t8zJf(;7K@&*idhyisob^g#A~_Bz>r?=CrW@-g}4ONZs{Upym! zcjKocZB`{Qj-=^8Py;WCwYl zeO}4iKUean-zYh_xK^Gyv`OB0=?3}RANRr{(gE&&ue@CnPQh dekC1z>G2hM>G5~PcT?G<7yq;OZ=H`(^)DXUPV)c& literal 58063 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 Z>G2hM>G5|ZjXSbQFaBrm-#QR%${Kq&wK literal 58063 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 From 73ac1c5600bf826c277526edaa7e54861d2f9c90 Mon Sep 17 00:00:00 2001 From: Snowram Date: Fri, 8 May 2020 22:51:27 +0200 Subject: [PATCH 10/19] Better animations --- .../voxel/npc/reddragon/female/jaw.vox | Bin 1456 -> 55939 bytes .../npc/reddragon/female/old/chest_front.vox | Bin 59039 -> 0 bytes .../npc/reddragon/female/old/chest_rear.vox | Bin 60563 -> 0 bytes .../npc/reddragon/female/old/foot_bl.vox | Bin 55891 -> 0 bytes .../npc/reddragon/female/old/foot_br.vox | Bin 55891 -> 0 bytes .../npc/reddragon/female/old/foot_fl.vox | Bin 55891 -> 0 bytes .../npc/reddragon/female/old/foot_fr.vox | Bin 55891 -> 0 bytes .../voxel/npc/reddragon/female/old/head.vox | Bin 57523 -> 0 bytes .../npc/reddragon/female/old/tail_front.vox | Bin 56267 -> 0 bytes .../npc/reddragon/female/old/tail_rear.vox | Bin 55875 -> 0 bytes .../npc/reddragon/female/old/wing_in_l.vox | Bin 57352 -> 0 bytes .../npc/reddragon/female/old/wing_in_r.vox | Bin 57352 -> 0 bytes .../npc/reddragon/female/old/wing_out_l.vox | Bin 58012 -> 0 bytes .../npc/reddragon/female/old/wing_out_r.vox | Bin 58012 -> 0 bytes .../voxygen/voxel/npc/reddragon/male/jaw.vox | Bin 1456 -> 55939 bytes .../npc/reddragon/male/old/chest_front.vox | Bin 59039 -> 0 bytes .../npc/reddragon/male/old/chest_rear.vox | Bin 60563 -> 0 bytes .../voxel/npc/reddragon/male/old/foot_bl.vox | Bin 55891 -> 0 bytes .../voxel/npc/reddragon/male/old/foot_br.vox | Bin 55891 -> 0 bytes .../voxel/npc/reddragon/male/old/foot_fl.vox | Bin 55891 -> 0 bytes .../voxel/npc/reddragon/male/old/foot_fr.vox | Bin 55891 -> 0 bytes .../voxel/npc/reddragon/male/old/head.vox | Bin 57523 -> 0 bytes .../npc/reddragon/male/old/tail_front.vox | Bin 56267 -> 0 bytes .../npc/reddragon/male/old/tail_rear.vox | Bin 55875 -> 0 bytes .../npc/reddragon/male/old/wing_in_l.vox | Bin 57352 -> 0 bytes .../npc/reddragon/male/old/wing_in_r.vox | Bin 57352 -> 0 bytes .../npc/reddragon/male/old/wing_out_l.vox | Bin 58012 -> 0 bytes .../npc/reddragon/male/old/wing_out_r.vox | Bin 58012 -> 0 bytes voxygen/src/anim/bird_medium/fly.rs | 5 --- voxygen/src/anim/dragon/fly.rs | 36 ++++++++++++++---- voxygen/src/anim/dragon/idle.rs | 29 +++++++++----- voxygen/src/anim/dragon/mod.rs | 28 +++++++------- voxygen/src/anim/dragon/run.rs | 33 ++++++++-------- 33 files changed, 77 insertions(+), 54 deletions(-) delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/chest_front.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/chest_rear.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/foot_br.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/foot_fr.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/head.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/tail_front.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/tail_rear.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/wing_in_l.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/wing_in_r.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/wing_out_l.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/female/old/wing_out_r.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/chest_front.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/chest_rear.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/foot_bl.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/foot_br.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/foot_fl.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/foot_fr.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/head.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/tail_front.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/tail_rear.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/wing_in_l.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/wing_in_r.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/wing_out_l.vox delete mode 100644 assets/voxygen/voxel/npc/reddragon/male/old/wing_out_r.vox diff --git a/assets/voxygen/voxel/npc/reddragon/female/jaw.vox b/assets/voxygen/voxel/npc/reddragon/female/jaw.vox index 80fc18bea790c46edc042690b7b534dee57a40ee..339c223c48c915e4ed3c3e40a587f963038707fa 100644 GIT binary patch literal 55939 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 delta 394 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 b-F{YYumWb-N$Jzw#Xq6*y86I?1a$uxz$}MF diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/chest_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/old/chest_rear.vox deleted file mode 100644 index e327503d6fec6cd1ccb30f09320ad6c60dc93814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60563 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 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/foot_br.vox b/assets/voxygen/voxel/npc/reddragon/female/old/foot_br.vox deleted file mode 100644 index 9ad04079fc5be4868066daddcf510c931079d8f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55891 zcmdtqd301)9S86`ZzgQ%!V&@rZJ35FVF_=NOcvI#q!9MKkOIRb^D=p4GBeIhR%0uq z#ZpR3DY7UOXhm8P3K%f8Doqg)MMR3VwjyG!b+>A*b^UpN_e}x`Ij4Vm&i94OeZTvD z_ulupcizi^a9FW$rE{kcV*a#}1+o%T-x6YJNonyN9LOUNj7d3f|E6e zqgAszS{*$^t6dgNh^S_hMV{Ma5!~KWw##CZ#gQOmSu|N}vdF<(?G72sV&h_$=d#$j z)?|JUTg=f@!~_?4uJx3qmpqq6>n&mqK2NZ4DtNzfdcEH*9gNwOnVxV~mMktz10Q>I!|zG7B}9OzdWGyR3Z9S~6?;G{H9{kAi{%YHDht8`}lV-gl0MC4EF6BqdQ>+k8%? zqa~+k!CalZYbH`t?OZywxr9z__tL3dVah)hqP|7Rl(NoA&WFZO=Keww#R(*;`j9x- zpTxOj>N{W1plU()Y!fv0xS(EDg6?b%-hX>3MYi;%tuH3giOVT;jfVc;{W&=~^mP7y8t*zt6E|<9l;#vV|D2$! z4+=VxkwKZ6ndI(2ndZ$tNus%t21W+b>0Q;A6G&)3IYmyaNgNuAEGKbm3-t9t$@Q`O^a6RF?w zh&mr(KB4LrBloDfP-{{(_v3@>!txEO9=qo<4Y)gna%^VDwf3AYwfq*kY~E|KGavls z;cubp-5F~L8@*)U@tGABHBp0KC!RXP^jF3>&&4kxPb5_1ujCh?p5;=#qG6-liruOM z$DVM!guq(Eu-CoDMcv>{L${=pp1 z-rNhNNrTc1h0-{oH1|Pi(xEiNpftmwG$WuiBcU{-pfnj!noKCoXebT;Gdr9=5sZb> zjDyl-L21TAX>=%!3rdp>rOAQPZ15lckP?}Xxno=mugHW2)P?|MRnzc|G50qvd zl*S9CDTC6KLuq_a8UspG0j2RnX)2*KCX{A9l%@(w6M)iGLurCgnh=yG45j%5lqLeD zi9%^&P?{PjO)ZqB4oXuGrD=fDG(u@U38iU*(tHX^^AMEgVJOX~p)?zyG#jBb%}|<0 zpfry{X*NM=J_DtB3`(;ZO7l3BW($<&2`J50D9w{lnx~*N+n_X0Lus}{X`X@7?10jI z7D}@dO0x?}vl~jY2TJofD9z`gG<%^m`=B(>LTUCxX%0YX4nk?3gVH{Bp)@Z;X}$)fc?C-Ibtug@pfulv(wu?Pyb7ghgVMYPr8x_w`4*Js9F*qUP@3~l zn(shqE&(p-nq{2WSi14{D?D9t-inqNX`-i6Zq3QF@Hl;+n^ zn%_Waeha1f9hBzxP?|qLY5oYM`4g1peJIVJp)`Mi()<-l^8u9RZ%~>Kp)`Mo(tHG^ z`3IEdpHP~AL23RCrTGt(=D$!Hg3<_^5O+vXf-Ig`L)hrWCqA>Hq9$te6~r`D|if#8J|}LRf)1G+wFG7i&_S6&>t|kvs-t%bv24NVt9E{JxjN4*k?woIwsAR zSNPzOJ5O2@G(Ub)W{y(>bT@=q7O;lk>0C-430bSm9S_7i^5%A)+Z(I4cGcV9@mc8H zj)tl}GC$Ytbm_TlSMAlN(K(SDx?Lf@;J4PJz^!Ht<#>E*J=!DH&!t-{>vHLQuQTKK z$~`;oRedTeLVi#CT3O?CyFIGW-?8r9ZnhdYU<9M;BpeB?SNUq;Dnhk9M6SEH{N3XX z8{tdK z)l=rbIS60To$`z4o)GWSX>M!5e14;wPO7QS^u^*YCACUx;-hfKj)~QYKVsf;|J_5&x!ec@IKlNlRhbuy diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/foot_fl.vox b/assets/voxygen/voxel/npc/reddragon/female/old/foot_fl.vox deleted file mode 100644 index acd39fbf047a0d592f891b2ec25766e2970585d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55891 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 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/foot_fr.vox b/assets/voxygen/voxel/npc/reddragon/female/old/foot_fr.vox deleted file mode 100644 index 0ea802d8497e2d76669fdba2543ca76048234f43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55891 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�Lr26j?FDTV&N^f6NR0Bwfci=FTFLB6JGHbT=n7$|J{GGjOK(FWo600PI2NgmMRb-#A(`MsBXtqK;P!N} ztAEiZ%8lxUM{N13psz6Iq;5hARq35YbScT{Zmb> ziMRXEjr{{%LHIYuYNL@xX4m80>EwZqJaE_@;)#^MAI&knYOW#PuJ>b~rQ@Oze`ll7 z2-iBJTq{TR*Q%e&j$A6fZ?F73hdmxWnCjp6!ydLyoJnSjx|1*DF4q2f<2rIHIYncv z0>8%-`DCG|w~+Kf>SMZ+6`4ePGM?2j`we{jKrSppaQc1--RVeYx^*YHI-lbN{%NgD z`xWb{L|d}>@l-0&%?DFoSI^sX{^2s~lUb3;<+?RNcY3vdl>U(w+Y%Z7;n(kHf?rVo z+2Hey_jDGL#m-ztZ)ud*IJLaS0gtMVP2ug&w(I5Ea+zF#;hQ71`aivN=e}26CmLN& z#QWL54V*Q;BK2_+o{7}r7q5LvIplz~{S9kRB@Yv%hgPNAd&-xR-lYr6SvatNVckg; z()-oVLwad_ip6}QEuGZ|;oo&St$*^7dhLQ&I-g0b(I?O4t}iddll=?%$&x)iNVea$ p=_BngLZ{GH5?~)&D^l^c1FVF$G^RdDj)~Udmkw@AW-{y${U6CTPIv$S diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/tail_front.vox b/assets/voxygen/voxel/npc/reddragon/female/old/tail_front.vox deleted file mode 100644 index 1d7d6f1cce51d25d1e1d1f54c6412740d4f54113..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56267 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 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/old/tail_rear.vox deleted file mode 100644 index 7bed628bdf2a812af6ebc595a611fda017c16656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55875 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 bD{T?^b)=d4B&Cnr#lLjtQZp2i2JVjlowES! diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/female/old/wing_in_l.vox deleted file mode 100644 index 5d3e33a6646d7d2552429e7510ab69b27fdf2b77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57352 zcmds{+@Y5fIvU~*FT=cFVD=pGtbO-=6&A~ z;)fNBS4Ouhr54Vdy9hzO|E5yQ=dPM<;|e|{U;>DMl^3s?t13{y=OABjmMm5dMlDu$ zL_1=@l2=YJHds{SfQ!o^l)-o=TvVfji`6JF5{v**Pz!26HK+oWAOgZ51cD#{{J;mi zzysXC1)RVE?7#-Bzyi#`1S&u|CfC5%?UX4K<9l+WcKi0?iutvs1aK}+#2}&rF@$JGv|+pr z(a!scSP3kk3V3j>8qtebgZ@^WM=fGG+M?W!Gxh)=ChUh?U2ktRH&w=Pen+-7n zte_HD(6A03V(kH=-ZW zg%|)%5Cjeo0(KAvF6?&%(TUuZh!$W5CQt#qc>X-VhiA|Y{J;eQzzKrD0YbnI!oUV1 zzzQtD3{1d>=hqATzykunjpsUu=t2x3IzbpXfF0O?66n+5sJz{C;HmI+jV5Z>M1vc=sOEL&8izY-q%jlU$)z=zBH={|qi z5|>fbUrV{j*M@=Pb8wwM!vUw@@?ehTbC&qH0Uy53pQG2fykO?V%lPZ_(GOoM1Bvcr zSBfh!&Ukz;Zak@1d}uFT(@DMRhxXzXoz$ygXs^;!^=cg2i&uS8uBM^A%1_m6%Ftf? z2bGg@HFK|J=btlE@q+MaX=$OpzCLNO2dZgSpQ5GP6s_K?X#L9=yEH;I znUOTQZz4_EH-jn*J{oyTgeKl!OY!H&QSeelqclrEJcjxVMZ0G!dSaQPBWXpeP+zw~ z(Uvx}uTgaF1Vxv(C|XcjN_U`rX=8*kvq#c~rQ>OPs-F5TY^LoU=hC4YE~0nu&(Ne% z0h(T4OY_ejPpK8n)HzSlrppxVDk?g7tD-425t=)3G+jESjtaA;(u#=z$~0EeE$5G+ zeV3n3v!};t@p)5e)smUidBq~ykXuDtuIr?Id#n}{CBQH&&J2B_J`xU+Tl%ls^QM4g5p6=MxK+ipV zF1`20aw^>9qFWyH(PJ-%=?K;SPyaQu)c?i5p`n3pYu-ht$9L1T&DT(PQ<$E=SJA7N zD0*o8c$zR_0yTNgqy=*xC$(t<`3rtJu){dRt0K5}YHH}}G21A1dY;;Dx}HLp2kE6p z#?XOPVcLql8oK{yP1~w-UA+87Ds&L7-?4`_-M5eWAAgp1K7E*)@|)?bYj)B6yARUx zM-S7C88hfDys?xC&<8a9u%b7gG}ec2B|h>x9zmKEIfvhObXG}T$A#lEI!-Q`M(zs> zx;!RxvyLmq?$mMWus$7m9Dg`YZQZEjX**vguQN;yC7Ho%NBazk_`c_Y1| z-}mTuXK{T#WkMyvUz}e;i9)V7-N7%wSY2F?>dB{Cje3(F z!1Y9apoL#KiA=6wR2y_PS=8xb+?GhkxNUN*uF0szjh-z=ZLLvj))Td7d)M(g^oT^Z zt)MH%+wj|4jt#rZvEgHuW5YM392*n+3??1%6V@5qHF@9Y=WX}LZWQKqHOplEOOpym7;9; zCvkGlrdpIujVPO1Q8rOgHX}sYj1*-vN|eoLQ8r^l*^CusGftGvcu_X||3%CBQ|Clc zHj_lzoF>Xin3WD%H|?bHY-Kh zTrA3Fl_;A_MA=*_%H}drHkXUCNr5@mC(D4Xj<*<3Hm=2N0`$XC77iDuml+Bk# z**qc2=1EaDUlC>Vlqj38in95dD4VZ~vN9>DcPexRk4hh%aE zquQXW$)Zjd2Bv7iOj&fy3%PyQ+-oYbO5~#$?kME#eJZY>hW-PcZ)6+RPX)~_yhcllzX>WJtqbFs}$vVNQQe;+VjTAgxT$>ki z#xC=~djYMaRR%erKsYJIPb6mr*8*+(5HV4T*PjIm;UDcPFpId&W-t2x=u81AQA89;5Km9#On01Bzz?n#V?-wjDaC1%x!E~TRL@$ zLAq&ermZ;eQqsG0*+3Q^I5@E`qzjqj*3V6PYJG}5`DAORTOWk+uG49alaJNwE_kH# z+2neC^1R$@1}5T*gA*CaQpF;Y9k*@zNCy|8Q|MX>V#jK$(}~s-YDrzwn))PpOgxHT NdT?tho8=Di{{nsU;!gko diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/wing_in_r.vox b/assets/voxygen/voxel/npc/reddragon/female/old/wing_in_r.vox deleted file mode 100644 index 83cce30c40f3e702ca55f21bdc4bd3e0f4a4119d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57352 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 diff --git a/assets/voxygen/voxel/npc/reddragon/female/old/wing_out_l.vox b/assets/voxygen/voxel/npc/reddragon/female/old/wing_out_l.vox deleted file mode 100644 index f3c30fbbb5020295b1aac5dac30aef7a28993f5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58012 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 delta 394 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 b-F{YYumWb-N$Jzw#Xq6*y86I?1a$uxz$}MF diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/chest_rear.vox b/assets/voxygen/voxel/npc/reddragon/male/old/chest_rear.vox deleted file mode 100644 index e327503d6fec6cd1ccb30f09320ad6c60dc93814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60563 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 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/foot_br.vox b/assets/voxygen/voxel/npc/reddragon/male/old/foot_br.vox deleted file mode 100644 index 9ad04079fc5be4868066daddcf510c931079d8f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55891 zcmdtqd301)9S86`ZzgQ%!V&@rZJ35FVF_=NOcvI#q!9MKkOIRb^D=p4GBeIhR%0uq z#ZpR3DY7UOXhm8P3K%f8Doqg)MMR3VwjyG!b+>A*b^UpN_e}x`Ij4Vm&i94OeZTvD z_ulupcizi^a9FW$rE{kcV*a#}1+o%T-x6YJNonyN9LOUNj7d3f|E6e zqgAszS{*$^t6dgNh^S_hMV{Ma5!~KWw##CZ#gQOmSu|N}vdF<(?G72sV&h_$=d#$j z)?|JUTg=f@!~_?4uJx3qmpqq6>n&mqK2NZ4DtNzfdcEH*9gNwOnVxV~mMktz10Q>I!|zG7B}9OzdWGyR3Z9S~6?;G{H9{kAi{%YHDht8`}lV-gl0MC4EF6BqdQ>+k8%? zqa~+k!CalZYbH`t?OZywxr9z__tL3dVah)hqP|7Rl(NoA&WFZO=Keww#R(*;`j9x- zpTxOj>N{W1plU()Y!fv0xS(EDg6?b%-hX>3MYi;%tuH3giOVT;jfVc;{W&=~^mP7y8t*zt6E|<9l;#vV|D2$! z4+=VxkwKZ6ndI(2ndZ$tNus%t21W+b>0Q;A6G&)3IYmyaNgNuAEGKbm3-t9t$@Q`O^a6RF?w zh&mr(KB4LrBloDfP-{{(_v3@>!txEO9=qo<4Y)gna%^VDwf3AYwfq*kY~E|KGavls z;cubp-5F~L8@*)U@tGABHBp0KC!RXP^jF3>&&4kxPb5_1ujCh?p5;=#qG6-liruOM z$DVM!guq(Eu-CoDMcv>{L${=pp1 z-rNhNNrTc1h0-{oH1|Pi(xEiNpftmwG$WuiBcU{-pfnj!noKCoXebT;Gdr9=5sZb> zjDyl-L21TAX>=%!3rdp>rOAQPZ15lckP?}Xxno=mugHW2)P?|MRnzc|G50qvd zl*S9CDTC6KLuq_a8UspG0j2RnX)2*KCX{A9l%@(w6M)iGLurCgnh=yG45j%5lqLeD zi9%^&P?{PjO)ZqB4oXuGrD=fDG(u@U38iU*(tHX^^AMEgVJOX~p)?zyG#jBb%}|<0 zpfry{X*NM=J_DtB3`(;ZO7l3BW($<&2`J50D9w{lnx~*N+n_X0Lus}{X`X@7?10jI z7D}@dO0x?}vl~jY2TJofD9z`gG<%^m`=B(>LTUCxX%0YX4nk?3gVH{Bp)@Z;X}$)fc?C-Ibtug@pfulv(wu?Pyb7ghgVMYPr8x_w`4*Js9F*qUP@3~l zn(shqE&(p-nq{2WSi14{D?D9t-inqNX`-i6Zq3QF@Hl;+n^ zn%_Waeha1f9hBzxP?|qLY5oYM`4g1peJIVJp)`Mi()<-l^8u9RZ%~>Kp)`Mo(tHG^ z`3IEdpHP~AL23RCrTGt(=D$!Hg3<_^5O+vXf-Ig`L)hrWCqA>Hq9$te6~r`D|if#8J|}LRf)1G+wFG7i&_S6&>t|kvs-t%bv24NVt9E{JxjN4*k?woIwsAR zSNPzOJ5O2@G(Ub)W{y(>bT@=q7O;lk>0C-430bSm9S_7i^5%A)+Z(I4cGcV9@mc8H zj)tl}GC$Ytbm_TlSMAlN(K(SDx?Lf@;J4PJz^!Ht<#>E*J=!DH&!t-{>vHLQuQTKK z$~`;oRedTeLVi#CT3O?CyFIGW-?8r9ZnhdYU<9M;BpeB?SNUq;Dnhk9M6SEH{N3XX z8{tdK z)l=rbIS60To$`z4o)GWSX>M!5e14;wPO7QS^u^*YCACUx;-hfKj)~QYKVsf;|J_5&x!ec@IKlNlRhbuy diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/foot_fl.vox b/assets/voxygen/voxel/npc/reddragon/male/old/foot_fl.vox deleted file mode 100644 index acd39fbf047a0d592f891b2ec25766e2970585d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55891 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 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/foot_fr.vox b/assets/voxygen/voxel/npc/reddragon/male/old/foot_fr.vox deleted file mode 100644 index 0ea802d8497e2d76669fdba2543ca76048234f43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55891 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�Lr26j?FDTV&N^f6NR0Bwfci=FTFLB6JGHbT=n7$|J{GGjOK(FWo600PI2NgmMRb-#A(`MsBXtqK;P!N} ztAEiZ%8lxUM{N13psz6Iq;5hARq35YbScT{Zmb> ziMRXEjr{{%LHIYuYNL@xX4m80>EwZqJaE_@;)#^MAI&knYOW#PuJ>b~rQ@Oze`ll7 z2-iBJTq{TR*Q%e&j$A6fZ?F73hdmxWnCjp6!ydLyoJnSjx|1*DF4q2f<2rIHIYncv z0>8%-`DCG|w~+Kf>SMZ+6`4ePGM?2j`we{jKrSppaQc1--RVeYx^*YHI-lbN{%NgD z`xWb{L|d}>@l-0&%?DFoSI^sX{^2s~lUb3;<+?RNcY3vdl>U(w+Y%Z7;n(kHf?rVo z+2Hey_jDGL#m-ztZ)ud*IJLaS0gtMVP2ug&w(I5Ea+zF#;hQ71`aivN=e}26CmLN& z#QWL54V*Q;BK2_+o{7}r7q5LvIplz~{S9kRB@Yv%hgPNAd&-xR-lYr6SvatNVckg; z()-oVLwad_ip6}QEuGZ|;oo&St$*^7dhLQ&I-g0b(I?O4t}iddll=?%$&x)iNVea$ p=_BngLZ{GH5?~)&D^l^c1FVF$G^RdDj)~Udmkw@AW-{y${U6CTPIv$S diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/tail_front.vox b/assets/voxygen/voxel/npc/reddragon/male/old/tail_front.vox deleted file mode 100644 index 1d7d6f1cce51d25d1e1d1f54c6412740d4f54113..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56267 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 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/male/old/tail_rear.vox deleted file mode 100644 index 7bed628bdf2a812af6ebc595a611fda017c16656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55875 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 bD{T?^b)=d4B&Cnr#lLjtQZp2i2JVjlowES! diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/wing_in_l.vox b/assets/voxygen/voxel/npc/reddragon/male/old/wing_in_l.vox deleted file mode 100644 index 5d3e33a6646d7d2552429e7510ab69b27fdf2b77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57352 zcmds{+@Y5fIvU~*FT=cFVD=pGtbO-=6&A~ z;)fNBS4Ouhr54Vdy9hzO|E5yQ=dPM<;|e|{U;>DMl^3s?t13{y=OABjmMm5dMlDu$ zL_1=@l2=YJHds{SfQ!o^l)-o=TvVfji`6JF5{v**Pz!26HK+oWAOgZ51cD#{{J;mi zzysXC1)RVE?7#-Bzyi#`1S&u|CfC5%?UX4K<9l+WcKi0?iutvs1aK}+#2}&rF@$JGv|+pr z(a!scSP3kk3V3j>8qtebgZ@^WM=fGG+M?W!Gxh)=ChUh?U2ktRH&w=Pen+-7n zte_HD(6A03V(kH=-ZW zg%|)%5Cjeo0(KAvF6?&%(TUuZh!$W5CQt#qc>X-VhiA|Y{J;eQzzKrD0YbnI!oUV1 zzzQtD3{1d>=hqATzykunjpsUu=t2x3IzbpXfF0O?66n+5sJz{C;HmI+jV5Z>M1vc=sOEL&8izY-q%jlU$)z=zBH={|qi z5|>fbUrV{j*M@=Pb8wwM!vUw@@?ehTbC&qH0Uy53pQG2fykO?V%lPZ_(GOoM1Bvcr zSBfh!&Ukz;Zak@1d}uFT(@DMRhxXzXoz$ygXs^;!^=cg2i&uS8uBM^A%1_m6%Ftf? z2bGg@HFK|J=btlE@q+MaX=$OpzCLNO2dZgSpQ5GP6s_K?X#L9=yEH;I znUOTQZz4_EH-jn*J{oyTgeKl!OY!H&QSeelqclrEJcjxVMZ0G!dSaQPBWXpeP+zw~ z(Uvx}uTgaF1Vxv(C|XcjN_U`rX=8*kvq#c~rQ>OPs-F5TY^LoU=hC4YE~0nu&(Ne% z0h(T4OY_ejPpK8n)HzSlrppxVDk?g7tD-425t=)3G+jESjtaA;(u#=z$~0EeE$5G+ zeV3n3v!};t@p)5e)smUidBq~ykXuDtuIr?Id#n}{CBQH&&J2B_J`xU+Tl%ls^QM4g5p6=MxK+ipV zF1`20aw^>9qFWyH(PJ-%=?K;SPyaQu)c?i5p`n3pYu-ht$9L1T&DT(PQ<$E=SJA7N zD0*o8c$zR_0yTNgqy=*xC$(t<`3rtJu){dRt0K5}YHH}}G21A1dY;;Dx}HLp2kE6p z#?XOPVcLql8oK{yP1~w-UA+87Ds&L7-?4`_-M5eWAAgp1K7E*)@|)?bYj)B6yARUx zM-S7C88hfDys?xC&<8a9u%b7gG}ec2B|h>x9zmKEIfvhObXG}T$A#lEI!-Q`M(zs> zx;!RxvyLmq?$mMWus$7m9Dg`YZQZEjX**vguQN;yC7Ho%NBazk_`c_Y1| z-}mTuXK{T#WkMyvUz}e;i9)V7-N7%wSY2F?>dB{Cje3(F z!1Y9apoL#KiA=6wR2y_PS=8xb+?GhkxNUN*uF0szjh-z=ZLLvj))Td7d)M(g^oT^Z zt)MH%+wj|4jt#rZvEgHuW5YM392*n+3??1%6V@5qHF@9Y=WX}LZWQKqHOplEOOpym7;9; zCvkGlrdpIujVPO1Q8rOgHX}sYj1*-vN|eoLQ8r^l*^CusGftGvcu_X||3%CBQ|Clc zHj_lzoF>Xin3WD%H|?bHY-Kh zTrA3Fl_;A_MA=*_%H}drHkXUCNr5@mC(D4Xj<*<3Hm=2N0`$XC77iDuml+Bk# z**qc2=1EaDUlC>Vlqj38in95dD4VZ~vN9>DcPexRk4hh%aE zquQXW$)Zjd2Bv7iOj&fy3%PyQ+-oYbO5~#$?kME#eJZY>hW-PcZ)6+RPX)~_yhcllzX>WJtqbFs}$vVNQQe;+VjTAgxT$>ki z#xC=~djYMaRR%erKsYJIPb6mr*8*+(5HV4T*PjIm;UDcPFpId&W-t2x=u81AQA89;5Km9#On01Bzz?n#V?-wjDaC1%x!E~TRL@$ zLAq&ermZ;eQqsG0*+3Q^I5@E`qzjqj*3V6PYJG}5`DAORTOWk+uG49alaJNwE_kH# z+2neC^1R$@1}5T*gA*CaQpF;Y9k*@zNCy|8Q|MX>V#jK$(}~s-YDrzwn))PpOgxHT NdT?tho8=Di{{nsU;!gko diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/wing_in_r.vox b/assets/voxygen/voxel/npc/reddragon/male/old/wing_in_r.vox deleted file mode 100644 index 83cce30c40f3e702ca55f21bdc4bd3e0f4a4119d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57352 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 diff --git a/assets/voxygen/voxel/npc/reddragon/male/old/wing_out_l.vox b/assets/voxygen/voxel/npc/reddragon/male/old/wing_out_l.vox deleted file mode 100644 index f3c30fbbb5020295b1aac5dac30aef7a28993f5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58012 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 Zuak2$ot?C8I@ Self::Skeleton { let mut next = (*skeleton).clone(); - let wave_ultra_slow = (anim_time as f32 * 1.0 + PI).sin(); - let wave_ultra_slow_cos = (anim_time as f32 * 3.0 + PI).cos(); - let wave_slow = (anim_time as f32 * 4.5).sin(); - let wave_slow_cos = (anim_time as f32 * 4.5).cos(); - let lab = 12.0; //14.0 let footl = (anim_time as f32 * lab as f32 + PI).sin(); diff --git a/voxygen/src/anim/dragon/fly.rs b/voxygen/src/anim/dragon/fly.rs index e830d836f0..451f0033be 100644 --- a/voxygen/src/anim/dragon/fly.rs +++ b/voxygen/src/anim/dragon/fly.rs @@ -4,6 +4,15 @@ use vek::*; pub struct FlyAnimation; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.1)] +const TEST_1: f32 = 0.0; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.1)] +const TEST_2: f32 = 0.0; +#[const_tweaker::tweak(min = -1.0, max = 1.0, step = 0.01)] +const TEST_3: f32 = 0.0; +#[const_tweaker::tweak(min = -1.0, max = 1.0, step = 0.01)] +const TEST_4: f32 = 0.0; + impl Animation for FlyAnimation { type Dependency = (f32, f64); type Skeleton = DragonSkeleton; @@ -24,6 +33,9 @@ impl Animation for FlyAnimation { let wave_slow = (anim_time as f32 * 4.5).sin(); let wave_slow_cos = (anim_time as f32 * 4.5).cos(); + let wingl = (anim_time as f32 * 2.0 + PI).sin(); + let wingr = (anim_time as f32 * 2.0).sin(); + let vertlf = (anim_time as f32 * lab as f32 + PI * 1.8).sin().max(0.15); let vertrfoffset = (anim_time as f32 * lab as f32 + PI * 0.80).sin().max(0.15); let vertlboffset = (anim_time as f32 * lab as f32).sin().max(0.15); @@ -61,14 +73,22 @@ impl Animation for FlyAnimation { let wave_slow = (anim_time as f32 * 3.5 + PI).sin(); let wave_stop = (anim_time as f32 * 5.0).min(PI / 2.0).sin(); - next.head_upper.offset = Vec3::new(0.0, 7.5, 15.0 + wave_stop * 4.8) * 1.05; + next.head_upper.offset = Vec3::new( + 0.0, + skeleton_attr.head_upper.0, + skeleton_attr.head_upper.1 + wave_ultra_slow * 0.20, + ) * 1.05; next.head_upper.ori = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(wave_slow * -0.25); + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(wave_ultra_slow * -0.10); next.head_upper.scale = Vec3::one() * 1.05; - next.head_lower.offset = Vec3::new(0.0, 7.5, 15.0 + wave_stop * 4.8) * 1.05; + next.head_lower.offset = Vec3::new( + 0.0, + skeleton_attr.head_lower.0, + skeleton_attr.head_lower.1 + wave_ultra_slow * 0.20, + ) * 1.05; next.head_lower.ori = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(wave_slow * -0.25); + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(wave_ultra_slow * -0.10); next.head_lower.scale = Vec3::one() * 1.05; next.jaw.offset = Vec3::new( @@ -148,7 +168,7 @@ impl Animation for FlyAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_l.ori = Quaternion::rotation_y((0.57 + footl * 1.2).max(0.0)); + next.wing_in_l.ori = Quaternion::rotation_y((0.15 + wingl * 0.6).max(0.2)); next.wing_in_l.scale = Vec3::one() * 1.05; next.wing_in_r.offset = Vec3::new( @@ -156,7 +176,7 @@ impl Animation for FlyAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_r.ori = Quaternion::rotation_y((-0.57 + footr * 1.2).min(0.0)); + next.wing_in_r.ori = Quaternion::rotation_y((-0.15 + wingr * 0.6).min(0.2)); next.wing_in_r.scale = Vec3::one() * 1.05; next.wing_out_l.offset = Vec3::new( @@ -164,7 +184,7 @@ impl Animation for FlyAnimation { skeleton_attr.wing_out.1, skeleton_attr.wing_out.2, ); - next.wing_out_l.ori = Quaternion::rotation_y((0.57 + footl * 1.2).max(0.0)); + next.wing_out_l.ori = Quaternion::rotation_y((0.35 + wingl * 0.6).max(0.0)); next.wing_out_l.scale = Vec3::one() * 1.05; next.wing_out_r.offset = Vec3::new( @@ -172,7 +192,7 @@ impl Animation for FlyAnimation { skeleton_attr.wing_out.1, skeleton_attr.wing_out.2, ); - next.wing_out_r.ori = Quaternion::rotation_y((-0.57 + footr * 1.2).min(0.0)); + next.wing_out_r.ori = Quaternion::rotation_y((-0.35 + wingr * 0.6).min(0.0)); next.wing_out_r.scale = Vec3::one() * 1.05; next diff --git a/voxygen/src/anim/dragon/idle.rs b/voxygen/src/anim/dragon/idle.rs index ecc2f29404..76089250cd 100644 --- a/voxygen/src/anim/dragon/idle.rs +++ b/voxygen/src/anim/dragon/idle.rs @@ -4,6 +4,15 @@ use vek::*; pub struct IdleAnimation; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.1)] +const TEST_R: f32 = 2.5; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.1)] +const TEST_L: f32 = -2.5; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.1)] +const OFF1: f32 = -1.4; +#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.1)] +const OFF2: f32 = -1.4; + impl Animation for IdleAnimation { type Dependency = f64; type Skeleton = DragonSkeleton; @@ -38,7 +47,7 @@ impl Animation for IdleAnimation { next.head_upper.offset = Vec3::new( 0.0, skeleton_attr.head_upper.0, - skeleton_attr.head_upper.1 + wave_ultra_slow * 0.4, + skeleton_attr.head_upper.1 + wave_ultra_slow * 0.20, ) * 1.05; next.head_upper.ori = Quaternion::rotation_z(0.8 * look.x) * Quaternion::rotation_x(0.8 * look.y); @@ -48,16 +57,16 @@ impl Animation for IdleAnimation { 0.0, skeleton_attr.head_lower.0, skeleton_attr.head_lower.1 + wave_ultra_slow * 0.20, - ); + ) * 1.05; next.head_lower.ori = - Quaternion::rotation_z(-0.4 * look.x) * Quaternion::rotation_x(-0.4 * look.y); + Quaternion::rotation_z(0.8 * look.x) * Quaternion::rotation_x(0.8 * look.y); next.head_lower.scale = Vec3::one() * 1.05; next.jaw.offset = Vec3::new( 0.0, skeleton_attr.jaw.0 - wave_ultra_slow_cos * 0.12, skeleton_attr.jaw.1 + wave_slow * 0.2, - ); + ) * 1.05; next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.05); next.jaw.scale = Vec3::one() * 0.98; @@ -90,7 +99,7 @@ impl Animation for IdleAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_l.ori = Quaternion::rotation_y(wave_ultra_slow * -0.5); + next.wing_in_l.ori = Quaternion::rotation_y(1.3); next.wing_in_l.scale = Vec3::one() * 1.05; next.wing_in_r.offset = Vec3::new( @@ -98,23 +107,23 @@ impl Animation for IdleAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_r.ori = Quaternion::rotation_y(wave_ultra_slow * 0.5); + next.wing_in_r.ori = Quaternion::rotation_y(-1.3); next.wing_in_r.scale = Vec3::one() * 1.05; next.wing_out_l.offset = Vec3::new( -skeleton_attr.wing_out.0, skeleton_attr.wing_out.1, - skeleton_attr.wing_out.2, + skeleton_attr.wing_out.2 + *OFF1, ); - next.wing_out_l.ori = Quaternion::rotation_y(wave_ultra_slow * -0.5); + next.wing_out_l.ori = Quaternion::rotation_y(*TEST_L); next.wing_out_l.scale = Vec3::one() * 1.05; next.wing_out_r.offset = Vec3::new( skeleton_attr.wing_out.0, skeleton_attr.wing_out.1, - skeleton_attr.wing_out.2, + skeleton_attr.wing_out.2 + *OFF2, ); - next.wing_out_r.ori = Quaternion::rotation_y(wave_ultra_slow * 0.5); + next.wing_out_r.ori = Quaternion::rotation_y(*TEST_R); next.wing_out_r.scale = Vec3::one() * 1.05; next.foot_fl.offset = Vec3::new( diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index 393b85c9b2..28a84c377f 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -15,7 +15,7 @@ const HEAD_UPPER_X: f32 = 2.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const HEAD_UPPER_Z: f32 = 4.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const HEAD_LOWER_X: f32 = 8.0; +const HEAD_LOWER_X: f32 = 7.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const HEAD_LOWER_Z: f32 = 3.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] @@ -27,7 +27,7 @@ const CHEST_F_X: f32 = 0.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const CHEST_F_Z: f32 = 14.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const CHEST_R_X: f32 = -13.0; +const CHEST_R_X: f32 = -12.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const CHEST_R_Z: f32 = 0.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] @@ -35,9 +35,9 @@ const TAIL_F_X: f32 = -12.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const TAIL_F_Z: f32 = 1.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_R_X: f32 = -30.0; +const TAIL_R_X: f32 = -14.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_R_Z: f32 = 14.0; +const TAIL_R_Z: f32 = 0.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const WING_IN_X: f32 = 2.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] @@ -51,13 +51,13 @@ const WING_OUT_Y: f32 = 0.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const WING_OUT_Z: f32 = 4.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const FEET_F_X: f32 = 4.0; +const FEET_F_X: f32 = 6.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const FEET_F_Y: f32 = 0.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const FEET_F_Z: f32 = 1.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const FEET_B_X: f32 = 4.0; +const FEET_B_X: f32 = 6.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const FEET_B_Y: f32 = -15.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] @@ -128,17 +128,17 @@ impl Skeleton for DragonSkeleton { ) ======= [ - FigureBoneData::new(chest_front_mat * head_lower_mat*head_upper_mat), + FigureBoneData::new(chest_front_mat * head_lower_mat * head_upper_mat), FigureBoneData::new(chest_front_mat * head_lower_mat), - FigureBoneData::new(chest_front_mat * head_lower_mat*head_upper_mat * self.jaw.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * head_lower_mat * head_upper_mat * self.jaw.compute_base_matrix()), FigureBoneData::new(chest_front_mat), FigureBoneData::new(chest_front_mat * self.chest_rear.compute_base_matrix() ), - FigureBoneData::new(chest_front_mat*chest_rear_mat * tail_front_mat), - FigureBoneData::new(self.tail_rear.compute_base_matrix() * tail_front_mat), + FigureBoneData::new(chest_front_mat * chest_rear_mat * tail_front_mat), + FigureBoneData::new(chest_front_mat * chest_rear_mat * tail_front_mat * self.tail_rear.compute_base_matrix()), FigureBoneData::new(chest_front_mat * self.wing_in_l.compute_base_matrix()), FigureBoneData::new(chest_front_mat * self.wing_in_r.compute_base_matrix()), - FigureBoneData::new(chest_front_mat*wing_in_l_mat*self.wing_out_l.compute_base_matrix()), - FigureBoneData::new(chest_front_mat*wing_in_r_mat*self.wing_out_r.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * wing_in_l_mat * self.wing_out_l.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * wing_in_r_mat * self.wing_out_r.compute_base_matrix()), FigureBoneData::new(self.foot_fl.compute_base_matrix()), FigureBoneData::new(self.foot_fr.compute_base_matrix()), FigureBoneData::new(self.foot_bl.compute_base_matrix()), @@ -244,10 +244,10 @@ impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { (Reddragon, _) => (*WING_OUT_X, *WING_OUT_Y, *WING_OUT_Z), }, feet_f: match (body.species, body.body_type) { - (Reddragon, _) => (4.0, 0.0, 1.5), + (Reddragon, _) => (*FEET_F_X, *FEET_F_Y, *FEET_F_Z), }, feet_b: match (body.species, body.body_type) { - (Reddragon, _) => (4.0, -15.0, 3.0), + (Reddragon, _) => (*FEET_B_X, *FEET_B_Y, *FEET_B_Z), }, height: match (body.species, body.body_type) { (Reddragon, _) => (1.0), diff --git a/voxygen/src/anim/dragon/run.rs b/voxygen/src/anim/dragon/run.rs index 31ce82a4df..8f24e75967 100644 --- a/voxygen/src/anim/dragon/run.rs +++ b/voxygen/src/anim/dragon/run.rs @@ -59,8 +59,8 @@ impl Animation for RunAnimation { next.head_upper.offset = Vec3::new( 0.0, - skeleton_attr.head_upper.0 + horichest * 1.8, - skeleton_attr.head_upper.1 + verthead * -1.8, + skeleton_attr.head_upper.0, + skeleton_attr.head_upper.1, ) * 1.05; next.head_upper.ori = Quaternion::rotation_x(wolf_look.y) * Quaternion::rotation_z(wolf_look.x); @@ -68,11 +68,10 @@ impl Animation for RunAnimation { next.head_lower.offset = Vec3::new( 0.0, - skeleton_attr.head_lower.0 + horichest * 1.8, - skeleton_attr.head_lower.1 + verthead * -1.8, + skeleton_attr.head_lower.0, + skeleton_attr.head_lower.1, ) * 1.05; - next.head_lower.ori = - Quaternion::rotation_x(wolf_look.y) * Quaternion::rotation_z(wolf_look.x); + next.head_lower.ori = Quaternion::rotation_x(wave_slow * 0.05); next.head_lower.scale = Vec3::one() * 1.05; next.jaw.offset = Vec3::new( @@ -81,7 +80,7 @@ impl Animation for RunAnimation { skeleton_attr.jaw.1 + wave_slow * 0.2, ); next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.05); - next.jaw.scale = Vec3::one() * 0.98; + next.jaw.scale = Vec3::one(); next.tail_front.offset = Vec3::new( 0.0, @@ -105,15 +104,15 @@ impl Animation for RunAnimation { skeleton_attr.chest_front.1 + vertchest * -1.6 + 1.0, ) * 1.05; next.chest_front.ori = Quaternion::rotation_y(horichest * -0.09); - next.chest_front.scale = Vec3::one() * 0.98 * 1.05; + next.chest_front.scale = Vec3::one() * 1.05; next.chest_rear.offset = Vec3::new( 0.0, - skeleton_attr.chest_rear.0 + horichest * 1.25, - skeleton_attr.chest_rear.1 + vertchest * -1.6 + 1.0, + skeleton_attr.chest_rear.0, + skeleton_attr.chest_rear.1, ) * 1.05; next.chest_rear.ori = Quaternion::rotation_y(horichest * -0.09); - next.chest_rear.scale = Vec3::one() * 0.98 * 1.05; + next.chest_rear.scale = Vec3::one() * 1.05; next.foot_fl.offset = Vec3::new( -skeleton_attr.feet_f.0, @@ -152,7 +151,7 @@ impl Animation for RunAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_l.ori = Quaternion::rotation_y((footl * 0.35).max(0.0)); + next.wing_in_l.ori = Quaternion::rotation_y(1.3); next.wing_in_l.scale = Vec3::one() * 1.05; next.wing_in_r.offset = Vec3::new( @@ -160,23 +159,23 @@ impl Animation for RunAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_r.ori = Quaternion::rotation_y((footr * 0.35).max(0.0)); + next.wing_in_r.ori = Quaternion::rotation_y(-1.3); next.wing_in_r.scale = Vec3::one() * 1.05; next.wing_out_l.offset = Vec3::new( -skeleton_attr.wing_out.0, skeleton_attr.wing_out.1, - skeleton_attr.wing_out.2, + skeleton_attr.wing_out.2 - 1.4, ); - next.wing_out_l.ori = Quaternion::rotation_y((footl * 0.35).max(0.0)); + next.wing_out_l.ori = Quaternion::rotation_y(-2.5); next.wing_out_l.scale = Vec3::one() * 1.05; next.wing_out_r.offset = Vec3::new( skeleton_attr.wing_out.0, skeleton_attr.wing_out.1, - skeleton_attr.wing_out.2, + skeleton_attr.wing_out.2 - 1.4, ); - next.wing_out_r.ori = Quaternion::rotation_y((footr * 0.35).max(0.0)); + next.wing_out_r.ori = Quaternion::rotation_y(2.5); next.wing_out_r.scale = Vec3::one() * 1.05; next From 6171a1c01c2b05a540684d61e90778d85de74465 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 9 May 2020 05:29:09 -0400 Subject: [PATCH 11/19] dragon adjustments. tweaks to humanoid run, fix for first person glide and other small fixes --- .../voxel/npc/reddragon/female/foot_bl.vox | Bin 1660 -> 1996 bytes .../voxel/npc/reddragon/female/foot_br.vox | Bin 1660 -> 1996 bytes .../voxel/npc/reddragon/male/foot_bl.vox | Bin 1660 -> 1996 bytes .../voxel/npc/reddragon/male/foot_br.vox | Bin 1660 -> 1996 bytes voxygen/src/anim/character/beta.rs | 2 +- voxygen/src/anim/character/climb.rs | 2 +- voxygen/src/anim/character/gliding.rs | 12 ++++----- voxygen/src/anim/character/mod.rs | 4 +-- voxygen/src/anim/character/run.rs | 18 ++++++------- voxygen/src/anim/character/swim.rs | 4 +-- voxygen/src/anim/dragon/idle.rs | 25 +++++++++--------- voxygen/src/anim/dragon/mod.rs | 2 +- voxygen/src/anim/dragon/run.rs | 8 +++--- 13 files changed, 38 insertions(+), 39 deletions(-) diff --git a/assets/voxygen/voxel/npc/reddragon/female/foot_bl.vox b/assets/voxygen/voxel/npc/reddragon/female/foot_bl.vox index 64878dbd4f3a5ddb16f020a156e8f5223c90028a..019dc0ef263f820f0d87a2d055649c3be2cff73e 100644 GIT binary patch delta 465 zcmXYtJxWDE425TsoFrEtxC60u3G>rfSiC|71$nv(cVKJ#5Ud4DOB)wq;TGJ7h3A47 z!XaleU(Vd$&DT-8z1p3;lu|CvwwILh8KvB8@6R`D!|(9F4ye1k`|XpiZYe+ec3kIv z_g35f_x*H4jSc|aRCE{gP#;-sh7w{yO=?mX z>e5}aN73O}rfc-5KBID(1&ebP1IXdFOt4Qf5;37v&ZlMfDib1P`6G>GK)pk(rv$+{ z!3(j5DAK`z$xu-$dxorB&RG{H)acuQ=yXI&df^K>;4*TIJU$H28A1m6A!{h_Vb;Q~ vF~fKX-rNXcxuL;8An0+4@r>tKXWUz08HuDu3y*0f<~VX8=N`5tw&rdJ!9@l~I)qi=qPsgu-q@5*cZ-XW7ig9Sx|-43%A75uqXCRHi9Sh740XbmdncYNyUd(hS{;$4r7t zXMw1aE>n-d&fq@f2+$Udw3Oi`yD$F)QQF8beCfCpSwpap%?g6@nALsO$;rRQAf+5hC8vxKr6HR8(Toy&pOzI}0w{4TF zs^0TK?y7QmNV%Q8$+dO4RoS(gURy1ZOEtMUXYX?HwgT)PT@krf>Af}VO>Tit=dK5F z`P;B`X0Kq=Kfl>y`~#Y7SnL1* delta 649 zcmXX^U1}CV5bUn%?%BkESMV6l&b~wt`5shIkR&JY7T*bc6?Qkb$T8xPe6R*wD0=#@ zx~6CUy#0H3{qgnT-ETAde1G{OV?WF6`{n85-E{Q5`Hz%+czn9N$Bdf&5(?H)HavWD zVhi_9#{gmkxDv5~F%TRM4y1Pkdcu1Eo#1uFOi&OB2sNk(vTzY#5Wa=ZNK=g|ub~=D zn1-0hY-C}}rkG0zYz?>7IYrHw`s736Jk;yx4s39$_UgSUnBl!bL}^=;Zxuc&H8_1l z_?pT^T92}|($*%hY@M zgczZ1a3Z+HgjPs~>SR-XQi7;K98u~ij8b1|cqP_oHcH}B7fC&jUg|XS{pQ9FcR%vh zPIo(Q)6VPCY;TL5RXD2ob1UCl*rfSiC|71$nv(cVKJ#5Ud4DOB)wq;TGJ7h3A47 z!XaleU(Vd$&DT-8z1p3;lu|CvwwILh8KvB8@6R`D!|(9F4ye1k`|XpiZYe+ec3kIv z_g35f_x*H4jSc|aRCE{gP#;-sh7w{yO=?mX z>e5}aN73O}rfc-5KBID(1&ebP1IXdFOt4Qf5;37v&ZlMfDib1P`6G>GK)pk(rv$+{ z!3(j5DAK`z$xu-$dxorB&RG{H)acuQ=yXI&df^K>;4*TIJU$H28A1m6A!{h_Vb;Q~ vF~fKX-rNXcxuL;8An0+4@r>tKXWUz08HuDu3y*0f<~VX8=N`5tw&rdJ!9@l~I)qi=qPsgu-q@5*cZ-XW7ig9Sx|-43%A75uqXCRHi9Sh740XbmdncYNyUd(hS{;$4r7t zXMw1aE>n-d&fq@f2+$Udw3Oi`yD$F)QQF8beCfCpSwpap%?g6@nALsO$;rRQAf+5hC8vxKr6HR8(Toy&pOzI}0w{4TF zs^0TK?y7QmNV%Q8$+dO4RoS(gURy1ZOEtMUXYX?HwgT)PT@krf>Af}VO>Tit=dK5F z`P;B`X0Kq=Kfl>y`~#Y7SnL1* delta 649 zcmXX^U1}CV5bUn%?%BkESMV6l&b~wt`5shIkR&JY7T*bc6?Qkb$T8xPe6R*wD0=#@ zx~6CUy#0H3{qgnT-ETAde1G{OV?WF6`{n85-E{Q5`Hz%+czn9N$Bdf&5(?H)HavWD zVhi_9#{gmkxDv5~F%TRM4y1Pkdcu1Eo#1uFOi&OB2sNk(vTzY#5Wa=ZNK=g|ub~=D zn1-0hY-C}}rkG0zYz?>7IYrHw`s736Jk;yx4s39$_UgSUnBl!bL}^=;Zxuc&H8_1l z_?pT^T92}|($*%hY@M zgczZ1a3Z+HgjPs~>SR-XQi7;K98u~ij8b1|cqP_oHcH}B7fC&jUg|XS{pQ9FcR%vh zPIo(Q)6VPCY;TL5RXD2ob1UCl* From<&'a comp::humanoid::Body> for SkeletonAttr { (Orc, Female) => (0.0, 14.0), (Human, Male) => (0.3, 13.5), (Human, Female) => (0.0, 13.8), - (Elf, Male) => (0.0, 13.5), - (Elf, Female) => (0.0, 13.5), + (Elf, Male) => (0.5, 13.5), + (Elf, Female) => (1.0, 13.5), (Dwarf, Male) => (0.0, 14.5), (Dwarf, Female) => (0.0, 14.0), (Undead, Male) => (0.5, 13.6), diff --git a/voxygen/src/anim/character/run.rs b/voxygen/src/anim/character/run.rs index 4a7dd9a4f5..b2d8d9384a 100644 --- a/voxygen/src/anim/character/run.rs +++ b/voxygen/src/anim/character/run.rs @@ -92,9 +92,9 @@ impl Animation for RunAnimation { next.head.offset = Vec3::new( 0.0, -3.0 + skeleton_attr.head.0, - -1.0 + skeleton_attr.head.1 + short * 0.3, + -1.0 + skeleton_attr.head.1 + short * 0.1, ); - next.head.ori = Quaternion::rotation_z(head_look.x + long * -0.1 - short * 0.3) + next.head.ori = Quaternion::rotation_z(head_look.x + long * -0.1 - short * 0.1) * Quaternion::rotation_x(head_look.y + 0.35); next.head.scale = Vec3::one() * skeleton_attr.head_scale; @@ -103,11 +103,11 @@ impl Animation for RunAnimation { skeleton_attr.chest.0, skeleton_attr.chest.1 + 2.0 + short * 1.1 - lower, ); - next.chest.ori = Quaternion::rotation_z(short * 0.3 * walkintensity); + next.chest.ori = Quaternion::rotation_z(short * 0.15 * walkintensity); next.chest.scale = Vec3::one(); next.belt.offset = Vec3::new(0.0, skeleton_attr.belt.0, skeleton_attr.belt.1); - next.belt.ori = Quaternion::rotation_z(short * 0.25); + next.belt.ori = Quaternion::rotation_z(short * 0.1); next.belt.scale = Vec3::one(); next.back.offset = Vec3::new(0.0, skeleton_attr.back.0, skeleton_attr.back.1); @@ -115,24 +115,24 @@ impl Animation for RunAnimation { next.back.scale = Vec3::one() * 1.02; next.shorts.offset = Vec3::new(0.0, skeleton_attr.shorts.0, skeleton_attr.shorts.1); - next.shorts.ori = Quaternion::rotation_z(short * 0.4); + next.shorts.ori = Quaternion::rotation_z(short * 0.2); next.shorts.scale = Vec3::one(); next.l_hand.offset = Vec3::new( -skeleton_attr.hand.0 + wave_stop * 1.0 * walkintensity, skeleton_attr.hand.1 + short * 3.0 * walkintensity, - 1.0 + skeleton_attr.hand.2 + short * -1.5 * walkintensity, + 1.0 + skeleton_attr.hand.2 + short * -0.75 * walkintensity, ); - next.l_hand.ori = Quaternion::rotation_x(0.2 + short * 1.2 * walk) + next.l_hand.ori = Quaternion::rotation_x(0.2 + short * 1.5 * walk) * Quaternion::rotation_y(wave_stop * -0.1); next.l_hand.scale = Vec3::one(); next.r_hand.offset = Vec3::new( skeleton_attr.hand.0 + wave_stop * -1.0 * walkintensity, skeleton_attr.hand.1 + short * -3.0 * walkintensity, - 1.0 + skeleton_attr.hand.2 + short * 1.5 * walkintensity, + 1.0 + skeleton_attr.hand.2 + short * 0.75 * walkintensity, ); - next.r_hand.ori = Quaternion::rotation_x(0.2 + short * -1.2 * walk) + next.r_hand.ori = Quaternion::rotation_x(0.2 + short * -1.5 * walk) * Quaternion::rotation_y(wave_stop * 0.1); next.r_hand.scale = Vec3::one(); diff --git a/voxygen/src/anim/character/swim.rs b/voxygen/src/anim/character/swim.rs index 35787b7804..233bec9297 100644 --- a/voxygen/src/anim/character/swim.rs +++ b/voxygen/src/anim/character/swim.rs @@ -107,7 +107,7 @@ impl Animation for SwimAnimation { next.l_shoulder.offset = Vec3::new( -skeleton_attr.shoulder.0, - skeleton_attr.shoulder.0, + skeleton_attr.shoulder.1, skeleton_attr.shoulder.2, ); next.l_shoulder.ori = Quaternion::rotation_x(short * 0.15); @@ -115,7 +115,7 @@ impl Animation for SwimAnimation { next.r_shoulder.offset = Vec3::new( skeleton_attr.shoulder.0, - skeleton_attr.shoulder.0, + skeleton_attr.shoulder.1, skeleton_attr.shoulder.2, ); next.r_shoulder.ori = Quaternion::rotation_x(short * -0.15); diff --git a/voxygen/src/anim/dragon/idle.rs b/voxygen/src/anim/dragon/idle.rs index 76089250cd..2018abfd00 100644 --- a/voxygen/src/anim/dragon/idle.rs +++ b/voxygen/src/anim/dragon/idle.rs @@ -26,9 +26,8 @@ impl Animation for IdleAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let wave_ultra_slow = (anim_time as f32 * 1.0 + PI).sin(); - let wave_ultra_slow_cos = (anim_time as f32 * 3.0 + PI).cos(); - let wave_slow = (anim_time as f32 * 4.5).sin(); + let ultra_slow = (anim_time as f32 * 1.0).sin(); + let wave_slow = (anim_time as f32 * 2.5).sin(); let wave_slow_cos = (anim_time as f32 * 4.5).cos(); let look = Vec2::new( @@ -47,7 +46,7 @@ impl Animation for IdleAnimation { next.head_upper.offset = Vec3::new( 0.0, skeleton_attr.head_upper.0, - skeleton_attr.head_upper.1 + wave_ultra_slow * 0.20, + skeleton_attr.head_upper.1 + ultra_slow * 0.20, ) * 1.05; next.head_upper.ori = Quaternion::rotation_z(0.8 * look.x) * Quaternion::rotation_x(0.8 * look.y); @@ -56,7 +55,7 @@ impl Animation for IdleAnimation { next.head_lower.offset = Vec3::new( 0.0, skeleton_attr.head_lower.0, - skeleton_attr.head_lower.1 + wave_ultra_slow * 0.20, + skeleton_attr.head_lower.1 + ultra_slow * 0.20, ) * 1.05; next.head_lower.ori = Quaternion::rotation_z(0.8 * look.x) * Quaternion::rotation_x(0.8 * look.y); @@ -64,8 +63,8 @@ impl Animation for IdleAnimation { next.jaw.offset = Vec3::new( 0.0, - skeleton_attr.jaw.0 - wave_ultra_slow_cos * 0.12, - skeleton_attr.jaw.1 + wave_slow * 0.2, + skeleton_attr.jaw.0, + skeleton_attr.jaw.1, ) * 1.05; next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.05); next.jaw.scale = Vec3::one() * 0.98; @@ -73,7 +72,7 @@ impl Animation for IdleAnimation { next.chest_front.offset = Vec3::new( 0.0, skeleton_attr.chest_front.0, - wave_slow * 0.3 + skeleton_attr.chest_front.1, + skeleton_attr.chest_front.1, ) * 1.05; next.chest_front.ori = Quaternion::rotation_y(wave_slow * 0.03); next.chest_front.scale = Vec3::one() * 1.05; @@ -81,7 +80,7 @@ impl Animation for IdleAnimation { next.chest_rear.offset = Vec3::new( 0.0, skeleton_attr.chest_rear.0, - wave_slow * 0.3 + skeleton_attr.chest_rear.1, + skeleton_attr.chest_rear.1, ) * 1.05; next.chest_rear.ori = Quaternion::rotation_y(wave_slow * 0.03); next.chest_rear.scale = Vec3::one() * 1.05; @@ -99,7 +98,7 @@ impl Animation for IdleAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_l.ori = Quaternion::rotation_y(1.3); + next.wing_in_l.ori = Quaternion::rotation_y(0.2); next.wing_in_l.scale = Vec3::one() * 1.05; next.wing_in_r.offset = Vec3::new( @@ -107,7 +106,7 @@ impl Animation for IdleAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_r.ori = Quaternion::rotation_y(-1.3); + next.wing_in_r.ori = Quaternion::rotation_y(-0.2);//.8 next.wing_in_r.scale = Vec3::one() * 1.05; next.wing_out_l.offset = Vec3::new( @@ -115,7 +114,7 @@ impl Animation for IdleAnimation { skeleton_attr.wing_out.1, skeleton_attr.wing_out.2 + *OFF1, ); - next.wing_out_l.ori = Quaternion::rotation_y(*TEST_L); + next.wing_out_l.ori = Quaternion::rotation_y(-0.3);//2.0 next.wing_out_l.scale = Vec3::one() * 1.05; next.wing_out_r.offset = Vec3::new( @@ -123,7 +122,7 @@ impl Animation for IdleAnimation { skeleton_attr.wing_out.1, skeleton_attr.wing_out.2 + *OFF2, ); - next.wing_out_r.ori = Quaternion::rotation_y(*TEST_R); + next.wing_out_r.ori = Quaternion::rotation_y(0.3); next.wing_out_r.scale = Vec3::one() * 1.05; next.foot_fl.offset = Vec3::new( diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index 28a84c377f..8b8b3bce23 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -43,7 +43,7 @@ const WING_IN_X: f32 = 2.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const WING_IN_Y: f32 = -16.5; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_IN_Z: f32 = 3.0; +const WING_IN_Z: f32 = 0.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] const WING_OUT_X: f32 = 23.0; #[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] diff --git a/voxygen/src/anim/dragon/run.rs b/voxygen/src/anim/dragon/run.rs index 8f24e75967..14a343e94a 100644 --- a/voxygen/src/anim/dragon/run.rs +++ b/voxygen/src/anim/dragon/run.rs @@ -151,7 +151,7 @@ impl Animation for RunAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_l.ori = Quaternion::rotation_y(1.3); + next.wing_in_l.ori = Quaternion::rotation_y(0.8); next.wing_in_l.scale = Vec3::one() * 1.05; next.wing_in_r.offset = Vec3::new( @@ -159,7 +159,7 @@ impl Animation for RunAnimation { skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_r.ori = Quaternion::rotation_y(-1.3); + next.wing_in_r.ori = Quaternion::rotation_y(-0.8); next.wing_in_r.scale = Vec3::one() * 1.05; next.wing_out_l.offset = Vec3::new( @@ -167,7 +167,7 @@ impl Animation for RunAnimation { skeleton_attr.wing_out.1, skeleton_attr.wing_out.2 - 1.4, ); - next.wing_out_l.ori = Quaternion::rotation_y(-2.5); + next.wing_out_l.ori = Quaternion::rotation_y(-2.0); next.wing_out_l.scale = Vec3::one() * 1.05; next.wing_out_r.offset = Vec3::new( @@ -175,7 +175,7 @@ impl Animation for RunAnimation { skeleton_attr.wing_out.1, skeleton_attr.wing_out.2 - 1.4, ); - next.wing_out_r.ori = Quaternion::rotation_y(2.5); + next.wing_out_r.ori = Quaternion::rotation_y(2.0); next.wing_out_r.scale = Vec3::one() * 1.05; next From 7f94028653de9ad960aa7b1bba74e2ce70175796 Mon Sep 17 00:00:00 2001 From: Snowram Date: Sat, 9 May 2020 17:22:08 +0200 Subject: [PATCH 12/19] Cleanup --- .../voxygen/voxel/dragon_lateral_manifest.ron | 16 ++--- .../voxel/npc/reddragon/female/head_lower.vox | Bin 56303 -> 1820 bytes .../voxel/npc/reddragon/female/head_upper.vox | Bin 57067 -> 2584 bytes .../voxel/npc/reddragon/female/jaw.vox | Bin 55939 -> 1456 bytes .../voxel/npc/reddragon/female/tail_rear.vox | Bin 55967 -> 1484 bytes .../voxel/npc/reddragon/male/head_lower.vox | Bin 56303 -> 1820 bytes .../voxel/npc/reddragon/male/head_upper.vox | Bin 57067 -> 2584 bytes .../voxygen/voxel/npc/reddragon/male/jaw.vox | Bin 55939 -> 1456 bytes .../voxel/npc/reddragon/male/tail_rear.vox | Bin 55967 -> 1484 bytes voxygen/src/anim/dragon/fly.rs | 60 +++--------------- voxygen/src/anim/dragon/idle.rs | 21 ++---- voxygen/src/anim/dragon/mod.rs | 26 ++++---- voxygen/src/anim/dragon/run.rs | 10 +-- voxygen/src/scene/figure/mod.rs | 3 +- 14 files changed, 42 insertions(+), 94 deletions(-) diff --git a/assets/voxygen/voxel/dragon_lateral_manifest.ron b/assets/voxygen/voxel/dragon_lateral_manifest.ron index f4194d97c3..26a48652e1 100644 --- a/assets/voxygen/voxel/dragon_lateral_manifest.ron +++ b/assets/voxygen/voxel/dragon_lateral_manifest.ron @@ -17,19 +17,19 @@ lateral: ("npc.reddragon.male.wing_out_r"), ), foot_fl: ( - offset: (-6.5, -4.0, -1.5), + offset: (-5.5, -4.0, -1.5), lateral: ("npc.reddragon.male.foot_fl"), ), foot_fr: ( - offset: (-6.5, -4.0, -1.5), + offset: (-5.5, -4.0, -1.5), lateral: ("npc.reddragon.male.foot_fr"), ), foot_bl: ( - offset: (-6.5, -4.0, -3.0), + offset: (-5.5, -4.0, -3.0), lateral: ("npc.reddragon.male.foot_bl"), ), foot_br: ( - offset: (-6.5, -4.0, -3.0), + offset: (-5.5, -4.0, -3.0), lateral: ("npc.reddragon.male.foot_br"), ) ), @@ -51,19 +51,19 @@ lateral: ("npc.reddragon.female.wing_out_r"), ), foot_fl: ( - offset: (-6.5, -4.0, -1.5), + offset: (-5.5, -4.0, -1.5), lateral: ("npc.reddragon.female.foot_fl"), ), foot_fr: ( - offset: (-6.5, -4.0, -1.5), + offset: (-5.5, -4.0, -1.5), lateral: ("npc.reddragon.female.foot_fr"), ), foot_bl: ( - offset: (-6.5, -4.0, -3.0), + offset: (-5.5, -4.0, -3.0), lateral: ("npc.reddragon.female.foot_bl"), ), foot_br: ( - offset: (-6.5, -4.0, -3.0), + offset: (-5.5, -4.0, -3.0), lateral: ("npc.reddragon.female.foot_br"), ) ), diff --git a/assets/voxygen/voxel/npc/reddragon/female/head_lower.vox b/assets/voxygen/voxel/npc/reddragon/female/head_lower.vox index 9b30b9efa5b602f6039d3fd5257887d038367de3..1eeec8571b79865f7ca6a5be6e4a748f4de9313b 100644 GIT binary patch delta 33 ncmaFAop}zQP?&#&!ZZd3246={KOn`x!M;)GAJgXBEIcd#pQi}2 literal 56303 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 R+j!mlM>VdBC6hA1`(I-y9q0f6 diff --git a/assets/voxygen/voxel/npc/reddragon/female/head_upper.vox b/assets/voxygen/voxel/npc/reddragon/female/head_upper.vox index c8d97068ef98d5cc80afb45683f8400abec359e3..c317ef3006b1b91ed7dd86db2e94d3e68f614adf 100644 GIT binary patch delta 33 ncmaF8mwASWP?&#&!ZZd3246={KOn`x!nIN87whKh>^v+0pZW;1 literal 57067 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 diff --git a/assets/voxygen/voxel/npc/reddragon/female/tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/female/tail_rear.vox index 4b596e4409055fcede44083b3cdc51a34daead9c..9c1972d2e942631b474dd47025187d52b008786b 100644 GIT binary patch delta 33 ncmbQgmH7;}P?&#&!ZZd3246={KOn`hgLR|OI>yc2%searo?{4^ literal 55967 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 R+j!mlM>VdBC6hA1`(I-y9q0f6 diff --git a/assets/voxygen/voxel/npc/reddragon/male/head_upper.vox b/assets/voxygen/voxel/npc/reddragon/male/head_upper.vox index c8d97068ef98d5cc80afb45683f8400abec359e3..c317ef3006b1b91ed7dd86db2e94d3e68f614adf 100644 GIT binary patch delta 33 ncmaF8mwASWP?&#&!ZZd3246={KOn`x!nIN87whKh>^v+0pZW;1 literal 57067 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 diff --git a/assets/voxygen/voxel/npc/reddragon/male/tail_rear.vox b/assets/voxygen/voxel/npc/reddragon/male/tail_rear.vox index 4b596e4409055fcede44083b3cdc51a34daead9c..9c1972d2e942631b474dd47025187d52b008786b 100644 GIT binary patch delta 33 ncmbQgmH7;}P?&#&!ZZd3246={KOn`hgLR|OI>yc2%searo?{4^ literal 55967 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 Cleanup #[derive(Clone, Default)] pub struct DragonSkeleton { @@ -217,37 +221,37 @@ impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { use comp::dragon::Species::*; Self { head_upper: match (body.species, body.body_type) { - (Reddragon, _) => (*HEAD_UPPER_X, *HEAD_UPPER_Z), + (Reddragon, _) => (2.5, 4.5), }, head_lower: match (body.species, body.body_type) { - (Reddragon, _) => (*HEAD_LOWER_X, *HEAD_LOWER_Z), + (Reddragon, _) => (7.5, 3.5), }, jaw: match (body.species, body.body_type) { - (Reddragon, _) => (*JAW_X, *JAW_Z), + (Reddragon, _) => (7.0, -5.0), }, chest_front: match (body.species, body.body_type) { - (Reddragon, _) => (*CHEST_F_X, *CHEST_F_Z), + (Reddragon, _) => (0.0, 14.0), }, chest_rear: match (body.species, body.body_type) { - (Reddragon, _) => (*CHEST_R_X, *CHEST_R_Z), + (Reddragon, _) => (-12.5, 0.0), }, tail_front: match (body.species, body.body_type) { - (Reddragon, _) => (*TAIL_F_X, *TAIL_F_Z), + (Reddragon, _) => (-12.5, 1.5), }, tail_rear: match (body.species, body.body_type) { - (Reddragon, _) => (*TAIL_R_X, *TAIL_R_Z), + (Reddragon, _) => (-14.0, 0.0), }, wing_in: match (body.species, body.body_type) { - (Reddragon, _) => (*WING_IN_X, *WING_IN_Y, *WING_IN_Z), + (Reddragon, _) => (2.5, -16.5, 0.0), }, wing_out: match (body.species, body.body_type) { - (Reddragon, _) => (*WING_OUT_X, *WING_OUT_Y, *WING_OUT_Z), + (Reddragon, _) => (23.0, 0.5, 4.0), }, feet_f: match (body.species, body.body_type) { - (Reddragon, _) => (*FEET_F_X, *FEET_F_Y, *FEET_F_Z), + (Reddragon, _) => (6.0, 0.0, 1.5), }, feet_b: match (body.species, body.body_type) { - (Reddragon, _) => (*FEET_B_X, *FEET_B_Y, *FEET_B_Z), + (Reddragon, _) => (6.0, -15.0, 3.0), }, height: match (body.species, body.body_type) { (Reddragon, _) => (1.0), diff --git a/voxygen/src/anim/dragon/run.rs b/voxygen/src/anim/dragon/run.rs index 14a343e94a..6dada1fd5a 100644 --- a/voxygen/src/anim/dragon/run.rs +++ b/voxygen/src/anim/dragon/run.rs @@ -19,10 +19,8 @@ impl Animation for RunAnimation { let lab = 14; - let wave_ultra_slow = (anim_time as f32 * 1.0 + PI).sin(); let wave_ultra_slow_cos = (anim_time as f32 * 3.0 + PI).cos(); let wave_slow = (anim_time as f32 * 4.5).sin(); - let wave_slow_cos = (anim_time as f32 * 4.5).cos(); let vertlf = (anim_time as f32 * lab as f32 + PI * 1.8).sin().max(0.15); let vertrfoffset = (anim_time as f32 * lab as f32 + PI * 0.80).sin().max(0.15); @@ -36,15 +34,11 @@ impl Animation for RunAnimation { let vertchest = (anim_time as f32 * lab as f32 + PI * 0.3).sin().max(0.2); let horichest = (anim_time as f32 * lab as f32 + PI * 0.8).sin(); - let verthead = (anim_time as f32 * lab as f32 + PI * 0.3).sin(); - - let footl = (anim_time as f32 * lab as f32 + PI).sin(); - let footr = (anim_time as f32 * lab as f32).sin(); let center = (anim_time as f32 * lab as f32 + PI / 2.0).sin(); let centeroffset = (anim_time as f32 * lab as f32 + PI * 1.5).sin(); - let wolf_look = Vec2::new( + let dragon_look = Vec2::new( ((global_time + anim_time) as f32 / 4.0) .floor() .mul(7331.0) @@ -63,7 +57,7 @@ impl Animation for RunAnimation { skeleton_attr.head_upper.1, ) * 1.05; next.head_upper.ori = - Quaternion::rotation_x(wolf_look.y) * Quaternion::rotation_z(wolf_look.x); + Quaternion::rotation_x(dragon_look.y) * Quaternion::rotation_z(dragon_look.x); next.head_upper.scale = Vec3::one() * 1.05; next.head_lower.offset = Vec3::new( diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 6edcb4b455..5e3c1f16ea 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1052,7 +1052,7 @@ impl FigureMgr { is_player, ); }, - Body::Dragon(dragon_body) => { + Body::Dragon(_) => { let skeleton_attr = &self .dragon_model_cache .get_or_create_model( @@ -1064,7 +1064,6 @@ impl FigureMgr { None, ) .1; - let ref skeleton_attr = dragon_body.into(); let state = self .dragon_states From a6d16e61e182df31c6a18aae10bb353bce57f407 Mon Sep 17 00:00:00 2001 From: Snowram Date: Sat, 9 May 2020 20:19:01 +0200 Subject: [PATCH 13/19] Add cockatrice --- assets/common/npc_names.json | 4 ++ .../voxel/bird_medium_center_manifest.ron | 28 ++++++++++++++ .../voxel/bird_medium_lateral_manifest.ron | 36 ++++++++++++++++++ .../voxel/npc/cockatrice/female/head.vox | Bin 0 -> 1952 bytes .../voxel/npc/cockatrice/female/leg_l.vox | Bin 0 -> 1364 bytes .../voxel/npc/cockatrice/female/leg_r.vox | Bin 0 -> 1364 bytes .../voxel/npc/cockatrice/female/tail.vox | Bin 0 -> 1216 bytes .../voxel/npc/cockatrice/female/torso.vox | Bin 0 -> 3048 bytes .../voxel/npc/cockatrice/female/wing_l.vox | Bin 0 -> 1212 bytes .../voxel/npc/cockatrice/female/wing_r.vox | Bin 0 -> 1212 bytes .../voxel/npc/cockatrice/male/head.vox | Bin 0 -> 1952 bytes .../voxel/npc/cockatrice/male/leg_l.vox | Bin 0 -> 1364 bytes .../voxel/npc/cockatrice/male/leg_r.vox | Bin 0 -> 1364 bytes .../voxel/npc/cockatrice/male/tail.vox | Bin 0 -> 1216 bytes .../voxel/npc/cockatrice/male/torso.vox | Bin 0 -> 3048 bytes .../voxel/npc/cockatrice/male/wing_l.vox | Bin 0 -> 1212 bytes .../voxel/npc/cockatrice/male/wing_r.vox | Bin 0 -> 1212 bytes common/src/comp/body/bird_medium.rs | 6 ++- voxygen/src/anim/bird_medium/mod.rs | 5 +++ 19 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 assets/voxygen/voxel/npc/cockatrice/female/head.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/female/leg_l.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/female/leg_r.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/female/tail.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/female/torso.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/female/wing_l.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/female/wing_r.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/male/head.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/male/leg_l.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/male/leg_r.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/male/torso.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/male/wing_l.vox create mode 100644 assets/voxygen/voxel/npc/cockatrice/male/wing_r.vox diff --git a/assets/common/npc_names.json b/assets/common/npc_names.json index 88b237ac4d..8099a24adf 100644 --- a/assets/common/npc_names.json +++ b/assets/common/npc_names.json @@ -475,6 +475,10 @@ "parrot": { "keyword": "parrot", "generic": "Parrot" + }, + "cockatrice": { + "keyword": "cockatrice", + "generic": "Cockatrice" } } }, diff --git a/assets/voxygen/voxel/bird_medium_center_manifest.ron b/assets/voxygen/voxel/bird_medium_center_manifest.ron index d89959dc10..3669a810e7 100644 --- a/assets/voxygen/voxel/bird_medium_center_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_center_manifest.ron @@ -195,4 +195,32 @@ center: ("npc.parrot.female.tail"), ) ), + (Cockatrice, Male): ( + head: ( + offset: (-2.5, -3.5, -8.0), + center: ("npc.cockatrice.male.head"), + ), + torso: ( + offset: (-3.5, -6.5, -7.5), + center: ("npc.cockatrice.male.torso"), + ), + tail: ( + offset: (-1.5, -3.5, -4.0), + center: ("npc.cockatrice.male.tail"), + ) + ), + (Cockatrice, Female): ( + head: ( + offset: (-2.5, -3.5, -8.0), + center: ("npc.cockatrice.female.head"), + ), + torso: ( + offset: (-3.5, -6.5, -7.5), + center: ("npc.cockatrice.female.torso"), + ), + tail: ( + offset: (-1.5, -3.5, -4.0), + center: ("npc.cockatrice.female.tail"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron index fcde79c0ca..a2ae6f8b6d 100644 --- a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron @@ -251,4 +251,40 @@ lateral: ("npc.parrot.female.leg_r"), ) ), + (Cockatrice, Male): ( + wing_l: ( + offset: (-2.0, -3.0, -9.0), + lateral: ("npc.cockatrice.male.wing_l"), + ), + wing_r: ( + offset: (-2.0, -3.0, -9.0), + lateral: ("npc.cockatrice.male.wing_r"), + ), + foot_l: ( + offset: (-2.5, 0.0, -12.0), + lateral: ("npc.cockatrice.male.leg_l"), + ), + foot_r: ( + offset: (-2.5, 0.0, -12.0), + lateral: ("npc.cockatrice.male.leg_r"), + ) + ), + (Cockatrice, Female): ( + wing_l: ( + offset: (-2.0, -3.0, -9.0), + lateral: ("npc.cockatrice.female.wing_l"), + ), + wing_r: ( + offset: (-2.0, -3.0, -9.0), + lateral: ("npc.cockatrice.female.wing_r"), + ), + foot_l: ( + offset: (-2.5, 0.0, -12.0), + lateral: ("npc.cockatrice.female.leg_l"), + ), + foot_r: ( + offset: (-2.5, 0.0, -12.0), + lateral: ("npc.cockatrice.female.leg_r"), + ) + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/npc/cockatrice/female/head.vox b/assets/voxygen/voxel/npc/cockatrice/female/head.vox new file mode 100644 index 0000000000000000000000000000000000000000..461f5c4ead6140a9da80161135b9e55a4a46bc00 GIT binary patch literal 1952 zcmd6myQ>{l6o=Pqzvi5K4TKbPrih+G8^OjxgqcfD2y(e3f(a6%V4cQ7tZY*VAtDF~ zX>6GD6QDJ7kC!Y%JVF!@Fh2}DSWD;fA$kG=Q$t=W&yKfV6;JrTKl;qVGZ?i7)$ zhc_;*mw+$99-M*eU)(tS%5nIffJNR|eQUC`KSiWIJZ&t+Xk~x03bDr+tQOXjbqlM> z){J%JbUlToAvA3*6K5SQ8Tja0H!h_&DI1kCxPqVu3ZZ%9ntRtooCcHBJ6NHPqZ5$U zqh%;iiJdw0D3*Ff*DP%uU(i=&Ew!vFebJ+KqiGwAK2$5V^a>t%YiKLlg0)6nW4=SI zMo(DKgrD&t*eA^^`T);^JN-NBEpOFwZ{U`PAhuR^n#;~XQaMntRH$2qz?Udnjk2*| zKOl(3$vHW22x74^sIh-W4r1|J-C3w%mFv@wV~B6T4`vti;~+Pn%PtE-1^AvH%aZ8riNBStD)5% zOEk1vZ{QHb;_V&v#y^t7#u6K~jCEkOo3wP3frIAmz;d^7tS0=_^^VoR4}7e8M?HKn z>jrC_SLN)MGcMf23?=WZ*<{Tbi%B>?t3G)wcXqk!!nxyDY)YdnZz88jxoei4d&kX=(4T^>+-PS`yZiGm@1L2kp8Hqx{`WHfdP`nOV|(_+c|UzC z^FQk!+>!aw-51ASx4$=K{=+}_=D+6iue2v`O3$a!$IV+m&)05#H-B^c{(N$B^1toJ S@$vDze5dhGOHE$?f;Y5S@9mcY84^0kOzkp=Y6uU}GVI;0GchoN~ESq88RR7Gh;Xr>jlK0@pQvd{R#8>7 zclR1K)mEBp}gQQ?Nu@tJIlo%*eVl)~B=>Urwf|RrgEIg8I^y2k#IN3DP&D^L$KlzHD-TcH(Z#*% WcDw)f9-U6ddF#iW{7(J+9`p_$k^DRW literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/cockatrice/female/leg_r.vox b/assets/voxygen/voxel/npc/cockatrice/female/leg_r.vox new file mode 100644 index 0000000000000000000000000000000000000000..22e834e26761d0f6fd1dd2bc1906e87e91161bae GIT binary patch literal 1364 zcmd5*Jxc>Y5S@9mcY84^0ZEa&LeD}Q!Nx)a!9+wth;q48q88RR7Gh;mNv&Kd{aUB7%Yz5eMGQ=gxb#u-lv6saqmy*P9#aXeA)Zo4aeHK2g(@tfH*w z?(8-ztby99{{++~LpeAojK-iafp7){8MDa*Q38}=NSH7M2}pF-hSzR2R&Q*LN$Xyl0u-e%r4%xf0tzmrEH-6QumU#itT*a< z7jM>TwcIeV&@Q{hV$?0~jeW`E`}>#GFMD3sz|7HI1dCa}I$sgUxf6+V)9S5h^t~fY$hvz*v W7!3aGKKlK>^EQls@;mkMd(bP>I{YdC literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/cockatrice/female/tail.vox b/assets/voxygen/voxel/npc/cockatrice/female/tail.vox new file mode 100644 index 0000000000000000000000000000000000000000..1a61e7fa5edbde718139e9242eb5c9f9a8711d85 GIT binary patch literal 1216 zcmd6mu}T9$5QgX9-P;pPM35A@1EW`HBiLAo;6VhD9{%`M*Wf{9D;!duoe0>Lf1IhjJ^#A|> literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/cockatrice/female/torso.vox b/assets/voxygen/voxel/npc/cockatrice/female/torso.vox new file mode 100644 index 0000000000000000000000000000000000000000..3255cdd817ada63dbe1f9d8ba344cbc88e0c160e GIT binary patch literal 3048 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 WcDw)f9-U6ddF#iW{7(J+9`p_$k^DRW literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/cockatrice/male/leg_r.vox b/assets/voxygen/voxel/npc/cockatrice/male/leg_r.vox new file mode 100644 index 0000000000000000000000000000000000000000..22e834e26761d0f6fd1dd2bc1906e87e91161bae GIT binary patch literal 1364 zcmd5*Jxc>Y5S@9mcY84^0ZEa&LeD}Q!Nx)a!9+wth;q48q88RR7Gh;mNv&Kd{aUB7%Yz5eMGQ=gxb#u-lv6saqmy*P9#aXeA)Zo4aeHK2g(@tfH*w z?(8-ztby99{{++~LpeAojK-iafp7){8MDa*Q38}=NSH7M2}pF-hSzR2R&Q*LN$Xyl0u-e%r4%xf0tzmrEH-6QumU#itT*a< z7jM>TwcIeV&@Q{hV$?0~jeW`E`}>#GFMD3sz|7HI1dCa}I$sgUxf6+V)9S5h^t~fY$hvz*v W7!3aGKKlK>^EQls@;mkMd(bP>I{YdC literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/cockatrice/male/tail.vox b/assets/voxygen/voxel/npc/cockatrice/male/tail.vox new file mode 100644 index 0000000000000000000000000000000000000000..1a61e7fa5edbde718139e9242eb5c9f9a8711d85 GIT binary patch literal 1216 zcmd6mu}T9$5QgX9-P;pPM35A@1EW`HBiLAo;6VhD9{%`M*Wf{9D;!duoe0>Lf1IhjJ^#A|> literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/npc/cockatrice/male/torso.vox b/assets/voxygen/voxel/npc/cockatrice/male/torso.vox new file mode 100644 index 0000000000000000000000000000000000000000..3255cdd817ada63dbe1f9d8ba344cbc88e0c160e GIT binary patch literal 3048 zcmeH|y^btJ428?TRoy+ikPvit0NVi(ApyybbdeBRtu9D_(B%^FI7~uHM#dwNlJgeJ z=ONv6H)5otsxG^1mwoK{@!NNw{N7r7`{v;rmiE`u+V>CdzdF?izYcD|2jJaL?;rlG z1AhNVYo@Zt9EY-6vpvH$pJSDrSJQsq%y#p>S(A&JtT}wuoY0MPQ(M(#i{4jlw&mm( zo7%-jJFJ6jhlZ?#?5DW+%=d!4)=3Tr;vN6oFJ0iZHpP~% ziY>d^^DTSqnsTu$xvzFgY>mUPl@srnJLgSWzR*`<$k~rf-otlO zUt{W#V9h|W`YxdlYSS2cFx_RiHnX7Xa^#;*R96Qb(;OqmKUk z&1JV-&Zgrm+!c7yW;@zshb(q!gFSg}@WeUKtQvEF;T&Ey>SgFUNOIQ_x!gqza&F|(HtXnjTQjgheIt=w!CmTVi5$e7oKL&Yxo6$6z6zYzD1Y$Z1CHar z;=p$jr#Nz8jt*;pgd>>_4@#HX6R#S6DsI+bZP<^wZw>#V$Q2v(jI$5+4yObTMdj3{ zv-xyZ?0L+)*|_(Z@HtkCL4BvS5nF>-4Sx+Dwc-stmAUUad-2?Ye!woi432B@eDcjF-h@u0=CL?=_f3HT2O0RFW9!!zI@-S?m` z8~eaUtNf(HYizK0knkcn3+^_0H>kS=I>ocV4{Lg^T0W>v5L2V3;>;cFo1+7wR_2k{ z{Hggg6C1oxL#Oy*=&*O@Pm=TIeHUtGr#NCB_#bP)ldRaQhnGA&1O5g)uK5>xW8dI; zf*^0vgMNiyrAti&E-CQ|xijPnr1Fa|Cx2$t1)dput?wzwan*!6R<7s?8PtNB8gLMU zoKTx!#x(LEHQ#{YS2$OAp!g2Bq4gdm4~nhp$_$U?Ug!&p8BWjSw)Ejq>BBWE_zc&U zvsl%l-osh6!?E9(J3_uSh$({n5mWV)GuN#hjruj_kT`jA;$n3Wa5DmKQ~#jP#E9Fl z0oNP^-_D#C<(^_s`DP8i8*+iuT41JFA(-bba0tGUJFnRTza8GkL_O%OR(u?AWhD7S z#y+l~|KN{wWWa!f=!q}54ex`QD!fCJ`XqNj)O@X6n9u|CIkQ;sp@9wH?Bn{~@y{%+ znGP4kb609*z(F{A_1{4K<2oCV8*<=qsSUj(Xr2E9V0pT?yaBi8=reIn)O}`tPWyLX zfBB~QfB)BykB?6;iO=6IPhb3Sdbx$=NGKmg=2Z~!qU5JyBtc~$^v5Re5CY^=Tv z3_#4vqQ$_>*3Q7nti{O0uF1g4q{+a-s>Q&{3Zxk|8JHP-8JK};n3y#g7@2$-S=fQ< zfpSbhHH;uNY?=)0EWXUF97>GLK>aK%?F=l;K+M#^z|7piz{CQ?Y#mH299lu{PL5zl z0j>A;_Wn;xY~suP-y($Pzil)xR(nA5@x7v0aHDtMUDxt0V9~ zSQKIBj4Fozi<%jTvO`H2Rb77(!+)6mH9ZXfw@pQrC)Is}Mg96Ky#Me1mnSMr28)|% p;f~DaN&iDKOaA9|&G`T6(x$=NGKmg=2Z~!qU5JyBtc~$^v5Re68W;Rw| zW(FW;Wzk}0W@~3=W!7S1V%KD5WzuA3Vbx-0Wd+iVn#{}$zRb)(HB8K!%#2LFOf2j` z^*}i$pc+Py8a7R4b{1a-Rt_a5W}to+mUd|C%0#|J$ab%9HB8!J>Zs72f}M|H~5 { pub eagle: SpeciesMeta, pub snowyowl: SpeciesMeta, pub parrot: SpeciesMeta, + pub cockatrice: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -63,11 +65,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Eagle => &self.eagle, Species::Snowyowl => &self.snowyowl, Species::Parrot => &self.parrot, + Species::Cockatrice => &self.cockatrice, } } } -pub const ALL_SPECIES: [Species; 7] = [ +pub const ALL_SPECIES: [Species; 8] = [ Species::Duck, Species::Chicken, Species::Goose, @@ -75,6 +78,7 @@ pub const ALL_SPECIES: [Species; 7] = [ Species::Eagle, Species::Snowyowl, Species::Parrot, + Species::Cockatrice, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/voxygen/src/anim/bird_medium/mod.rs b/voxygen/src/anim/bird_medium/mod.rs index 576dd70c8f..9d561c477a 100644 --- a/voxygen/src/anim/bird_medium/mod.rs +++ b/voxygen/src/anim/bird_medium/mod.rs @@ -110,6 +110,7 @@ impl<'a> From<&'a comp::bird_medium::Body> for SkeletonAttr { (Eagle, _) => (2.5, 5.0), (Snowyowl, _) => (2.5, 5.0), (Parrot, _) => (0.5, 4.5), + (Cockatrice, _) => (3.0, 4.0), }, chest: match (body.species, body.body_type) { (Duck, _) => (0.0, 5.0), @@ -119,6 +120,7 @@ impl<'a> From<&'a comp::bird_medium::Body> for SkeletonAttr { (Eagle, _) => (0.0, 8.0), (Snowyowl, _) => (0.0, 4.5), (Parrot, _) => (0.0, 5.0), + (Cockatrice, _) => (0.0, 12.5), }, tail: match (body.species, body.body_type) { (Duck, _) => (-3.0, 1.5), @@ -128,6 +130,7 @@ impl<'a> From<&'a comp::bird_medium::Body> for SkeletonAttr { (Eagle, _) => (-8.0, -4.0), (Snowyowl, _) => (-6.0, -2.0), (Parrot, _) => (-8.0, -2.0), + (Cockatrice, _) => (-10.0, -2.5), }, wing: match (body.species, body.body_type) { (Duck, _) => (2.75, 0.0, 1.0), @@ -137,6 +140,7 @@ impl<'a> From<&'a comp::bird_medium::Body> for SkeletonAttr { (Eagle, _) => (3.0, -8.0, 4.0), (Snowyowl, _) => (3.5, -5.5, 4.0), (Parrot, _) => (2.0, -4.5, 3.0), + (Cockatrice, _) => (4.5, -2.5, 1.5), }, foot: match (body.species, body.body_type) { (Duck, _) => (2.0, -1.5, 4.0), @@ -146,6 +150,7 @@ impl<'a> From<&'a comp::bird_medium::Body> for SkeletonAttr { (Eagle, _) => (2.0, -2.0, 8.0), (Snowyowl, _) => (1.5, -2.5, 7.0), (Parrot, _) => (1.5, -3.0, 3.0), + (Cockatrice, _) => (4.0, -3.5, 12.0), }, } } From 9d6a7981ac86459e4ba51124862dba052c3675fe Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 9 May 2020 18:01:49 -0400 Subject: [PATCH 14/19] dragon and general animation cleanup --- .../voxel/biped_large_lateral_manifest.ron | 8 +- .../voxygen/voxel/dragon_center_manifest.ron | 8 +- .../voxygen/voxel/npc/ogre/female/foot_l.vox | Bin 2108 -> 1896 bytes .../voxygen/voxel/npc/ogre/female/foot_r.vox | Bin 2108 -> 1896 bytes assets/voxygen/voxel/npc/ogre/male/foot_l.vox | Bin 2108 -> 1896 bytes assets/voxygen/voxel/npc/ogre/male/foot_r.vox | Bin 2108 -> 1896 bytes .../voxygen/voxel/sprite/lianas/liana-0.vox | Bin 1504 -> 2308 bytes .../voxygen/voxel/sprite/lianas/liana-1.vox | Bin 1432 -> 1804 bytes common/src/npc.rs | 2 +- voxygen/src/anim/biped_large/mod.rs | 226 ++++++++---------- voxygen/src/anim/biped_large/run.rs | 4 +- voxygen/src/anim/character/alpha.rs | 46 +--- voxygen/src/anim/character/beta.rs | 6 - voxygen/src/anim/character/charge.rs | 19 +- voxygen/src/anim/character/roll.rs | 29 +-- voxygen/src/anim/character/run.rs | 7 +- voxygen/src/anim/character/shoot.rs | 15 +- voxygen/src/anim/character/sit.rs | 2 - voxygen/src/anim/character/swim.rs | 9 +- voxygen/src/anim/character/wield.rs | 16 +- voxygen/src/anim/dragon/fly.rs | 43 ++-- voxygen/src/anim/dragon/idle.rs | 66 ++--- voxygen/src/anim/dragon/mod.rs | 4 +- voxygen/src/anim/dragon/run.rs | 44 ++-- 24 files changed, 219 insertions(+), 335 deletions(-) diff --git a/assets/voxygen/voxel/biped_large_lateral_manifest.ron b/assets/voxygen/voxel/biped_large_lateral_manifest.ron index c160ae3bea..0bae9fb070 100644 --- a/assets/voxygen/voxel/biped_large_lateral_manifest.ron +++ b/assets/voxygen/voxel/biped_large_lateral_manifest.ron @@ -25,11 +25,11 @@ lateral: ("npc.ogre.male.leg_r"), ), foot_l: ( - offset: (-3.0, -5.0, -3.0), + offset: (-3.0, -5.0, -2.5), lateral: ("npc.ogre.male.foot_l"), ), foot_r: ( - offset: (-3.0, -5.0, -3.0), + offset: (-3.0, -5.0, -2.5), lateral: ("npc.ogre.male.foot_r"), ) ), @@ -59,11 +59,11 @@ lateral: ("npc.ogre.female.leg_r"), ), foot_l: ( - offset: (-3.0, -5.0, -3.0), + offset: (-3.0, -5.0, -2.5), lateral: ("npc.ogre.female.foot_l"), ), foot_r: ( - offset: (-3.0, -5.0, -3.0), + offset: (-3.0, -5.0, -2.5), lateral: ("npc.ogre.female.foot_r"), ) ), diff --git a/assets/voxygen/voxel/dragon_center_manifest.ron b/assets/voxygen/voxel/dragon_center_manifest.ron index af89c71348..3414c90782 100644 --- a/assets/voxygen/voxel/dragon_center_manifest.ron +++ b/assets/voxygen/voxel/dragon_center_manifest.ron @@ -21,11 +21,11 @@ center: ("npc.reddragon.male.chest_rear"), ), tail_front: ( - offset: (-2.5, -6.0, -3.5), + offset: (-2.5, -12.0, -3.5), center: ("npc.reddragon.male.tail_front"), ), tail_rear: ( - offset: (-3.5, -8.0, -3.0), + offset: (-3.5, -16.0, -3.0), center: ("npc.reddragon.male.tail_rear"), ) ), @@ -51,11 +51,11 @@ center: ("npc.reddragon.female.chest_rear"), ), tail_front: ( - offset: (-2.5, -6.0, -3.5), + offset: (-2.5, -12.0, -3.5), center: ("npc.reddragon.female.tail_front"), ), tail_rear: ( - offset: (-3.5, -8.0, -3.0), + offset: (-3.5, -16.0, -3.0), center: ("npc.reddragon.female.tail_rear"), ) ), diff --git a/assets/voxygen/voxel/npc/ogre/female/foot_l.vox b/assets/voxygen/voxel/npc/ogre/female/foot_l.vox index 04c0f4103d5e3336f120eec31fc38be922fdc73d..bb97d9fb06efb58a2805819b29d54eeff9f0684a 100644 GIT binary patch delta 760 zcmW-eJB}4W3`PC9?tVxkL_$tL4qG4~ctU^#h#Dp$t+1n4S+8LdR=^HOSpZ9685~p6 zQQ6le+hzZL_V?-e_2d1EA7=Lc&GiG9ec8=EUmxDywZqxq2^8Fad$_(#49*{jJ!Wn( z-F(V5{NjheEtV;!ww!s18Q@?QE71Z}+|oHx8tO->k)Vde5%?gmz^6chr0Hly;i5=o zu8Lg7ZQQx%H0APc$a4s?Gy^JWg#1qN;!W(Ia(X8e9XlO&=R7KpWXcOJeIfCNE-cg71kB&eaHLoqXTTwTp) z_N>9&r$e|O34+46@a2IX&iI`1`Ka)lC3>C&k^l%Q35bBug${xedQkwP&_PgzzVUuT z-_Su&o8O$#_>K+<0*@SV@s&+4{A9-2b7sE5QZs@Md->Rj%^eCF!Dc7X%j+ff?@5** hW*?BCE+A|OV<)}0&TD}m!**Y_`z?tT`mfiz(?4rVS$hBg delta 975 zcmXZbJ&x2s5XJGTdarB`0z^W-AsJ^N0BMBykdW}Qn~*x3$j;^vi?|3W2jU1MNc4zI*+6eBf`wqyOXWm%HgeKYYu#*F9${5R9H*R{wYt^T(K9UX!^hlKJyuBqAA65R66?IjXJ{xG)+a3MdFhBb+RX9D>ng(d11I z!DzCW$R~0LMw7+N^HC6dGZyS-dB`S;VitdW;$g7Sl z@~TxZx@r%Ri(KR|t}P0tU<#%HqfOpSfNF9W-Q*MZPvjFhjGl_EWRWvD1S899Ep=#U z8c4PfPPVgj-BeL7 z^jy2B)rs>2v(P&6rcdm@m%1c^RRv${frkVOF$X!_bmXn=Bk3U3YmY^Ca~PXW#-u~9 z!9C*MDD!5$CFwB|+hN@-}3laxO zBJ&96F&GD<*PNsBs4hsk2_7{QkrcxHMe^WGuAg#NUszNuD(=cT6!KB&BT3>x^8ff7 z3LE{$nOpUrMC^u87>fPz`>W@BW$Xz<2t59LckZ>a0YeB>-*_PoLye4upl9m+>TH_s zUSmkJkkW1l!FpInnYcy!MEkUbbsI@MPd1Vb2$5_Q8%4Z`Lx>_iNPrx~A;ciQaDE}a z5Qh+pZbfTqB@RO<=av^8ZvEgVJ$Cn*{w9xVn+p5!nJ06`EK>+`-X#0+`Vsr@xy%r~ hPZ;V1#T*&DNxxg)8)ofotU6-V&Fls7U$5(~{sDxMS#|&b delta 975 zcmXZbJ&x2s5XJGT_o{3U0z^W-AsJ^N0BMBykdW}Qn~*x3$j;^vi?|3W2jU1MNc4zI*+6eBf`wqyOXWm%H$&t8*DHMgGP!y1eB5x*un;eN~@`?K=@`)UYn8a4H$eA2MqExFF9U7Vj zk}X6g+bLf+$*hn)H3f6c=rRl8nseZ+Rmjmj4-=C8HiR4#6xVQY4tQ|!Jcaq}wPzhM zYZo=2I8R6x>JxAJ#Qx`^OQBg+^Til=NVAaSAXhaV)fQDp(LuS_7>n%YFgBfxNrzsW zd&Ir1;`?<3V~mj>LyRp{(+J-iKbGOmiPuCZc#PvS69`5wbW&U+$Lr&i3(c7*Y995) JKkogc{sMU@bguva diff --git a/assets/voxygen/voxel/npc/ogre/male/foot_l.vox b/assets/voxygen/voxel/npc/ogre/male/foot_l.vox index 04c0f4103d5e3336f120eec31fc38be922fdc73d..bb97d9fb06efb58a2805819b29d54eeff9f0684a 100644 GIT binary patch delta 760 zcmW-eJB}4W3`PC9?tVxkL_$tL4qG4~ctU^#h#Dp$t+1n4S+8LdR=^HOSpZ9685~p6 zQQ6le+hzZL_V?-e_2d1EA7=Lc&GiG9ec8=EUmxDywZqxq2^8Fad$_(#49*{jJ!Wn( z-F(V5{NjheEtV;!ww!s18Q@?QE71Z}+|oHx8tO->k)Vde5%?gmz^6chr0Hly;i5=o zu8Lg7ZQQx%H0APc$a4s?Gy^JWg#1qN;!W(Ia(X8e9XlO&=R7KpWXcOJeIfCNE-cg71kB&eaHLoqXTTwTp) z_N>9&r$e|O34+46@a2IX&iI`1`Ka)lC3>C&k^l%Q35bBug${xedQkwP&_PgzzVUuT z-_Su&o8O$#_>K+<0*@SV@s&+4{A9-2b7sE5QZs@Md->Rj%^eCF!Dc7X%j+ff?@5** hW*?BCE+A|OV<)}0&TD}m!**Y_`z?tT`mfiz(?4rVS$hBg delta 975 zcmXZbJ&x2s5XJGTdarB`0z^W-AsJ^N0BMBykdW}Qn~*x3$j;^vi?|3W2jU1MNc4zI*+6eBf`wqyOXWm%HgeKYYu#*F9${5R9H*R{wYt^T(K9UX!^hlKJyuBqAA65R66?IjXJ{xG)+a3MdFhBb+RX9D>ng(d11I z!DzCW$R~0LMw7+N^HC6dGZyS-dB`S;VitdW;$g7Sl z@~TxZx@r%Ri(KR|t}P0tU<#%HqfOpSfNF9W-Q*MZPvjFhjGl_EWRWvD1S899Ep=#U z8c4PfPPVgj-BeL7 z^jy2B)rs>2v(P&6rcdm@m%1c^RRv${frkVOF$X!_bmXn=Bk3U3YmY^Ca~PXW#-u~9 z!9C*MDD!5$CFwB|+hN@-}3laxO zBJ&96F&GD<*PNsBs4hsk2_7{QkrcxHMe^WGuAg#NUszNuD(=cT6!KB&BT3>x^8ff7 z3LE{$nOpUrMC^u87>fPz`>W@BW$Xz<2t59LckZ>a0YeB>-*_PoLye4upl9m+>TH_s zUSmkJkkW1l!FpInnYcy!MEkUbbsI@MPd1Vb2$5_Q8%4Z`Lx>_iNPrx~A;ciQaDE}a z5Qh+pZbfTqB@RO<=av^8ZvEgVJ$Cn*{w9xVn+p5!nJ06`EK>+`-X#0+`Vsr@xy%r~ hPZ;V1#T*&DNxxg)8)ofotU6-V&Fls7U$5(~{sDxMS#|&b delta 975 zcmXZbJ&x2s5XJGT_o{3U0z^W-AsJ^N0BMBykdW}Qn~*x3$j;^vi?|3W2jU1MNc4zI*+6eBf`wqyOXWm%H$&t8*DHMgGP!y1eB5x*un;eN~@`?K=@`)UYn8a4H$eA2MqExFF9U7Vj zk}X6g+bLf+$*hn)H3f6c=rRl8nseZ+Rmjmj4-=C8HiR4#6xVQY4tQ|!Jcaq}wPzhM zYZo=2I8R6x>JxAJ#Qx`^OQBg+^Til=NVAaSAXhaV)fQDp(LuS_7>n%YFgBfxNrzsW zd&Ir1;`?<3V~mj>LyRp{(+J-iKbGOmiPuCZc#PvS69`5wbW&U+$Lr&i3(c7*Y995) JKkogc{sMU@bguva diff --git a/assets/voxygen/voxel/sprite/lianas/liana-0.vox b/assets/voxygen/voxel/sprite/lianas/liana-0.vox index dc1c989d707641a49a21d011220638fa67a8178e..c7d3cba233b5b98f0a7ebece162dbe0adfdeec83 100644 GIT binary patch literal 2308 zcmeIy&2N-d6vy%NI~1(~r3i(>*r8=8<*k&LRw-h2T1q>#okHK34$xX9CWM%nus|0= zj0;T@< zQtK@<8_O4p1pBAnY_d=uT%W%1Sp&y=D9x4&_v#q%>5`djxFQ>>n7z7emcb5eM>Doz zE1IwcoAC-ZEz8a@uYfV;Zd@^Izy_?xI=qaRP>&b!0@k7qYv2%UMOGxwIL=}eBRGc% zOkxVt+^3Q2+qwU4}P0B72~VMD|0Mi0qB# zi0qT*iR_tJ1Ed9FS_kV&(mv_*k|*?wG{o;n{i9*VNd2G!W2FAj8OBKU)Cgmw`f8Lh z=pAW{F;Wkx$QY>?G|m{QCv=uE=n1DMoStxc!s!X8hE6S=nmV<0YV6e7sku{orw5!~ zaBAw**_C2HF^!3-=GE~4V|qZR_#M>W1?uYpwRVBJyFd@PKtH%ZZ@568xIoXiK>xTv zFS+O^QFl>yQFrx#{vof(De{S2B9F)+=8L(i&Z8e$yI8Z7`g9LEuowHV9|v#{oj8Op zdhRfe;3$qE-IqCHj+i6nh&f`8m?L^r^r)C4-U(^}=SrL}an8hf6X#BxKXDGlc@(`b zdY`;TUL&uO*T`$+wUoDdF0-7?ooGcHb|Ht|Xvb!3K@+xO8=A2lJCH$I6YnTxmM4b# z^Y-{%7PUSW!TY89&+o?@qte|FKXx|Mx-#N7iwAcsep-BV{gW5{QJ9M5!D8Ia7oPm9 z`u%p_hw*jq`?1(FU-SRwD<4PG+y}8~v{du|Vzb5Nti|=pD>NUojiQ)A IH{*=kLxzRQoB#j- delta 72 zcmZn>dcbWJ<{zOjje&u|*U{4tNHLsYWnc*QjB@1xae#msh#7%68Hghyqdez;I6#ob Ou+eH3{dB)be~8Gfbql@RI`)wX@R&TZy)VMDi zTfIcp6TSXXh<0h0_GpjV)TVvfrvo~mLpr1*I-+AbrV~1$Q#z#%b?DVvA=;!(+M+Gm zrfrYGVz6k3c4z@blu$+mRn$;N1D9)+0*WZ1j0&o#p^gU3UdC6+B8NOK`1k~p@KRjT z$RLXx@-R#1EXNRsnG;AN1@q1kj&XuhL~w?vFLHoGW~!#4jc6Eq*xx+NXO0B;9bfOd G9ry#)nrYVn delta 80 zcmeC-o55`v<{zOjje&u|*U{4tNHMgqGB5;tM!E8UI6%Mz#Ed}f1jG@MQJx_n4iJP) Wv@~I35IW7kAh@wul5rC=4+{VWR18)C diff --git a/common/src/npc.rs b/common/src/npc.rs index 97d42e9b43..2d5d72b5fc 100644 --- a/common/src/npc.rs +++ b/common/src/npc.rs @@ -93,7 +93,7 @@ pub fn kind_to_body(kind: NpcKind) -> Body { NpcKind::Ogre => comp::biped_large::Body::random().into(), NpcKind::Rat => comp::critter::Body::random().into(), NpcKind::StoneGolem => comp::golem::Body::random().into(), - NpcKind::Reddragon => comp::critter::Body::random().into(), + NpcKind::Reddragon => comp::dragon::Body::random().into(), } } diff --git a/voxygen/src/anim/biped_large/mod.rs b/voxygen/src/anim/biped_large/mod.rs index 8438ef999a..e8cc220218 100644 --- a/voxygen/src/anim/biped_large/mod.rs +++ b/voxygen/src/anim/biped_large/mod.rs @@ -1,114 +1,108 @@ -pub mod fly; pub mod idle; +pub mod jump; pub mod run; // Reexports -pub use self::{fly::FlyAnimation, idle::IdleAnimation, run::RunAnimation}; +pub use self::{idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation}; use super::{Bone, Skeleton}; use crate::render::FigureBoneData; use common::comp::{self}; -#[derive(Clone, Default)] -pub struct DragonSkeleton { - head_upper: Bone, - head_lower: Bone, - jaw: Bone, - chest_front: Bone, - chest_rear: Bone, - tail_front: Bone, - tail_rear: Bone, - wing_in_l: Bone, - wing_in_r: Bone, - wing_out_l: Bone, - wing_out_r: Bone, - foot_fl: Bone, - foot_fr: Bone, - foot_bl: Bone, - foot_br: Bone, +#[derive(Clone)] +pub struct BipedLargeSkeleton { + head: Bone, + upper_torso: Bone, + lower_torso: Bone, + shoulder_l: Bone, + shoulder_r: Bone, + hand_l: Bone, + hand_r: Bone, + leg_l: Bone, + leg_r: Bone, + foot_l: Bone, + foot_r: Bone, + torso: Bone, } -impl DragonSkeleton { - pub fn new() -> Self { Self::default() } +impl BipedLargeSkeleton { + pub fn new() -> Self { + Self { + head: Bone::default(), + upper_torso: Bone::default(), + lower_torso: Bone::default(), + shoulder_l: Bone::default(), + shoulder_r: Bone::default(), + hand_l: Bone::default(), + hand_r: Bone::default(), + leg_l: Bone::default(), + leg_r: Bone::default(), + foot_l: Bone::default(), + foot_r: Bone::default(), + torso: Bone::default(), + } + } } -impl Skeleton for DragonSkeleton { +impl Skeleton for BipedLargeSkeleton { type Attr = SkeletonAttr; - fn bone_count(&self) -> usize { 15 } + fn bone_count(&self) -> usize { 11 } fn compute_matrices(&self) -> [FigureBoneData; 16] { - let head_upper_mat = self.head_upper.compute_base_matrix(); - let head_lower_mat = self.head_lower.compute_base_matrix(); - let chest_front_mat = self.chest_front.compute_base_matrix(); - let chest_rear_mat = self.chest_rear.compute_base_matrix(); - let wing_in_l_mat = self.wing_in_l.compute_base_matrix(); - let wing_in_r_mat = self.wing_in_r.compute_base_matrix(); - let tail_front_mat = self.tail_front.compute_base_matrix(); + let upper_torso_mat = self.upper_torso.compute_base_matrix(); + let shoulder_l_mat = self.shoulder_l.compute_base_matrix(); + let shoulder_r_mat = self.shoulder_r.compute_base_matrix(); + let leg_l_mat = self.leg_l.compute_base_matrix(); + let leg_r_mat = self.leg_r.compute_base_matrix(); + let torso_mat = self.torso.compute_base_matrix(); [ - FigureBoneData::new(chest_front_mat * head_lower_mat * head_upper_mat), - FigureBoneData::new(chest_front_mat * head_lower_mat), + FigureBoneData::new(torso_mat * upper_torso_mat * self.head.compute_base_matrix()), + FigureBoneData::new(torso_mat * upper_torso_mat), FigureBoneData::new( - chest_front_mat * head_lower_mat * head_upper_mat * self.jaw.compute_base_matrix(), + torso_mat * upper_torso_mat * self.lower_torso.compute_base_matrix(), ), - FigureBoneData::new(chest_front_mat), - FigureBoneData::new(chest_front_mat * self.chest_rear.compute_base_matrix()), - FigureBoneData::new(chest_front_mat * chest_rear_mat * tail_front_mat), - FigureBoneData::new( - chest_front_mat - * chest_rear_mat - * tail_front_mat - * self.tail_rear.compute_base_matrix(), - ), - FigureBoneData::new(chest_front_mat * self.wing_in_l.compute_base_matrix()), - FigureBoneData::new(chest_front_mat * self.wing_in_r.compute_base_matrix()), - FigureBoneData::new( - chest_front_mat * wing_in_l_mat * self.wing_out_l.compute_base_matrix(), - ), - FigureBoneData::new( - chest_front_mat * wing_in_r_mat * self.wing_out_r.compute_base_matrix(), - ), - FigureBoneData::new(self.foot_fl.compute_base_matrix()), - FigureBoneData::new(self.foot_fr.compute_base_matrix()), - FigureBoneData::new(self.foot_bl.compute_base_matrix()), - FigureBoneData::new(self.foot_br.compute_base_matrix()), + FigureBoneData::new(torso_mat * upper_torso_mat * shoulder_l_mat), + FigureBoneData::new(torso_mat * upper_torso_mat * shoulder_r_mat), + FigureBoneData::new(torso_mat * upper_torso_mat * self.hand_l.compute_base_matrix()), + FigureBoneData::new(torso_mat * upper_torso_mat * self.hand_r.compute_base_matrix()), + FigureBoneData::new(torso_mat * upper_torso_mat * leg_l_mat), + FigureBoneData::new(torso_mat * upper_torso_mat * leg_r_mat), + FigureBoneData::new(self.foot_l.compute_base_matrix()), + FigureBoneData::new(self.foot_r.compute_base_matrix()), + FigureBoneData::default(), + FigureBoneData::default(), + FigureBoneData::default(), + FigureBoneData::default(), FigureBoneData::default(), ] } fn interpolate(&mut self, target: &Self, dt: f32) { - self.head_upper.interpolate(&target.head_upper, dt); - self.head_lower.interpolate(&target.head_lower, dt); - self.jaw.interpolate(&target.jaw, dt); - self.chest_front.interpolate(&target.chest_front, dt); - self.chest_rear.interpolate(&target.chest_rear, dt); - self.tail_front.interpolate(&target.tail_front, dt); - self.tail_rear.interpolate(&target.tail_rear, dt); - self.wing_in_l.interpolate(&target.wing_in_l, dt); - self.wing_in_r.interpolate(&target.wing_in_r, dt); - self.wing_out_l.interpolate(&target.wing_out_l, dt); - self.wing_out_r.interpolate(&target.wing_out_r, dt); - self.foot_fl.interpolate(&target.foot_fl, dt); - self.foot_fr.interpolate(&target.foot_fr, dt); - self.foot_bl.interpolate(&target.foot_bl, dt); - self.foot_br.interpolate(&target.foot_br, dt); + self.head.interpolate(&target.head, dt); + self.upper_torso.interpolate(&target.upper_torso, dt); + self.lower_torso.interpolate(&target.lower_torso, dt); + self.shoulder_l.interpolate(&target.shoulder_l, dt); + self.shoulder_r.interpolate(&target.shoulder_r, dt); + self.hand_l.interpolate(&target.hand_l, dt); + self.hand_r.interpolate(&target.hand_r, dt); + self.leg_l.interpolate(&target.leg_l, dt); + self.leg_r.interpolate(&target.leg_r, dt); + self.foot_l.interpolate(&target.foot_l, dt); + self.foot_r.interpolate(&target.foot_r, dt); + self.torso.interpolate(&target.torso, dt); } } pub struct SkeletonAttr { - head_upper: (f32, f32), - head_lower: (f32, f32), - jaw: (f32, f32), - chest_front: (f32, f32), - chest_rear: (f32, f32), - tail_front: (f32, f32), - tail_rear: (f32, f32), - wing_in: (f32, f32, f32), - wing_out: (f32, f32, f32), - feet_f: (f32, f32, f32), - feet_b: (f32, f32, f32), - height: f32, + head: (f32, f32), + upper_torso: (f32, f32), + lower_torso: (f32, f32), + shoulder: (f32, f32, f32), + hand: (f32, f32, f32), + leg: (f32, f32, f32), + foot: (f32, f32, f32), } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -116,7 +110,7 @@ impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { fn try_from(body: &'a comp::Body) -> Result { match body { - comp::Body::Dragon(body) => Ok(SkeletonAttr::from(body)), + comp::Body::BipedLarge(body) => Ok(SkeletonAttr::from(body)), _ => Err(()), } } @@ -125,61 +119,41 @@ impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { impl Default for SkeletonAttr { fn default() -> Self { Self { - head_upper: (0.0, 0.0), - head_lower: (0.0, 0.0), - jaw: (0.0, 0.0), - chest_front: (0.0, 0.0), - chest_rear: (0.0, 0.0), - tail_front: (0.0, 0.0), - tail_rear: (0.0, 0.0), - wing_in: (0.0, 0.0, 0.0), - wing_out: (0.0, 0.0, 0.0), - feet_f: (0.0, 0.0, 0.0), - feet_b: (0.0, 0.0, 0.0), - height: (0.0), + head: (0.0, 0.0), + upper_torso: (0.0, 0.0), + lower_torso: (0.0, 0.0), + shoulder: (0.0, 0.0, 0.0), + hand: (0.0, 0.0, 0.0), + leg: (0.0, 0.0, 0.0), + foot: (0.0, 0.0, 0.0), } } } -impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { - fn from(body: &'a comp::dragon::Body) -> Self { - use comp::dragon::Species::*; +impl<'a> From<&'a comp::biped_large::Body> for SkeletonAttr { + fn from(body: &'a comp::biped_large::Body) -> Self { + use comp::biped_large::Species::*; Self { - head_upper: match (body.species, body.body_type) { - (Reddragon, _) => (2.5, 4.5), + head: match (body.species, body.body_type) { + (Ogre, _) => (3.0, 6.0), }, - head_lower: match (body.species, body.body_type) { - (Reddragon, _) => (7.5, 3.5), + upper_torso: match (body.species, body.body_type) { + (Ogre, _) => (0.0, 19.0), }, - jaw: match (body.species, body.body_type) { - (Reddragon, _) => (7.0, -5.0), + lower_torso: match (body.species, body.body_type) { + (Ogre, _) => (1.0, -9.5), }, - chest_front: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 14.0), + shoulder: match (body.species, body.body_type) { + (Ogre, _) => (6.1, 0.5, 2.5), }, - chest_rear: match (body.species, body.body_type) { - (Reddragon, _) => (-12.5, 0.0), + hand: match (body.species, body.body_type) { + (Ogre, _) => (10.5, -1.0, -0.5), }, - tail_front: match (body.species, body.body_type) { - (Reddragon, _) => (-6.5, 1.5), + leg: match (body.species, body.body_type) { + (Ogre, _) => (0.0, 0.0, -6.0), }, - tail_rear: match (body.species, body.body_type) { - (Reddragon, _) => (-11.5, -1.0), - }, - wing_in: match (body.species, body.body_type) { - (Reddragon, _) => (2.5, -16.5, 0.0), - }, - wing_out: match (body.species, body.body_type) { - (Reddragon, _) => (23.0, 0.5, 4.0), - }, - feet_f: match (body.species, body.body_type) { - (Reddragon, _) => (6.0, 0.0, 1.5), - }, - feet_b: match (body.species, body.body_type) { - (Reddragon, _) => (6.0, -15.0, 3.0), - }, - height: match (body.species, body.body_type) { - (Reddragon, _) => (1.0), + foot: match (body.species, body.body_type) { + (Ogre, _) => (4.0, 0.5, 2.5), }, } } diff --git a/voxygen/src/anim/biped_large/run.rs b/voxygen/src/anim/biped_large/run.rs index 61a1596023..6927c85cbf 100644 --- a/voxygen/src/anim/biped_large/run.rs +++ b/voxygen/src/anim/biped_large/run.rs @@ -41,7 +41,7 @@ impl Animation for RunAnimation { * ((anim_time as f32 * lab as f32 + PI * 0.4).sin()); next.head.offset = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1) * 1.02; - next.head.ori = Quaternion::rotation_z(belt * -0.3) * Quaternion::rotation_x(0.3); + next.head.ori = Quaternion::rotation_z(belt * -0.3) * Quaternion::rotation_x(0.1); next.head.scale = Vec3::one() * 1.02; next.upper_torso.offset = Vec3::new( @@ -132,7 +132,7 @@ impl Animation for RunAnimation { next.foot_r.scale = Vec3::one() / 8.0 * 0.98; next.torso.offset = Vec3::new(0.0, 0.0, beltsnap * 0.25); - next.torso.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); + next.torso.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.13); next.torso.scale = Vec3::one(); next } diff --git a/voxygen/src/anim/character/alpha.rs b/voxygen/src/anim/character/alpha.rs index 42adecb5e5..ccd2498d73 100644 --- a/voxygen/src/anim/character/alpha.rs +++ b/voxygen/src/anim/character/alpha.rs @@ -68,11 +68,9 @@ impl Animation for AlphaAnimation { next.belt.offset = Vec3::new(0.0, skeleton_attr.belt.0, skeleton_attr.belt.1); next.belt.ori = next.chest.ori * -0.3; - next.belt.scale = Vec3::one(); next.shorts.offset = Vec3::new(0.0, skeleton_attr.shorts.0, skeleton_attr.shorts.1); next.shorts.ori = next.chest.ori * -0.45; - next.shorts.scale = Vec3::one(); next.l_hand.offset = Vec3::new(-0.25, -5.0, 1.0); next.l_hand.ori = Quaternion::rotation_x(1.27); @@ -84,7 +82,6 @@ impl Animation for AlphaAnimation { next.main.ori = Quaternion::rotation_x(-0.3) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(0.0); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(-10.0 + push * 5.0, 6.0 + push * 5.0, 2.0); next.control.ori = Quaternion::rotation_x(-1.4 + slow * 0.4) @@ -130,11 +127,9 @@ impl Animation for AlphaAnimation { next.belt.offset = Vec3::new(0.0, 0.0, -2.0); next.belt.ori = next.chest.ori * -0.2; - next.belt.scale = Vec3::one(); next.shorts.offset = Vec3::new(0.0, 0.0, -5.0); next.shorts.ori = next.chest.ori * -0.15; - next.shorts.scale = Vec3::one(); next.l_hand.offset = Vec3::new(-4.0, 3.0, 2.0); next.l_hand.ori = Quaternion::rotation_x(-0.3) @@ -150,7 +145,6 @@ impl Animation for AlphaAnimation { next.main.ori = Quaternion::rotation_x(1.27) * Quaternion::rotation_y(-0.3) * Quaternion::rotation_z(-0.8); - next.main.scale = Vec3::one(); next.lantern.ori = Quaternion::rotation_x(slowax * -0.7 + 0.4) * Quaternion::rotation_y(slowax * 0.4); @@ -174,10 +168,7 @@ impl Animation for AlphaAnimation { next.r_hand.ori = Quaternion::rotation_x(1.27); next.r_hand.scale = Vec3::one() * 1.05; next.main.offset = Vec3::new(0.0, 6.0, -1.0); - next.main.ori = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(0.0); - next.main.scale = Vec3::one(); + next.main.ori = Quaternion::rotation_x(-0.3); next.head.offset = Vec3::new(0.0, -2.0 + skeleton_attr.head.0, skeleton_attr.head.1); next.head.ori = Quaternion::rotation_z(slower * 0.05) @@ -189,23 +180,18 @@ impl Animation for AlphaAnimation { next.chest.ori = Quaternion::rotation_z(slower * 0.2) * Quaternion::rotation_x(0.0 + slower * 0.2) * Quaternion::rotation_y(slower * 0.2); - next.chest.scale = Vec3::one(); next.belt.offset = Vec3::new(0.0, 0.0, -2.0); next.belt.ori = next.chest.ori * -0.2; - next.belt.scale = Vec3::one(); next.shorts.offset = Vec3::new(0.0, 0.0, -5.0); next.shorts.ori = next.chest.ori * -0.15; - next.shorts.scale = Vec3::one(); next.lantern.ori = Quaternion::rotation_x(slower * -0.7 + 0.4) * Quaternion::rotation_y(slower * 0.4); next.torso.offset = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; - next.torso.ori = Quaternion::rotation_z(0.0) - * Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(0.0); + next.torso.ori = Quaternion::rotation_z(0.0); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; if velocity > 0.5 { @@ -232,9 +218,7 @@ impl Animation for AlphaAnimation { * Quaternion::rotation_z((slower * 0.5).max(0.0)); next.r_foot.scale = Vec3::one(); next.torso.offset = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; - next.torso.ori = Quaternion::rotation_z(0.0) - * Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(0.0); + next.torso.ori = Quaternion::rotation_z(0.0); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; } @@ -245,9 +229,7 @@ impl Animation for AlphaAnimation { next.control.scale = Vec3::one(); next.torso.offset = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; - next.torso.ori = Quaternion::rotation_z(0.0) - * Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(0.0); + next.torso.ori = Quaternion::rotation_z(0.0); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; }, Some(ToolKind::Staff(_)) => { @@ -272,7 +254,6 @@ impl Animation for AlphaAnimation { next.shorts.ori = Quaternion::rotation_z(decel * -0.08) * Quaternion::rotation_x(0.0 + decel * -0.08) * Quaternion::rotation_y(decel * 0.08); - next.shorts.scale = Vec3::one(); next.l_hand.offset = Vec3::new(0.0, 1.0, 0.0); next.l_hand.ori = Quaternion::rotation_x(1.27); next.l_hand.scale = Vec3::one() * 1.05; @@ -281,7 +262,6 @@ impl Animation for AlphaAnimation { next.r_hand.scale = Vec3::one() * 1.05; next.main.offset = Vec3::new(0.0, 6.0, -4.0); next.main.ori = Quaternion::rotation_x(-0.3); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(-8.0 - slow * 1.0, 3.0 - slow * 5.0, 0.0); next.control.ori = Quaternion::rotation_x(-1.2) @@ -306,19 +286,16 @@ impl Animation for AlphaAnimation { next.chest.ori = Quaternion::rotation_z(decel * -0.2) * Quaternion::rotation_x(0.0 + decel * -0.2) * Quaternion::rotation_y(decel * 0.2); - next.chest.scale = Vec3::one(); next.belt.offset = Vec3::new(0.0, 0.0, 5.0); next.belt.ori = Quaternion::rotation_z(decel * -0.1) * Quaternion::rotation_x(0.0 + decel * -0.1) * Quaternion::rotation_y(decel * 0.1); - next.belt.scale = Vec3::one(); next.shorts.offset = Vec3::new(0.0, 0.0, 2.0); next.belt.ori = Quaternion::rotation_z(decel * -0.08) * Quaternion::rotation_x(0.0 + decel * -0.08) * Quaternion::rotation_y(decel * 0.08); - next.shorts.scale = Vec3::one(); next.l_hand.offset = Vec3::new(-8.0 + accel_slow * 10.0, 8.0 + accel_fast * 3.0, 0.0); next.l_hand.ori = Quaternion::rotation_z(-0.8) @@ -337,7 +314,6 @@ impl Animation for AlphaAnimation { next.main.ori = Quaternion::rotation_z(-0.8) * Quaternion::rotation_x(0.0 + accel_med * -0.8) * Quaternion::rotation_y(0.0 + accel_med * -0.4); - next.main.scale = Vec3::one(); next.torso.offset = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; }, @@ -358,15 +334,15 @@ impl Animation for AlphaAnimation { next.l_hand.offset = Vec3::new(-8.0 + accel_slow * 10.0, 8.0 + accel_fast * 3.0, 0.0); next.l_hand.ori = Quaternion::rotation_z(-0.8) - * Quaternion::rotation_x(0.0 + accel_med * -0.8) - * Quaternion::rotation_y(0.0 + accel_med * -0.4); + * Quaternion::rotation_x(accel_med * -0.8) + * Quaternion::rotation_y(accel_med * -0.4); next.l_hand.scale = Vec3::one() * 1.01; next.r_hand.offset = Vec3::new(-8.0 + accel_slow * 10.0, 8.0 + accel_fast * 3.0, -2.0); next.r_hand.ori = Quaternion::rotation_z(-0.8) - * Quaternion::rotation_x(0.0 + accel_med * -0.8) - * Quaternion::rotation_y(0.0 + accel_med * -0.4); + * Quaternion::rotation_x(accel_med * -0.8) + * Quaternion::rotation_y(accel_med * -0.4); next.r_hand.scale = Vec3::one() * 1.01; next.main.offset = Vec3::new(-8.0 + accel_slow * 10.0, 8.0 + accel_fast * 3.0, 0.0); @@ -386,17 +362,11 @@ impl Animation for AlphaAnimation { skeleton_attr.lantern.2, ); next.lantern.scale = Vec3::one() * 0.65; - next.l_shoulder.scale = Vec3::one() * 1.1; - next.r_shoulder.scale = Vec3::one() * 1.1; - next.glider.offset = Vec3::new(0.0, 0.0, 10.0); - next.glider.scale = Vec3::one() * 0.0; - next.l_control.scale = Vec3::one(); - next.r_control.scale = Vec3::one(); next } diff --git a/voxygen/src/anim/character/beta.rs b/voxygen/src/anim/character/beta.rs index 4cd099e1cf..edcc59f6f5 100644 --- a/voxygen/src/anim/character/beta.rs +++ b/voxygen/src/anim/character/beta.rs @@ -52,19 +52,16 @@ impl Animation for BetaAnimation { next.chest.ori = Quaternion::rotation_z(slow * 0.2) * Quaternion::rotation_x(slow * 0.2) * Quaternion::rotation_y(slow * -0.1); - next.chest.scale = Vec3::one(); next.belt.offset = Vec3::new(0.0, 0.0, -2.0); next.belt.ori = Quaternion::rotation_z(slow * 0.1) * Quaternion::rotation_x(slow * 0.1) * Quaternion::rotation_y(slow * -0.04); - next.belt.scale = Vec3::one(); next.shorts.offset = Vec3::new(0.0, 0.0, -5.0); next.shorts.ori = Quaternion::rotation_z(slow * 0.1) * Quaternion::rotation_x(slow * 0.1) * Quaternion::rotation_y(slow * -0.05); - next.shorts.scale = Vec3::one(); next.l_hand.offset = Vec3::new(0.0, 1.0, 0.0); next.l_hand.ori = Quaternion::rotation_x(1.27); @@ -74,7 +71,6 @@ impl Animation for BetaAnimation { next.r_hand.scale = Vec3::one() * 1.05; next.main.offset = Vec3::new(0.0, 6.0, -1.0); next.main.ori = Quaternion::rotation_x(-0.3); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(-8.0 + slow * 1.5, 1.5 + slow * 1.0, 0.0); next.control.ori = Quaternion::rotation_x(-1.4) @@ -84,12 +80,10 @@ impl Animation for BetaAnimation { next.l_foot.offset = Vec3::new(-3.4, footquick * -9.5, 8.0); next.l_foot.ori = Quaternion::rotation_x(footquick * 0.3) * Quaternion::rotation_y(footquick * -0.6); - next.l_foot.scale = Vec3::one(); next.r_foot.offset = Vec3::new(3.4, footquick * 9.5, 8.0); next.r_foot.ori = Quaternion::rotation_x(footquick * -0.3) * Quaternion::rotation_y(footquick * 0.2); - next.r_foot.scale = Vec3::one(); next.torso.offset = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; }, diff --git a/voxygen/src/anim/character/charge.rs b/voxygen/src/anim/character/charge.rs index 9ad1c25605..8dc41c0189 100644 --- a/voxygen/src/anim/character/charge.rs +++ b/voxygen/src/anim/character/charge.rs @@ -58,18 +58,13 @@ impl Animation for ChargeAnimation { next.head.scale = Vec3::one() * skeleton_attr.head_scale; next.chest.offset = Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1); - next.chest.ori = Quaternion::rotation_z(stop * 1.2 + stress * stop * 0.02) - * Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(0.0); - next.chest.scale = Vec3::one(); + next.chest.ori = Quaternion::rotation_z(stop * 1.2 + stress * stop * 0.02); next.belt.offset = Vec3::new(0.0, skeleton_attr.belt.0, skeleton_attr.belt.1); next.belt.ori = Quaternion::rotation_z(stop * -0.5); - next.belt.scale = Vec3::one(); next.shorts.offset = Vec3::new(0.0, skeleton_attr.shorts.0, skeleton_attr.shorts.1); next.shorts.ori = Quaternion::rotation_z(stop * -0.7); - next.shorts.scale = Vec3::one(); match active_tool_kind { //TODO: Inventory @@ -86,7 +81,6 @@ impl Animation for ChargeAnimation { next.main.ori = Quaternion::rotation_x(-0.3) * Quaternion::rotation_y(3.14 + 0.3) * Quaternion::rotation_z(0.9); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new( -7.0 + quick * 3.5 * (1.0 / (stopa + 0.1)), @@ -112,7 +106,6 @@ impl Animation for ChargeAnimation { next.main.ori = Quaternion::rotation_x(-0.3) * Quaternion::rotation_y(0.3) * Quaternion::rotation_z(-0.6); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(-9.0 + stop * 13.0, 6.0 + stop * 4.0, 8.0); next.control.ori = Quaternion::rotation_x(0.0) @@ -127,19 +120,15 @@ impl Animation for ChargeAnimation { next.l_foot.ori = Quaternion::rotation_x(foote * -0.1) * Quaternion::rotation_z(0.4) * Quaternion::rotation_y(0.15); - next.l_foot.scale = Vec3::one(); next.r_foot.offset = Vec3::new(3.4 + foot * 1.5, foote * -1.5, 8.0); next.r_foot.ori = Quaternion::rotation_x(0.0) * Quaternion::rotation_z(0.4) * Quaternion::rotation_y(0.0); - next.r_foot.scale = Vec3::one(); next.torso.offset = Vec3::new(0.0 + foot * 0.03, foote * 0.05, 0.1) * skeleton_attr.scaler; - next.torso.ori = Quaternion::rotation_z(0.0) - * Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(0.0); + next.torso.ori = Quaternion::rotation_z(0.0); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; } else { next.l_foot.offset = Vec3::new(-3.4, -2.5 + stop * -1.3, 8.0); @@ -153,9 +142,7 @@ impl Animation for ChargeAnimation { Quaternion::rotation_x(stop * 0.1) * Quaternion::rotation_z(stop * 0.1); next.r_foot.scale = Vec3::one(); next.torso.offset = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; - next.torso.ori = Quaternion::rotation_z(0.0) - * Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(0.0); + next.torso.ori = Quaternion::rotation_z(0.0); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; } next.back.offset = Vec3::new(0.0, skeleton_attr.back.0, skeleton_attr.back.1); diff --git a/voxygen/src/anim/character/roll.rs b/voxygen/src/anim/character/roll.rs index c37500335c..59fc5c6e2b 100644 --- a/voxygen/src/anim/character/roll.rs +++ b/voxygen/src/anim/character/roll.rs @@ -41,10 +41,10 @@ impl Animation for RollAnimation { next.head.offset = Vec3::new( 0.0, - -2.0 + skeleton_attr.head.0, - skeleton_attr.head.1 + wave_dub * -8.0, + -2.0 + skeleton_attr.head.0 + 3.0, + skeleton_attr.head.1 - 2.0, ); - next.head.ori = Quaternion::rotation_x(wave_dub * 0.4); + next.head.ori = Quaternion::rotation_x(wave_dub * -0.8); next.head.scale = Vec3::one(); next.chest.offset = Vec3::new( @@ -57,19 +57,17 @@ impl Animation for RollAnimation { next.belt.offset = Vec3::new( 0.0, - skeleton_attr.belt.0, - skeleton_attr.belt.0 + wave_dub * -3.0, + skeleton_attr.belt.0 + 2.0, + skeleton_attr.belt.1 + 2.0, ); - next.belt.ori = Quaternion::rotation_x(0.0 + wave_dub * 0.4); - next.belt.scale = Vec3::one(); + next.belt.ori = Quaternion::rotation_x(0.0 + wave_dub * 0.8); next.shorts.offset = Vec3::new( 0.0, - skeleton_attr.shorts.0, - skeleton_attr.shorts.0 + wave_dub * -2.0, + skeleton_attr.shorts.0 + 2.0, + skeleton_attr.shorts.1 + 3.0, ); - next.shorts.ori = Quaternion::rotation_x(0.0 + wave_dub * 0.4); - next.shorts.scale = Vec3::one(); + next.shorts.ori = Quaternion::rotation_x(0.0 + wave_dub * 0.8); next.l_hand.offset = Vec3::new( -skeleton_attr.chest.0 + wave * -0.5, @@ -88,23 +86,20 @@ impl Animation for RollAnimation { ); next.r_hand.ori = Quaternion::rotation_x(wave_slow * 6.5) * Quaternion::rotation_y(wave * 0.3); - next.r_hand.scale = Vec3::one(); next.l_foot.offset = Vec3::new( -skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2 + wave_dub * -1.2 + wave_slow * 4.0, + skeleton_attr.foot.2 + wave_dub * -1.2, ); next.l_foot.ori = Quaternion::rotation_x(wave * 0.6); - next.l_foot.scale = Vec3::one(); next.r_foot.offset = Vec3::new( skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2 + wave_dub * -1.0 + wave_slow * 4.0, + skeleton_attr.foot.2 + wave_dub * -1.0, ); next.r_foot.ori = Quaternion::rotation_x(wave * -0.4); - next.r_foot.scale = Vec3::one(); next.l_shoulder.offset = Vec3::new( -skeleton_attr.shoulder.0, @@ -141,7 +136,7 @@ impl Animation for RollAnimation { next.lantern.scale = Vec3::one() * 0.65; next.torso.offset = - Vec3::new(0.0, 0.0, 0.1 + wave_dub * 16.0) / 11.0 * skeleton_attr.scaler; + Vec3::new(0.0, 0.0, 0.0 + wave_dub * 16.0) / 11.0 * skeleton_attr.scaler; next.torso.ori = Quaternion::rotation_x(wave_slow * 6.5) * Quaternion::rotation_y(tilt); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; diff --git a/voxygen/src/anim/character/run.rs b/voxygen/src/anim/character/run.rs index b2d8d9384a..ecb067f751 100644 --- a/voxygen/src/anim/character/run.rs +++ b/voxygen/src/anim/character/run.rs @@ -26,11 +26,6 @@ impl Animation for RunAnimation { let lower = if speed > 5.0 { 0.0 } else { 1.0 }; let snapfoot = if speed > 5.0 { 1.1 } else { 2.0 }; let lab = 1.0; - let long = (((5.0) - / (1.5 + 3.5 * ((anim_time as f32 * lab as f32 * 8.0 * walk).sin()).powf(2.0 as f32))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 8.0 * walk).sin()); - let short = (((5.0) / (1.5 + 3.5 * ((anim_time as f32 * lab as f32 * 16.0 * walk).sin()).powf(2.0 as f32))) @@ -94,7 +89,7 @@ impl Animation for RunAnimation { -3.0 + skeleton_attr.head.0, -1.0 + skeleton_attr.head.1 + short * 0.1, ); - next.head.ori = Quaternion::rotation_z(head_look.x + long * -0.1 - short * 0.1) + next.head.ori = Quaternion::rotation_z(head_look.x - short * 0.1) * Quaternion::rotation_x(head_look.y + 0.35); next.head.scale = Vec3::one() * skeleton_attr.head_scale; diff --git a/voxygen/src/anim/character/shoot.rs b/voxygen/src/anim/character/shoot.rs index 8a59399797..e9b2a961a1 100644 --- a/voxygen/src/anim/character/shoot.rs +++ b/voxygen/src/anim/character/shoot.rs @@ -46,11 +46,9 @@ impl Animation for ShootAnimation { next.chest.ori = Quaternion::rotation_z(0.4 + exp * 1.0) * Quaternion::rotation_x(0.0 + exp * 0.2) * Quaternion::rotation_y(exp * -0.08); - next.chest.scale = Vec3::one(); next.belt.offset = Vec3::new(0.0, skeleton_attr.belt.0 + exp * 1.0, skeleton_attr.belt.1); next.belt.ori = next.chest.ori * -0.1; - next.belt.scale = Vec3::one(); next.shorts.offset = Vec3::new( 0.0, @@ -58,7 +56,6 @@ impl Animation for ShootAnimation { skeleton_attr.shorts.1, ); next.shorts.ori = next.chest.ori * -0.08; - next.shorts.scale = Vec3::one(); match active_tool_kind { //TODO: Inventory @@ -75,7 +72,6 @@ impl Animation for ShootAnimation { next.main.ori = Quaternion::rotation_x(-0.3) * Quaternion::rotation_y(3.14 + 0.3) * Quaternion::rotation_z(0.9); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(-7.0, 6.0, 6.0 - exp * 5.0); next.control.ori = Quaternion::rotation_x(exp * 1.3) @@ -98,7 +94,6 @@ impl Animation for ShootAnimation { next.main.ori = Quaternion::rotation_x(-0.3) * Quaternion::rotation_y(0.3) * Quaternion::rotation_z(-0.6); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(-9.0, 6.0, 8.0); next.control.ori = Quaternion::rotation_x(exp * 0.4) @@ -123,23 +118,17 @@ impl Animation for ShootAnimation { * Quaternion::rotation_y(0.0); next.r_foot.scale = Vec3::one(); next.torso.offset = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; - next.torso.ori = Quaternion::rotation_z(0.0) - * Quaternion::rotation_x(-0.15) - * Quaternion::rotation_y(0.0); + next.torso.ori = Quaternion::rotation_x(-0.15); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; } else { next.l_foot.offset = Vec3::new(-3.4, -2.5, 8.0 + exp * 2.5); next.l_foot.ori = Quaternion::rotation_x(exp * -0.2 - 0.2) * Quaternion::rotation_z(exp * 1.0); - next.l_foot.scale = Vec3::one(); next.r_foot.offset = Vec3::new(3.4, 3.5 - exp * 2.0, 8.0); next.r_foot.ori = Quaternion::rotation_x(exp * 0.1) * Quaternion::rotation_z(exp * 0.5); - next.r_foot.scale = Vec3::one(); next.torso.offset = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; - next.torso.ori = Quaternion::rotation_z(0.0) - * Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(0.0); + next.torso.ori = Quaternion::rotation_z(0.0); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; } next.back.offset = Vec3::new(0.0, -2.8, 7.25); diff --git a/voxygen/src/anim/character/sit.rs b/voxygen/src/anim/character/sit.rs index ff02bc3a86..29c2a4d4c1 100644 --- a/voxygen/src/anim/character/sit.rs +++ b/voxygen/src/anim/character/sit.rs @@ -89,7 +89,6 @@ impl Animation for SitAnimation { skeleton_attr.foot.2, ); next.l_foot.ori = Quaternion::rotation_x(slow * 0.1 + stop * 1.2 + slow * 0.1); - next.l_foot.scale = Vec3::one(); next.r_foot.offset = Vec3::new( skeleton_attr.foot.0, @@ -97,7 +96,6 @@ impl Animation for SitAnimation { skeleton_attr.foot.2, ); next.r_foot.ori = Quaternion::rotation_x(slowa * 0.1 + stop * 1.2 + slowa * 0.1); - next.r_foot.scale = Vec3::one(); next.l_shoulder.offset = Vec3::new( -skeleton_attr.shoulder.0, diff --git a/voxygen/src/anim/character/swim.rs b/voxygen/src/anim/character/swim.rs index 233bec9297..76d283ba83 100644 --- a/voxygen/src/anim/character/swim.rs +++ b/voxygen/src/anim/character/swim.rs @@ -59,11 +59,9 @@ impl Animation for SwimAnimation { skeleton_attr.chest.1 + short * 1.3, ); next.chest.ori = Quaternion::rotation_z(short * 0.4); - next.chest.scale = Vec3::one(); next.belt.offset = Vec3::new(0.0, skeleton_attr.belt.0, skeleton_attr.belt.1); next.belt.ori = Quaternion::rotation_z(short * 0.30); - next.belt.scale = Vec3::one(); next.back.offset = Vec3::new(0.0, skeleton_attr.back.0, skeleton_attr.back.1); next.back.ori = Quaternion::rotation_z(0.0); @@ -71,7 +69,6 @@ impl Animation for SwimAnimation { next.shorts.offset = Vec3::new(0.0, skeleton_attr.shorts.0, skeleton_attr.shorts.1); next.shorts.ori = Quaternion::rotation_z(short * 0.5); - next.shorts.scale = Vec3::one(); next.l_hand.offset = Vec3::new( -skeleton_attr.hand.0, @@ -79,7 +76,6 @@ impl Animation for SwimAnimation { skeleton_attr.hand.2 + foot * -3.0, ); next.l_hand.ori = Quaternion::rotation_x(0.8 + foot * -0.6) * Quaternion::rotation_y(0.2); - next.l_hand.scale = Vec3::one(); next.r_hand.offset = Vec3::new( skeleton_attr.hand.0, @@ -87,7 +83,6 @@ impl Animation for SwimAnimation { skeleton_attr.hand.2 + foot * 3.0, ); next.r_hand.ori = Quaternion::rotation_x(0.8 + foot * 0.6) * Quaternion::rotation_y(-0.2); - next.r_hand.scale = Vec3::one(); next.l_foot.offset = Vec3::new( -skeleton_attr.foot.0, @@ -95,7 +90,6 @@ impl Animation for SwimAnimation { -5.0 + skeleton_attr.foot.2 + foot * 6.5, ); next.l_foot.ori = Quaternion::rotation_x(-1.40 + foot * 0.6); - next.l_foot.scale = Vec3::one(); next.r_foot.offset = Vec3::new( skeleton_attr.foot.0, @@ -103,7 +97,6 @@ impl Animation for SwimAnimation { -5.0 + skeleton_attr.foot.2 + foot * -6.5, ); next.r_foot.ori = Quaternion::rotation_x(-1.40 + foot * -0.6); - next.r_foot.scale = Vec3::one(); next.l_shoulder.offset = Vec3::new( -skeleton_attr.shoulder.0, @@ -140,7 +133,7 @@ impl Animation for SwimAnimation { next.torso.offset = Vec3::new(0.0, -0.3 + shortalt * -0.065, 0.4) * skeleton_attr.scaler; next.torso.ori = - Quaternion::rotation_x(speed * -0.190 * wave_stop * 1.05) * Quaternion::rotation_y(0.0); + Quaternion::rotation_x(speed * -0.190 * wave_stop * 1.05); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; next.control.scale = Vec3::one(); diff --git a/voxygen/src/anim/character/wield.rs b/voxygen/src/anim/character/wield.rs index cd426e5b46..c9dbb59d3f 100644 --- a/voxygen/src/anim/character/wield.rs +++ b/voxygen/src/anim/character/wield.rs @@ -76,15 +76,12 @@ impl Animation for WieldAnimation { next.l_foot.offset = Vec3::new(-3.4, -2.5, 9.0); next.l_foot.ori = Quaternion::rotation_x(ultra_slow_cos * 0.035 - 0.2); - next.l_foot.scale = Vec3::one(); next.r_foot.offset = Vec3::new(3.4, 3.5, 9.0); next.r_foot.ori = Quaternion::rotation_x(ultra_slow * 0.035); - next.r_foot.scale = Vec3::one(); next.chest.ori = Quaternion::rotation_y(ultra_slow_cos * 0.04) * Quaternion::rotation_z(0.15); - next.chest.scale = Vec3::one(); next.belt.offset = Vec3::new(0.0, skeleton_attr.belt.0, skeleton_attr.belt.1); next.belt.ori = @@ -96,22 +93,20 @@ impl Animation for WieldAnimation { next.back.scale = Vec3::one() * 1.02; next.shorts.offset = Vec3::new(0.0, skeleton_attr.shorts.0, skeleton_attr.shorts.1); next.shorts.ori = Quaternion::rotation_z(0.3); - next.shorts.scale = Vec3::one(); } match active_tool_kind { //TODO: Inventory Some(ToolKind::Sword(_)) => { - next.l_hand.offset = Vec3::new(-0.25, -5.0, -5.0); + next.l_hand.offset = Vec3::new(-0.25, -5.0, -2.0); next.l_hand.ori = Quaternion::rotation_x(1.47) * Quaternion::rotation_y(-0.2); next.l_hand.scale = Vec3::one() * 1.04; - next.r_hand.offset = Vec3::new(1.25, -5.5, -8.0); + next.r_hand.offset = Vec3::new(1.25, -5.5, -5.0); next.r_hand.ori = Quaternion::rotation_x(1.47) * Quaternion::rotation_y(0.3); next.r_hand.scale = Vec3::one() * 1.05; - next.main.offset = Vec3::new(0.0, 0.0, -6.0); + next.main.offset = Vec3::new(0.0, 0.0, -3.0); next.main.ori = Quaternion::rotation_x(-0.1) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(0.0); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(-7.0, 6.0, 6.0); next.control.ori = Quaternion::rotation_x(ultra_slow * 0.15) @@ -134,7 +129,6 @@ impl Animation for WieldAnimation { next.main.ori = Quaternion::rotation_x(1.27) * Quaternion::rotation_y(-0.3) * Quaternion::rotation_z(-0.8); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(0.0, 0.0, 0.0); next.control.ori = Quaternion::rotation_x(ultra_slow_cos * 0.1 + 0.2) @@ -153,7 +147,6 @@ impl Animation for WieldAnimation { next.main.ori = Quaternion::rotation_x(0.3) * Quaternion::rotation_y(-1.35) * Quaternion::rotation_z(1.57); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(0.0, 0.0, 0.0); next.control.ori = Quaternion::rotation_x(ultra_slow * 0.15) @@ -174,7 +167,6 @@ impl Animation for WieldAnimation { next.main.ori = Quaternion::rotation_x(-0.3) * Quaternion::rotation_y(3.14 + 0.3) * Quaternion::rotation_z(0.9); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(-14.0, 1.8, 3.0); next.control.ori = Quaternion::rotation_x(ultra_slow * 0.2) @@ -210,7 +202,6 @@ impl Animation for WieldAnimation { next.main.ori = Quaternion::rotation_x(-0.3) * Quaternion::rotation_y(0.3) * Quaternion::rotation_z(-0.6); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(-7.0, 6.0, 6.0); next.control.ori = Quaternion::rotation_x(ultra_slow * 0.2) @@ -252,7 +243,6 @@ impl Animation for WieldAnimation { next.main.ori = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(3.14) * Quaternion::rotation_z(0.0); - next.main.scale = Vec3::one(); next.control.offset = Vec3::new(-11.0 + slow * 2.0, 1.8, 4.0); next.control.ori = Quaternion::rotation_x(ultra_slow * 0.1) diff --git a/voxygen/src/anim/dragon/fly.rs b/voxygen/src/anim/dragon/fly.rs index d6a5698bc7..b79fb38697 100644 --- a/voxygen/src/anim/dragon/fly.rs +++ b/voxygen/src/anim/dragon/fly.rs @@ -21,7 +21,6 @@ impl Animation for FlyAnimation { let wave_ultra_slow = (anim_time as f32 * 1.0 + PI).sin(); let wave_ultra_slow_cos = (anim_time as f32 * 3.0 + PI).cos(); - //let wave_slow = (anim_time as f32 * 4.5).sin(); let wave_slow = (anim_time as f32 * 3.5 + PI).sin(); let wingl = (anim_time as f32 * 2.0 + PI).sin(); @@ -37,19 +36,19 @@ impl Animation for FlyAnimation { 0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1 + wave_ultra_slow * 0.20, - ) * 1.05; + ); next.head_upper.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(wave_ultra_slow * -0.10); - next.head_upper.scale = Vec3::one() * 1.05; + next.head_upper.scale = Vec3::one(); next.head_lower.offset = Vec3::new( 0.0, skeleton_attr.head_lower.0, skeleton_attr.head_lower.1 + wave_ultra_slow * 0.20, - ) * 1.05; + ); next.head_lower.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(wave_ultra_slow * -0.10); - next.head_lower.scale = Vec3::one() * 1.05; + next.head_lower.scale = Vec3::one(); next.jaw.offset = Vec3::new( 0.0, @@ -65,7 +64,7 @@ impl Animation for FlyAnimation { skeleton_attr.tail_front.1 + centeroffset * 0.6, ); next.tail_front.ori = Quaternion::rotation_x(center * 0.03); - next.tail_front.scale = Vec3::one(); + next.tail_front.scale = Vec3::one()*0.98; next.tail_rear.offset = Vec3::new( 0.0, @@ -73,55 +72,55 @@ impl Animation for FlyAnimation { skeleton_attr.tail_rear.1 + centeroffset * 0.6, ); next.tail_rear.ori = Quaternion::rotation_x(center * 0.03); - next.tail_rear.scale = Vec3::one(); + next.tail_rear.scale = Vec3::one()*0.98; next.chest_front.offset = Vec3::new( 0.0, skeleton_attr.chest_front.0, skeleton_attr.chest_front.1, - ) * 1.05; + ); next.chest_front.ori = Quaternion::rotation_y(center * 0.05); - next.chest_front.scale = Vec3::one() * 1.05; + next.chest_front.scale = Vec3::one(); next.chest_rear.offset = Vec3::new( 0.0, skeleton_attr.chest_rear.0, skeleton_attr.chest_rear.1, - ) * 1.05; + ); next.chest_rear.ori = Quaternion::rotation_y(center * 0.05); - next.chest_rear.scale = Vec3::one() * 1.05; + next.chest_rear.scale = Vec3::one(); next.foot_fl.offset = Vec3::new( -skeleton_attr.feet_f.0, skeleton_attr.feet_f.1, skeleton_attr.feet_f.2, - ) * 1.05; + ); next.foot_fl.ori = Quaternion::rotation_x(-1.3 + footl * 0.06); - next.foot_fl.scale = Vec3::one() * 1.05; + next.foot_fl.scale = Vec3::one(); next.foot_fr.offset = Vec3::new( skeleton_attr.feet_f.0, skeleton_attr.feet_f.1, skeleton_attr.feet_f.2, - ) * 1.05; + ); next.foot_fr.ori = Quaternion::rotation_x(-1.3 + footr * 0.06); - next.foot_fr.scale = Vec3::one() * 1.05; + next.foot_fr.scale = Vec3::one(); next.foot_bl.offset = Vec3::new( -skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, skeleton_attr.feet_b.2, - ) * 1.05; + ); next.foot_bl.ori = Quaternion::rotation_x(-1.3 + footl * 0.06); - next.foot_bl.scale = Vec3::one() * 1.05; + next.foot_bl.scale = Vec3::one(); next.foot_br.offset = Vec3::new( skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, skeleton_attr.feet_b.2, - ) * 1.05; + ); next.foot_br.ori = Quaternion::rotation_x(-1.3 + footr * 0.06); - next.foot_br.scale = Vec3::one() * 1.05; + next.foot_br.scale = Vec3::one(); next.wing_in_l.offset = Vec3::new( -skeleton_attr.wing_in.0, @@ -129,7 +128,7 @@ impl Animation for FlyAnimation { skeleton_attr.wing_in.2, ); next.wing_in_l.ori = Quaternion::rotation_y(0.4 + wingl * 0.6); - next.wing_in_l.scale = Vec3::one() * 1.05; + next.wing_in_l.scale = Vec3::one(); next.wing_in_r.offset = Vec3::new( skeleton_attr.wing_in.0, @@ -137,7 +136,7 @@ impl Animation for FlyAnimation { skeleton_attr.wing_in.2, ); next.wing_in_r.ori = Quaternion::rotation_y(-0.4 + wingr * 0.6); - next.wing_in_r.scale = Vec3::one() * 1.05; + next.wing_in_r.scale = Vec3::one(); next.wing_out_l.offset = Vec3::new( -skeleton_attr.wing_out.0, @@ -153,7 +152,7 @@ impl Animation for FlyAnimation { skeleton_attr.wing_out.2, ); next.wing_out_r.ori = Quaternion::rotation_y((-0.35 + wingr * 0.6).min(-0.2)); - next.wing_out_r.scale = Vec3::one() * 1.05; + next.wing_out_r.scale = Vec3::one(); next } diff --git a/voxygen/src/anim/dragon/idle.rs b/voxygen/src/anim/dragon/idle.rs index e7ca885765..fe4635b4c8 100644 --- a/voxygen/src/anim/dragon/idle.rs +++ b/voxygen/src/anim/dragon/idle.rs @@ -1,5 +1,5 @@ use super::{super::Animation, DragonSkeleton, SkeletonAttr}; -use std::ops::Mul; +use std::{f32::consts::PI, ops::Mul}; use vek::*; pub struct IdleAnimation; @@ -18,8 +18,8 @@ impl Animation for IdleAnimation { let mut next = (*skeleton).clone(); let ultra_slow = (anim_time as f32 * 1.0).sin(); - let wave_slow = (anim_time as f32 * 2.5).sin(); - let wave_slow_cos = (anim_time as f32 * 4.5).cos(); + let slow = (anim_time as f32 * 2.5).sin(); + let slowalt = (anim_time as f32 * 2.5+PI/2.0).sin(); let dragon_look = Vec2::new( ((global_time + anim_time) as f32 / 8.0) @@ -38,115 +38,115 @@ impl Animation for IdleAnimation { 0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1 + ultra_slow * 0.20, - ) * 1.05; + ); next.head_upper.ori = Quaternion::rotation_z(0.8 * dragon_look.x) * Quaternion::rotation_x(0.8 * dragon_look.y); - next.head_upper.scale = Vec3::one() * 1.05; + next.head_upper.scale = Vec3::one(); next.head_lower.offset = Vec3::new( 0.0, skeleton_attr.head_lower.0, skeleton_attr.head_lower.1 + ultra_slow * 0.20, - ) * 1.05; + ); next.head_lower.ori = - Quaternion::rotation_z(0.8 * dragon_look.x) * Quaternion::rotation_x(0.8 * dragon_look.y); + Quaternion::rotation_z(0.8 * dragon_look.x) * Quaternion::rotation_x(-0.2+0.8 * dragon_look.y); next.head_lower.scale = Vec3::one() * 1.05; next.jaw.offset = Vec3::new( 0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1, - ) * 1.05; - next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.05); + ); + next.jaw.ori = Quaternion::rotation_x(slow * 0.05); next.jaw.scale = Vec3::one() * 0.98; next.chest_front.offset = Vec3::new( 0.0, skeleton_attr.chest_front.0, skeleton_attr.chest_front.1, - ) * 1.05; - next.chest_front.ori = Quaternion::rotation_y(wave_slow * 0.03); + ); + next.chest_front.ori = Quaternion::rotation_y(slow * 0.01); next.chest_front.scale = Vec3::one() * 1.05; next.chest_rear.offset = Vec3::new( 0.0, skeleton_attr.chest_rear.0, skeleton_attr.chest_rear.1, - ) * 1.05; - next.chest_rear.ori = Quaternion::rotation_y(wave_slow * 0.03); + ); + next.chest_rear.ori = Quaternion::rotation_y(slow * 0.01); next.chest_rear.scale = Vec3::one() * 1.05; next.tail_front.offset = Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); - next.tail_front.ori = Quaternion::rotation_x(wave_slow_cos * 0.03); - next.tail_front.scale = Vec3::one(); + next.tail_front.ori = Quaternion::rotation_z(slowalt * 0.10)*Quaternion::rotation_x(0.1); + next.tail_front.scale = Vec3::one()*0.98; next.tail_rear.offset = Vec3::new(0.0, skeleton_attr.tail_rear.0, skeleton_attr.tail_rear.1); - next.tail_rear.ori = Quaternion::rotation_x(wave_slow_cos * 0.03); - next.tail_rear.scale = Vec3::one(); + next.tail_rear.ori = Quaternion::rotation_z(slowalt * 0.12)*Quaternion::rotation_x(0.05); + next.tail_rear.scale = Vec3::one()*0.98; next.wing_in_l.offset = Vec3::new( -skeleton_attr.wing_in.0, skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_l.ori = Quaternion::rotation_y(0.2); - next.wing_in_l.scale = Vec3::one() * 1.05; + next.wing_in_l.ori = Quaternion::rotation_y(0.8); + next.wing_in_l.scale = Vec3::one(); next.wing_in_r.offset = Vec3::new( skeleton_attr.wing_in.0, skeleton_attr.wing_in.1, skeleton_attr.wing_in.2, ); - next.wing_in_r.ori = Quaternion::rotation_y(-0.2);//.8 - next.wing_in_r.scale = Vec3::one() * 1.05; + next.wing_in_r.ori = Quaternion::rotation_y(-0.8); + next.wing_in_r.scale = Vec3::one(); next.wing_out_l.offset = Vec3::new( -skeleton_attr.wing_out.0, skeleton_attr.wing_out.1, skeleton_attr.wing_out.2 - 1.4, ); - next.wing_out_l.ori = Quaternion::rotation_y(-0.3);//2.0 - next.wing_out_l.scale = Vec3::one() * 1.05; + next.wing_out_l.ori = Quaternion::rotation_y(-2.0); + next.wing_out_l.scale = Vec3::one(); next.wing_out_r.offset = Vec3::new( skeleton_attr.wing_out.0, skeleton_attr.wing_out.1, skeleton_attr.wing_out.2 - 1.4, ); - next.wing_out_r.ori = Quaternion::rotation_y(0.3); - next.wing_out_r.scale = Vec3::one() * 1.05; + next.wing_out_r.ori = Quaternion::rotation_y(2.0); + next.wing_out_r.scale = Vec3::one(); next.foot_fl.offset = Vec3::new( -skeleton_attr.feet_f.0, skeleton_attr.feet_f.1, skeleton_attr.feet_f.2, - ) * 1.05; + ); next.foot_fl.ori = Quaternion::rotation_x(0.0); - next.foot_fl.scale = Vec3::one() * 1.05; + next.foot_fl.scale = Vec3::one(); next.foot_fr.offset = Vec3::new( skeleton_attr.feet_f.0, skeleton_attr.feet_f.1, skeleton_attr.feet_f.2, - ) * 1.05; + ); next.foot_fr.ori = Quaternion::rotation_x(0.0); - next.foot_fr.scale = Vec3::one() * 1.05; + next.foot_fr.scale = Vec3::one(); next.foot_bl.offset = Vec3::new( -skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, skeleton_attr.feet_b.2, - ) * 1.05; + ); next.foot_bl.ori = Quaternion::rotation_x(0.0); - next.foot_bl.scale = Vec3::one() * 1.05; + next.foot_bl.scale = Vec3::one(); next.foot_br.offset = Vec3::new( skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, skeleton_attr.feet_b.2, - ) * 1.05; + ); next.foot_br.ori = Quaternion::rotation_x(0.0); - next.foot_br.scale = Vec3::one() * 1.05; + next.foot_br.scale = Vec3::one(); next } diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index 0bfddf8f8d..d4a549c7d4 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -236,10 +236,10 @@ impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { (Reddragon, _) => (-12.5, 0.0), }, tail_front: match (body.species, body.body_type) { - (Reddragon, _) => (-12.5, 1.5), + (Reddragon, _) => (-6.5, 1.5), }, tail_rear: match (body.species, body.body_type) { - (Reddragon, _) => (-14.0, 0.0), + (Reddragon, _) => (-11.5, -1.0), }, wing_in: match (body.species, body.body_type) { (Reddragon, _) => (2.5, -16.5, 0.0), diff --git a/voxygen/src/anim/dragon/run.rs b/voxygen/src/anim/dragon/run.rs index 6dada1fd5a..e9b15e4eca 100644 --- a/voxygen/src/anim/dragon/run.rs +++ b/voxygen/src/anim/dragon/run.rs @@ -55,18 +55,18 @@ impl Animation for RunAnimation { 0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1, - ) * 1.05; + ); next.head_upper.ori = Quaternion::rotation_x(dragon_look.y) * Quaternion::rotation_z(dragon_look.x); - next.head_upper.scale = Vec3::one() * 1.05; + next.head_upper.scale = Vec3::one(); next.head_lower.offset = Vec3::new( 0.0, skeleton_attr.head_lower.0, skeleton_attr.head_lower.1, - ) * 1.05; + ); next.head_lower.ori = Quaternion::rotation_x(wave_slow * 0.05); - next.head_lower.scale = Vec3::one() * 1.05; + next.head_lower.scale = Vec3::one(); next.jaw.offset = Vec3::new( 0.0, @@ -74,7 +74,7 @@ impl Animation for RunAnimation { skeleton_attr.jaw.1 + wave_slow * 0.2, ); next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.05); - next.jaw.scale = Vec3::one(); + next.jaw.scale = Vec3::one()*0.98; next.tail_front.offset = Vec3::new( 0.0, @@ -82,7 +82,7 @@ impl Animation for RunAnimation { skeleton_attr.tail_front.1 + centeroffset * 0.6, ); next.tail_front.ori = Quaternion::rotation_x(center * 0.03); - next.tail_front.scale = Vec3::one(); + next.tail_front.scale = Vec3::one()*0.98; next.tail_rear.offset = Vec3::new( 0.0, @@ -90,55 +90,55 @@ impl Animation for RunAnimation { skeleton_attr.tail_rear.1 + centeroffset * 0.6, ); next.tail_rear.ori = Quaternion::rotation_x(center * 0.03); - next.tail_rear.scale = Vec3::one(); + next.tail_rear.scale = Vec3::one()*0.98; next.chest_front.offset = Vec3::new( 0.0, skeleton_attr.chest_front.0 + horichest * 1.25, skeleton_attr.chest_front.1 + vertchest * -1.6 + 1.0, - ) * 1.05; + ); next.chest_front.ori = Quaternion::rotation_y(horichest * -0.09); - next.chest_front.scale = Vec3::one() * 1.05; + next.chest_front.scale = Vec3::one(); next.chest_rear.offset = Vec3::new( 0.0, skeleton_attr.chest_rear.0, skeleton_attr.chest_rear.1, - ) * 1.05; + ); next.chest_rear.ori = Quaternion::rotation_y(horichest * -0.09); - next.chest_rear.scale = Vec3::one() * 1.05; + next.chest_rear.scale = Vec3::one(); next.foot_fl.offset = Vec3::new( -skeleton_attr.feet_f.0, skeleton_attr.feet_f.1 + horilf * 2.5, skeleton_attr.feet_f.2 + vertlf * 5.0 * skeleton_attr.height - 0.5, - ) * 1.05; + ); next.foot_fl.ori = Quaternion::rotation_x(horilf * 0.4); - next.foot_fl.scale = Vec3::one() * 1.05; + next.foot_fl.scale = Vec3::one(); next.foot_fr.offset = Vec3::new( skeleton_attr.feet_f.0, skeleton_attr.feet_f.1 + horirfoffset * 2.5, skeleton_attr.feet_f.2 + vertrfoffset * 5.0 * skeleton_attr.height - 0.5, - ) * 1.05; + ); next.foot_fr.ori = Quaternion::rotation_x(horirfoffset * 0.4); - next.foot_fr.scale = Vec3::one() * 1.05; + next.foot_fr.scale = Vec3::one(); next.foot_bl.offset = Vec3::new( -skeleton_attr.feet_b.0, skeleton_attr.feet_b.1 + horilboffset * 3.0, skeleton_attr.feet_b.2 + vertlboffset * 5.0 * skeleton_attr.height - 0.5, - ) * 1.05; + ); next.foot_bl.ori = Quaternion::rotation_x(horilboffset * 0.35); - next.foot_bl.scale = Vec3::one() * 1.05; + next.foot_bl.scale = Vec3::one(); next.foot_br.offset = Vec3::new( skeleton_attr.feet_b.0, skeleton_attr.feet_b.1 + horirb * 3.0, skeleton_attr.feet_b.2 + vertrb * 5.0 * skeleton_attr.height - 0.5, - ) * 1.05; + ); next.foot_br.ori = Quaternion::rotation_x(horirb * 0.35); - next.foot_br.scale = Vec3::one() * 1.05; + next.foot_br.scale = Vec3::one(); next.wing_in_l.offset = Vec3::new( -skeleton_attr.wing_in.0, @@ -154,7 +154,7 @@ impl Animation for RunAnimation { skeleton_attr.wing_in.2, ); next.wing_in_r.ori = Quaternion::rotation_y(-0.8); - next.wing_in_r.scale = Vec3::one() * 1.05; + next.wing_in_r.scale = Vec3::one(); next.wing_out_l.offset = Vec3::new( -skeleton_attr.wing_out.0, @@ -162,7 +162,7 @@ impl Animation for RunAnimation { skeleton_attr.wing_out.2 - 1.4, ); next.wing_out_l.ori = Quaternion::rotation_y(-2.0); - next.wing_out_l.scale = Vec3::one() * 1.05; + next.wing_out_l.scale = Vec3::one(); next.wing_out_r.offset = Vec3::new( skeleton_attr.wing_out.0, @@ -170,7 +170,7 @@ impl Animation for RunAnimation { skeleton_attr.wing_out.2 - 1.4, ); next.wing_out_r.ori = Quaternion::rotation_y(2.0); - next.wing_out_r.scale = Vec3::one() * 1.05; + next.wing_out_r.scale = Vec3::one(); next } From 7bf0d99a9a99d557b90d26d1deadb3b182d9eb4f Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 9 May 2020 18:02:27 -0400 Subject: [PATCH 15/19] fmt --- common/src/comp/body/dragon.rs | 4 +- common/src/generation.rs | 4 +- voxygen/src/anim/biped_large/mod.rs | 226 ++++++++++++++------------ voxygen/src/anim/character/gliding.rs | 6 +- voxygen/src/anim/character/roll.rs | 6 +- voxygen/src/anim/character/swim.rs | 3 +- voxygen/src/anim/dragon/fly.rs | 11 +- voxygen/src/anim/dragon/idle.rs | 37 ++--- voxygen/src/anim/dragon/mod.rs | 29 +++- voxygen/src/anim/dragon/run.rs | 29 ++-- voxygen/src/scene/figure/cache.rs | 12 +- voxygen/src/scene/figure/load.rs | 8 +- 12 files changed, 189 insertions(+), 186 deletions(-) diff --git a/common/src/comp/body/dragon.rs b/common/src/comp/body/dragon.rs index 8591ba74e1..3ccb3c6b65 100644 --- a/common/src/comp/body/dragon.rs +++ b/common/src/comp/body/dragon.rs @@ -49,9 +49,7 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies } } -pub const ALL_SPECIES: [Species; 1] = [ - Species::Reddragon, -]; +pub const ALL_SPECIES: [Species; 1] = [Species::Reddragon]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { type Item = Species; diff --git a/common/src/generation.rs b/common/src/generation.rs index 15850ebb64..65fc409020 100644 --- a/common/src/generation.rs +++ b/common/src/generation.rs @@ -79,9 +79,7 @@ impl EntityInfo { Body::QuadrupedSmall(body) => { Some(get_npc_name(&NPC_NAMES.quadruped_small, body.species)) }, - Body::Dragon(body) => { - Some(get_npc_name(&NPC_NAMES.dragon, body.species)) - }, + Body::Dragon(body) => Some(get_npc_name(&NPC_NAMES.dragon, body.species)), _ => None, } .map(|s| { diff --git a/voxygen/src/anim/biped_large/mod.rs b/voxygen/src/anim/biped_large/mod.rs index e8cc220218..8438ef999a 100644 --- a/voxygen/src/anim/biped_large/mod.rs +++ b/voxygen/src/anim/biped_large/mod.rs @@ -1,108 +1,114 @@ +pub mod fly; pub mod idle; -pub mod jump; pub mod run; // Reexports -pub use self::{idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation}; +pub use self::{fly::FlyAnimation, idle::IdleAnimation, run::RunAnimation}; use super::{Bone, Skeleton}; use crate::render::FigureBoneData; use common::comp::{self}; -#[derive(Clone)] -pub struct BipedLargeSkeleton { - head: Bone, - upper_torso: Bone, - lower_torso: Bone, - shoulder_l: Bone, - shoulder_r: Bone, - hand_l: Bone, - hand_r: Bone, - leg_l: Bone, - leg_r: Bone, - foot_l: Bone, - foot_r: Bone, - torso: Bone, +#[derive(Clone, Default)] +pub struct DragonSkeleton { + head_upper: Bone, + head_lower: Bone, + jaw: Bone, + chest_front: Bone, + chest_rear: Bone, + tail_front: Bone, + tail_rear: Bone, + wing_in_l: Bone, + wing_in_r: Bone, + wing_out_l: Bone, + wing_out_r: Bone, + foot_fl: Bone, + foot_fr: Bone, + foot_bl: Bone, + foot_br: Bone, } -impl BipedLargeSkeleton { - pub fn new() -> Self { - Self { - head: Bone::default(), - upper_torso: Bone::default(), - lower_torso: Bone::default(), - shoulder_l: Bone::default(), - shoulder_r: Bone::default(), - hand_l: Bone::default(), - hand_r: Bone::default(), - leg_l: Bone::default(), - leg_r: Bone::default(), - foot_l: Bone::default(), - foot_r: Bone::default(), - torso: Bone::default(), - } - } +impl DragonSkeleton { + pub fn new() -> Self { Self::default() } } -impl Skeleton for BipedLargeSkeleton { +impl Skeleton for DragonSkeleton { type Attr = SkeletonAttr; - fn bone_count(&self) -> usize { 11 } + fn bone_count(&self) -> usize { 15 } fn compute_matrices(&self) -> [FigureBoneData; 16] { - let upper_torso_mat = self.upper_torso.compute_base_matrix(); - let shoulder_l_mat = self.shoulder_l.compute_base_matrix(); - let shoulder_r_mat = self.shoulder_r.compute_base_matrix(); - let leg_l_mat = self.leg_l.compute_base_matrix(); - let leg_r_mat = self.leg_r.compute_base_matrix(); - let torso_mat = self.torso.compute_base_matrix(); + let head_upper_mat = self.head_upper.compute_base_matrix(); + let head_lower_mat = self.head_lower.compute_base_matrix(); + let chest_front_mat = self.chest_front.compute_base_matrix(); + let chest_rear_mat = self.chest_rear.compute_base_matrix(); + let wing_in_l_mat = self.wing_in_l.compute_base_matrix(); + let wing_in_r_mat = self.wing_in_r.compute_base_matrix(); + let tail_front_mat = self.tail_front.compute_base_matrix(); [ - FigureBoneData::new(torso_mat * upper_torso_mat * self.head.compute_base_matrix()), - FigureBoneData::new(torso_mat * upper_torso_mat), + FigureBoneData::new(chest_front_mat * head_lower_mat * head_upper_mat), + FigureBoneData::new(chest_front_mat * head_lower_mat), FigureBoneData::new( - torso_mat * upper_torso_mat * self.lower_torso.compute_base_matrix(), + chest_front_mat * head_lower_mat * head_upper_mat * self.jaw.compute_base_matrix(), ), - FigureBoneData::new(torso_mat * upper_torso_mat * shoulder_l_mat), - FigureBoneData::new(torso_mat * upper_torso_mat * shoulder_r_mat), - FigureBoneData::new(torso_mat * upper_torso_mat * self.hand_l.compute_base_matrix()), - FigureBoneData::new(torso_mat * upper_torso_mat * self.hand_r.compute_base_matrix()), - FigureBoneData::new(torso_mat * upper_torso_mat * leg_l_mat), - FigureBoneData::new(torso_mat * upper_torso_mat * leg_r_mat), - FigureBoneData::new(self.foot_l.compute_base_matrix()), - FigureBoneData::new(self.foot_r.compute_base_matrix()), - FigureBoneData::default(), - FigureBoneData::default(), - FigureBoneData::default(), - FigureBoneData::default(), + FigureBoneData::new(chest_front_mat), + FigureBoneData::new(chest_front_mat * self.chest_rear.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * chest_rear_mat * tail_front_mat), + FigureBoneData::new( + chest_front_mat + * chest_rear_mat + * tail_front_mat + * self.tail_rear.compute_base_matrix(), + ), + FigureBoneData::new(chest_front_mat * self.wing_in_l.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * self.wing_in_r.compute_base_matrix()), + FigureBoneData::new( + chest_front_mat * wing_in_l_mat * self.wing_out_l.compute_base_matrix(), + ), + FigureBoneData::new( + chest_front_mat * wing_in_r_mat * self.wing_out_r.compute_base_matrix(), + ), + FigureBoneData::new(self.foot_fl.compute_base_matrix()), + FigureBoneData::new(self.foot_fr.compute_base_matrix()), + FigureBoneData::new(self.foot_bl.compute_base_matrix()), + FigureBoneData::new(self.foot_br.compute_base_matrix()), FigureBoneData::default(), ] } fn interpolate(&mut self, target: &Self, dt: f32) { - self.head.interpolate(&target.head, dt); - self.upper_torso.interpolate(&target.upper_torso, dt); - self.lower_torso.interpolate(&target.lower_torso, dt); - self.shoulder_l.interpolate(&target.shoulder_l, dt); - self.shoulder_r.interpolate(&target.shoulder_r, dt); - self.hand_l.interpolate(&target.hand_l, dt); - self.hand_r.interpolate(&target.hand_r, dt); - self.leg_l.interpolate(&target.leg_l, dt); - self.leg_r.interpolate(&target.leg_r, dt); - self.foot_l.interpolate(&target.foot_l, dt); - self.foot_r.interpolate(&target.foot_r, dt); - self.torso.interpolate(&target.torso, dt); + self.head_upper.interpolate(&target.head_upper, dt); + self.head_lower.interpolate(&target.head_lower, dt); + self.jaw.interpolate(&target.jaw, dt); + self.chest_front.interpolate(&target.chest_front, dt); + self.chest_rear.interpolate(&target.chest_rear, dt); + self.tail_front.interpolate(&target.tail_front, dt); + self.tail_rear.interpolate(&target.tail_rear, dt); + self.wing_in_l.interpolate(&target.wing_in_l, dt); + self.wing_in_r.interpolate(&target.wing_in_r, dt); + self.wing_out_l.interpolate(&target.wing_out_l, dt); + self.wing_out_r.interpolate(&target.wing_out_r, dt); + self.foot_fl.interpolate(&target.foot_fl, dt); + self.foot_fr.interpolate(&target.foot_fr, dt); + self.foot_bl.interpolate(&target.foot_bl, dt); + self.foot_br.interpolate(&target.foot_br, dt); } } pub struct SkeletonAttr { - head: (f32, f32), - upper_torso: (f32, f32), - lower_torso: (f32, f32), - shoulder: (f32, f32, f32), - hand: (f32, f32, f32), - leg: (f32, f32, f32), - foot: (f32, f32, f32), + head_upper: (f32, f32), + head_lower: (f32, f32), + jaw: (f32, f32), + chest_front: (f32, f32), + chest_rear: (f32, f32), + tail_front: (f32, f32), + tail_rear: (f32, f32), + wing_in: (f32, f32, f32), + wing_out: (f32, f32, f32), + feet_f: (f32, f32, f32), + feet_b: (f32, f32, f32), + height: f32, } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -110,7 +116,7 @@ impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { fn try_from(body: &'a comp::Body) -> Result { match body { - comp::Body::BipedLarge(body) => Ok(SkeletonAttr::from(body)), + comp::Body::Dragon(body) => Ok(SkeletonAttr::from(body)), _ => Err(()), } } @@ -119,41 +125,61 @@ impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { impl Default for SkeletonAttr { fn default() -> Self { Self { - head: (0.0, 0.0), - upper_torso: (0.0, 0.0), - lower_torso: (0.0, 0.0), - shoulder: (0.0, 0.0, 0.0), - hand: (0.0, 0.0, 0.0), - leg: (0.0, 0.0, 0.0), - foot: (0.0, 0.0, 0.0), + head_upper: (0.0, 0.0), + head_lower: (0.0, 0.0), + jaw: (0.0, 0.0), + chest_front: (0.0, 0.0), + chest_rear: (0.0, 0.0), + tail_front: (0.0, 0.0), + tail_rear: (0.0, 0.0), + wing_in: (0.0, 0.0, 0.0), + wing_out: (0.0, 0.0, 0.0), + feet_f: (0.0, 0.0, 0.0), + feet_b: (0.0, 0.0, 0.0), + height: (0.0), } } } -impl<'a> From<&'a comp::biped_large::Body> for SkeletonAttr { - fn from(body: &'a comp::biped_large::Body) -> Self { - use comp::biped_large::Species::*; +impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { + fn from(body: &'a comp::dragon::Body) -> Self { + use comp::dragon::Species::*; Self { - head: match (body.species, body.body_type) { - (Ogre, _) => (3.0, 6.0), + head_upper: match (body.species, body.body_type) { + (Reddragon, _) => (2.5, 4.5), }, - upper_torso: match (body.species, body.body_type) { - (Ogre, _) => (0.0, 19.0), + head_lower: match (body.species, body.body_type) { + (Reddragon, _) => (7.5, 3.5), }, - lower_torso: match (body.species, body.body_type) { - (Ogre, _) => (1.0, -9.5), + jaw: match (body.species, body.body_type) { + (Reddragon, _) => (7.0, -5.0), }, - shoulder: match (body.species, body.body_type) { - (Ogre, _) => (6.1, 0.5, 2.5), + chest_front: match (body.species, body.body_type) { + (Reddragon, _) => (0.0, 14.0), }, - hand: match (body.species, body.body_type) { - (Ogre, _) => (10.5, -1.0, -0.5), + chest_rear: match (body.species, body.body_type) { + (Reddragon, _) => (-12.5, 0.0), }, - leg: match (body.species, body.body_type) { - (Ogre, _) => (0.0, 0.0, -6.0), + tail_front: match (body.species, body.body_type) { + (Reddragon, _) => (-6.5, 1.5), }, - foot: match (body.species, body.body_type) { - (Ogre, _) => (4.0, 0.5, 2.5), + tail_rear: match (body.species, body.body_type) { + (Reddragon, _) => (-11.5, -1.0), + }, + wing_in: match (body.species, body.body_type) { + (Reddragon, _) => (2.5, -16.5, 0.0), + }, + wing_out: match (body.species, body.body_type) { + (Reddragon, _) => (23.0, 0.5, 4.0), + }, + feet_f: match (body.species, body.body_type) { + (Reddragon, _) => (6.0, 0.0, 1.5), + }, + feet_b: match (body.species, body.body_type) { + (Reddragon, _) => (6.0, -15.0, 3.0), + }, + height: match (body.species, body.body_type) { + (Reddragon, _) => (1.0), }, } } diff --git a/voxygen/src/anim/character/gliding.rs b/voxygen/src/anim/character/gliding.rs index ebc8fe13bb..4399ab003a 100644 --- a/voxygen/src/anim/character/gliding.rs +++ b/voxygen/src/anim/character/gliding.rs @@ -55,11 +55,7 @@ impl Animation for GlidingAnimation { 0.0 } * 0.8; - next.head.offset = Vec3::new( - 0.0, - -2.0 + skeleton_attr.head.0, - skeleton_attr.head.1, - ); + next.head.offset = Vec3::new(0.0, -2.0 + skeleton_attr.head.0, skeleton_attr.head.1); next.head.ori = Quaternion::rotation_x(0.35 - slow * 0.10 + head_look.y) * Quaternion::rotation_z(head_look.x + slowa * 0.15); diff --git a/voxygen/src/anim/character/roll.rs b/voxygen/src/anim/character/roll.rs index 59fc5c6e2b..6d0210a758 100644 --- a/voxygen/src/anim/character/roll.rs +++ b/voxygen/src/anim/character/roll.rs @@ -55,11 +55,7 @@ impl Animation for RollAnimation { next.chest.ori = Quaternion::rotation_x(wave_dub * 0.4); next.chest.scale = Vec3::one() * 1.01; - next.belt.offset = Vec3::new( - 0.0, - skeleton_attr.belt.0 + 2.0, - skeleton_attr.belt.1 + 2.0, - ); + next.belt.offset = Vec3::new(0.0, skeleton_attr.belt.0 + 2.0, skeleton_attr.belt.1 + 2.0); next.belt.ori = Quaternion::rotation_x(0.0 + wave_dub * 0.8); next.shorts.offset = Vec3::new( diff --git a/voxygen/src/anim/character/swim.rs b/voxygen/src/anim/character/swim.rs index 76d283ba83..60477596a9 100644 --- a/voxygen/src/anim/character/swim.rs +++ b/voxygen/src/anim/character/swim.rs @@ -132,8 +132,7 @@ impl Animation for SwimAnimation { next.lantern.scale = Vec3::one() * 0.65; next.torso.offset = Vec3::new(0.0, -0.3 + shortalt * -0.065, 0.4) * skeleton_attr.scaler; - next.torso.ori = - Quaternion::rotation_x(speed * -0.190 * wave_stop * 1.05); + next.torso.ori = Quaternion::rotation_x(speed * -0.190 * wave_stop * 1.05); next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; next.control.scale = Vec3::one(); diff --git a/voxygen/src/anim/dragon/fly.rs b/voxygen/src/anim/dragon/fly.rs index b79fb38697..53fcce8757 100644 --- a/voxygen/src/anim/dragon/fly.rs +++ b/voxygen/src/anim/dragon/fly.rs @@ -64,7 +64,7 @@ impl Animation for FlyAnimation { skeleton_attr.tail_front.1 + centeroffset * 0.6, ); next.tail_front.ori = Quaternion::rotation_x(center * 0.03); - next.tail_front.scale = Vec3::one()*0.98; + next.tail_front.scale = Vec3::one() * 0.98; next.tail_rear.offset = Vec3::new( 0.0, @@ -72,7 +72,7 @@ impl Animation for FlyAnimation { skeleton_attr.tail_rear.1 + centeroffset * 0.6, ); next.tail_rear.ori = Quaternion::rotation_x(center * 0.03); - next.tail_rear.scale = Vec3::one()*0.98; + next.tail_rear.scale = Vec3::one() * 0.98; next.chest_front.offset = Vec3::new( 0.0, @@ -82,11 +82,8 @@ impl Animation for FlyAnimation { next.chest_front.ori = Quaternion::rotation_y(center * 0.05); next.chest_front.scale = Vec3::one(); - next.chest_rear.offset = Vec3::new( - 0.0, - skeleton_attr.chest_rear.0, - skeleton_attr.chest_rear.1, - ); + next.chest_rear.offset = + Vec3::new(0.0, skeleton_attr.chest_rear.0, skeleton_attr.chest_rear.1); next.chest_rear.ori = Quaternion::rotation_y(center * 0.05); next.chest_rear.scale = Vec3::one(); diff --git a/voxygen/src/anim/dragon/idle.rs b/voxygen/src/anim/dragon/idle.rs index fe4635b4c8..afdd649907 100644 --- a/voxygen/src/anim/dragon/idle.rs +++ b/voxygen/src/anim/dragon/idle.rs @@ -19,7 +19,7 @@ impl Animation for IdleAnimation { let ultra_slow = (anim_time as f32 * 1.0).sin(); let slow = (anim_time as f32 * 2.5).sin(); - let slowalt = (anim_time as f32 * 2.5+PI/2.0).sin(); + let slowalt = (anim_time as f32 * 2.5 + PI / 2.0).sin(); let dragon_look = Vec2::new( ((global_time + anim_time) as f32 / 8.0) @@ -39,8 +39,8 @@ impl Animation for IdleAnimation { skeleton_attr.head_upper.0, skeleton_attr.head_upper.1 + ultra_slow * 0.20, ); - next.head_upper.ori = - Quaternion::rotation_z(0.8 * dragon_look.x) * Quaternion::rotation_x(0.8 * dragon_look.y); + next.head_upper.ori = Quaternion::rotation_z(0.8 * dragon_look.x) + * Quaternion::rotation_x(0.8 * dragon_look.y); next.head_upper.scale = Vec3::one(); next.head_lower.offset = Vec3::new( @@ -48,15 +48,11 @@ impl Animation for IdleAnimation { skeleton_attr.head_lower.0, skeleton_attr.head_lower.1 + ultra_slow * 0.20, ); - next.head_lower.ori = - Quaternion::rotation_z(0.8 * dragon_look.x) * Quaternion::rotation_x(-0.2+0.8 * dragon_look.y); + next.head_lower.ori = Quaternion::rotation_z(0.8 * dragon_look.x) + * Quaternion::rotation_x(-0.2 + 0.8 * dragon_look.y); next.head_lower.scale = Vec3::one() * 1.05; - next.jaw.offset = Vec3::new( - 0.0, - skeleton_attr.jaw.0, - skeleton_attr.jaw.1, - ); + next.jaw.offset = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); next.jaw.ori = Quaternion::rotation_x(slow * 0.05); next.jaw.scale = Vec3::one() * 0.98; @@ -68,21 +64,20 @@ impl Animation for IdleAnimation { next.chest_front.ori = Quaternion::rotation_y(slow * 0.01); next.chest_front.scale = Vec3::one() * 1.05; - next.chest_rear.offset = Vec3::new( - 0.0, - skeleton_attr.chest_rear.0, - skeleton_attr.chest_rear.1, - ); + next.chest_rear.offset = + Vec3::new(0.0, skeleton_attr.chest_rear.0, skeleton_attr.chest_rear.1); next.chest_rear.ori = Quaternion::rotation_y(slow * 0.01); next.chest_rear.scale = Vec3::one() * 1.05; - next.tail_front.offset = Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); - next.tail_front.ori = Quaternion::rotation_z(slowalt * 0.10)*Quaternion::rotation_x(0.1); - next.tail_front.scale = Vec3::one()*0.98; + next.tail_front.offset = + Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); + next.tail_front.ori = Quaternion::rotation_z(slowalt * 0.10) * Quaternion::rotation_x(0.1); + next.tail_front.scale = Vec3::one() * 0.98; - next.tail_rear.offset = Vec3::new(0.0, skeleton_attr.tail_rear.0, skeleton_attr.tail_rear.1); - next.tail_rear.ori = Quaternion::rotation_z(slowalt * 0.12)*Quaternion::rotation_x(0.05); - next.tail_rear.scale = Vec3::one()*0.98; + next.tail_rear.offset = + Vec3::new(0.0, skeleton_attr.tail_rear.0, skeleton_attr.tail_rear.1); + next.tail_rear.ori = Quaternion::rotation_z(slowalt * 0.12) * Quaternion::rotation_x(0.05); + next.tail_rear.scale = Vec3::one() * 0.98; next.wing_in_l.offset = Vec3::new( -skeleton_attr.wing_in.0, diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index d4a549c7d4..ae870320c6 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -8,6 +8,7 @@ pub use self::{fly::FlyAnimation, idle::IdleAnimation, run::RunAnimation}; use super::{Bone, Skeleton}; use crate::render::FigureBoneData; <<<<<<< HEAD +<<<<<<< HEAD use common::comp::{self}; use vek::Vec3; @@ -66,6 +67,9 @@ const FEET_B_Z: f32 = 3.0; ======= use common::comp::{self}; >>>>>>> Cleanup +======= +use common::comp::{self}; +>>>>>>> fmt #[derive(Clone, Default)] pub struct DragonSkeleton { @@ -134,15 +138,26 @@ impl Skeleton for DragonSkeleton { [ FigureBoneData::new(chest_front_mat * head_lower_mat * head_upper_mat), FigureBoneData::new(chest_front_mat * head_lower_mat), - FigureBoneData::new(chest_front_mat * head_lower_mat * head_upper_mat * self.jaw.compute_base_matrix()), + FigureBoneData::new( + chest_front_mat * head_lower_mat * head_upper_mat * self.jaw.compute_base_matrix(), + ), FigureBoneData::new(chest_front_mat), - FigureBoneData::new(chest_front_mat * self.chest_rear.compute_base_matrix() ), + FigureBoneData::new(chest_front_mat * self.chest_rear.compute_base_matrix()), FigureBoneData::new(chest_front_mat * chest_rear_mat * tail_front_mat), - FigureBoneData::new(chest_front_mat * chest_rear_mat * tail_front_mat * self.tail_rear.compute_base_matrix()), + FigureBoneData::new( + chest_front_mat + * chest_rear_mat + * tail_front_mat + * self.tail_rear.compute_base_matrix(), + ), FigureBoneData::new(chest_front_mat * self.wing_in_l.compute_base_matrix()), FigureBoneData::new(chest_front_mat * self.wing_in_r.compute_base_matrix()), - FigureBoneData::new(chest_front_mat * wing_in_l_mat * self.wing_out_l.compute_base_matrix()), - FigureBoneData::new(chest_front_mat * wing_in_r_mat * self.wing_out_r.compute_base_matrix()), + FigureBoneData::new( + chest_front_mat * wing_in_l_mat * self.wing_out_l.compute_base_matrix(), + ), + FigureBoneData::new( + chest_front_mat * wing_in_r_mat * self.wing_out_r.compute_base_matrix(), + ), FigureBoneData::new(self.foot_fl.compute_base_matrix()), FigureBoneData::new(self.foot_fr.compute_base_matrix()), FigureBoneData::new(self.foot_bl.compute_base_matrix()), @@ -217,7 +232,7 @@ impl Default for SkeletonAttr { } impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { - fn from(body: &'a comp::dragon::Body) -> Self { + fn from(body: &'a comp::dragon::Body) -> Self { use comp::dragon::Species::*; Self { head_upper: match (body.species, body.body_type) { @@ -258,4 +273,4 @@ impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { }, } } -} \ No newline at end of file +} diff --git a/voxygen/src/anim/dragon/run.rs b/voxygen/src/anim/dragon/run.rs index e9b15e4eca..2619713d4c 100644 --- a/voxygen/src/anim/dragon/run.rs +++ b/voxygen/src/anim/dragon/run.rs @@ -21,7 +21,7 @@ impl Animation for RunAnimation { let wave_ultra_slow_cos = (anim_time as f32 * 3.0 + PI).cos(); let wave_slow = (anim_time as f32 * 4.5).sin(); - + let vertlf = (anim_time as f32 * lab as f32 + PI * 1.8).sin().max(0.15); let vertrfoffset = (anim_time as f32 * lab as f32 + PI * 0.80).sin().max(0.15); let vertlboffset = (anim_time as f32 * lab as f32).sin().max(0.15); @@ -51,20 +51,14 @@ impl Animation for RunAnimation { * 0.125, ); - next.head_upper.offset = Vec3::new( - 0.0, - skeleton_attr.head_upper.0, - skeleton_attr.head_upper.1, - ); + next.head_upper.offset = + Vec3::new(0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1); next.head_upper.ori = Quaternion::rotation_x(dragon_look.y) * Quaternion::rotation_z(dragon_look.x); next.head_upper.scale = Vec3::one(); - next.head_lower.offset = Vec3::new( - 0.0, - skeleton_attr.head_lower.0, - skeleton_attr.head_lower.1, - ); + next.head_lower.offset = + Vec3::new(0.0, skeleton_attr.head_lower.0, skeleton_attr.head_lower.1); next.head_lower.ori = Quaternion::rotation_x(wave_slow * 0.05); next.head_lower.scale = Vec3::one(); @@ -74,7 +68,7 @@ impl Animation for RunAnimation { skeleton_attr.jaw.1 + wave_slow * 0.2, ); next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.05); - next.jaw.scale = Vec3::one()*0.98; + next.jaw.scale = Vec3::one() * 0.98; next.tail_front.offset = Vec3::new( 0.0, @@ -82,7 +76,7 @@ impl Animation for RunAnimation { skeleton_attr.tail_front.1 + centeroffset * 0.6, ); next.tail_front.ori = Quaternion::rotation_x(center * 0.03); - next.tail_front.scale = Vec3::one()*0.98; + next.tail_front.scale = Vec3::one() * 0.98; next.tail_rear.offset = Vec3::new( 0.0, @@ -90,7 +84,7 @@ impl Animation for RunAnimation { skeleton_attr.tail_rear.1 + centeroffset * 0.6, ); next.tail_rear.ori = Quaternion::rotation_x(center * 0.03); - next.tail_rear.scale = Vec3::one()*0.98; + next.tail_rear.scale = Vec3::one() * 0.98; next.chest_front.offset = Vec3::new( 0.0, @@ -100,11 +94,8 @@ impl Animation for RunAnimation { next.chest_front.ori = Quaternion::rotation_y(horichest * -0.09); next.chest_front.scale = Vec3::one(); - next.chest_rear.offset = Vec3::new( - 0.0, - skeleton_attr.chest_rear.0, - skeleton_attr.chest_rear.1, - ); + next.chest_rear.offset = + Vec3::new(0.0, skeleton_attr.chest_rear.0, skeleton_attr.chest_rear.1); next.chest_rear.ori = Quaternion::rotation_y(horichest * -0.09); next.chest_rear.scale = Vec3::one(); diff --git a/voxygen/src/scene/figure/cache.rs b/voxygen/src/scene/figure/cache.rs index d88d4f2fb2..c1628ffab0 100644 --- a/voxygen/src/scene/figure/cache.rs +++ b/voxygen/src/scene/figure/cache.rs @@ -411,10 +411,8 @@ impl FigureModelCache { None, ], Body::Dragon(body) => { - let dragon_center_spec = - DragonCenterSpec::load_watched(manifest_indicator); - let dragon_lateral_spec = - DragonLateralSpec::load_watched(manifest_indicator); + let dragon_center_spec = DragonCenterSpec::load_watched(manifest_indicator); + let dragon_lateral_spec = DragonLateralSpec::load_watched(manifest_indicator); [ Some(dragon_center_spec.mesh_head_upper( @@ -427,11 +425,7 @@ impl FigureModelCache { body.body_type, generate_mesh, )), - Some(dragon_center_spec.mesh_jaw( - body.species, - body.body_type, - generate_mesh, - )), + Some(dragon_center_spec.mesh_jaw(body.species, body.body_type, generate_mesh)), Some(dragon_center_spec.mesh_chest_front( body.species, body.body_type, diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index acceb10df0..e8960bdf54 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -1925,8 +1925,7 @@ impl Asset for DragonLateralSpec { impl DragonCenterSpec { pub fn load_watched(indicator: &mut ReloadIndicator) -> Arc { - assets::load_watched::("voxygen.voxel.dragon_center_manifest", indicator) - .unwrap() + assets::load_watched::("voxygen.voxel.dragon_center_manifest", indicator).unwrap() } pub fn mesh_head_upper( @@ -2012,7 +2011,7 @@ impl DragonCenterSpec { generate_mesh(¢er, Vec3::from(spec.chest_front.offset)) } - + pub fn mesh_chest_rear( &self, species: DSpecies, @@ -2078,8 +2077,7 @@ impl DragonCenterSpec { } impl DragonLateralSpec { pub fn load_watched(indicator: &mut ReloadIndicator) -> Arc { - assets::load_watched::("voxygen.voxel.dragon_lateral_manifest", indicator) - .unwrap() + assets::load_watched::("voxygen.voxel.dragon_lateral_manifest", indicator).unwrap() } pub fn mesh_wing_in_l( From 5a8a534ac9ddee925c00c50ddd4b31bb096f59cf Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 9 May 2020 18:56:08 -0400 Subject: [PATCH 16/19] rebase --- voxygen/src/anim/biped_large/mod.rs | 228 ++++++++++++---------------- voxygen/src/anim/dragon/mod.rs | 132 +++------------- 2 files changed, 121 insertions(+), 239 deletions(-) diff --git a/voxygen/src/anim/biped_large/mod.rs b/voxygen/src/anim/biped_large/mod.rs index 8438ef999a..0bb0621bcb 100644 --- a/voxygen/src/anim/biped_large/mod.rs +++ b/voxygen/src/anim/biped_large/mod.rs @@ -1,114 +1,100 @@ -pub mod fly; pub mod idle; +pub mod jump; pub mod run; // Reexports -pub use self::{fly::FlyAnimation, idle::IdleAnimation, run::RunAnimation}; +pub use self::{idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation}; use super::{Bone, Skeleton}; use crate::render::FigureBoneData; use common::comp::{self}; +use vek::Vec3; #[derive(Clone, Default)] -pub struct DragonSkeleton { - head_upper: Bone, - head_lower: Bone, - jaw: Bone, - chest_front: Bone, - chest_rear: Bone, - tail_front: Bone, - tail_rear: Bone, - wing_in_l: Bone, - wing_in_r: Bone, - wing_out_l: Bone, - wing_out_r: Bone, - foot_fl: Bone, - foot_fr: Bone, - foot_bl: Bone, - foot_br: Bone, +pub struct BipedLargeSkeleton { + head: Bone, + upper_torso: Bone, + lower_torso: Bone, + shoulder_l: Bone, + shoulder_r: Bone, + hand_l: Bone, + hand_r: Bone, + leg_l: Bone, + leg_r: Bone, + foot_l: Bone, + foot_r: Bone, + torso: Bone, } -impl DragonSkeleton { +impl BipedLargeSkeleton { pub fn new() -> Self { Self::default() } } -impl Skeleton for DragonSkeleton { +impl Skeleton for BipedLargeSkeleton { type Attr = SkeletonAttr; - fn bone_count(&self) -> usize { 15 } + fn bone_count(&self) -> usize { 11 } - fn compute_matrices(&self) -> [FigureBoneData; 16] { - let head_upper_mat = self.head_upper.compute_base_matrix(); - let head_lower_mat = self.head_lower.compute_base_matrix(); - let chest_front_mat = self.chest_front.compute_base_matrix(); - let chest_rear_mat = self.chest_rear.compute_base_matrix(); - let wing_in_l_mat = self.wing_in_l.compute_base_matrix(); - let wing_in_r_mat = self.wing_in_r.compute_base_matrix(); - let tail_front_mat = self.tail_front.compute_base_matrix(); - - [ - FigureBoneData::new(chest_front_mat * head_lower_mat * head_upper_mat), - FigureBoneData::new(chest_front_mat * head_lower_mat), - FigureBoneData::new( - chest_front_mat * head_lower_mat * head_upper_mat * self.jaw.compute_base_matrix(), - ), - FigureBoneData::new(chest_front_mat), - FigureBoneData::new(chest_front_mat * self.chest_rear.compute_base_matrix()), - FigureBoneData::new(chest_front_mat * chest_rear_mat * tail_front_mat), - FigureBoneData::new( - chest_front_mat - * chest_rear_mat - * tail_front_mat - * self.tail_rear.compute_base_matrix(), - ), - FigureBoneData::new(chest_front_mat * self.wing_in_l.compute_base_matrix()), - FigureBoneData::new(chest_front_mat * self.wing_in_r.compute_base_matrix()), - FigureBoneData::new( - chest_front_mat * wing_in_l_mat * self.wing_out_l.compute_base_matrix(), - ), - FigureBoneData::new( - chest_front_mat * wing_in_r_mat * self.wing_out_r.compute_base_matrix(), - ), - FigureBoneData::new(self.foot_fl.compute_base_matrix()), - FigureBoneData::new(self.foot_fr.compute_base_matrix()), - FigureBoneData::new(self.foot_bl.compute_base_matrix()), - FigureBoneData::new(self.foot_br.compute_base_matrix()), - FigureBoneData::default(), - ] + fn compute_matrices(&self) -> ([FigureBoneData; 16], Vec3) { + let upper_torso_mat = self.upper_torso.compute_base_matrix(); + let shoulder_l_mat = self.shoulder_l.compute_base_matrix(); + let shoulder_r_mat = self.shoulder_r.compute_base_matrix(); + let leg_l_mat = self.leg_l.compute_base_matrix(); + let leg_r_mat = self.leg_r.compute_base_matrix(); + let torso_mat = self.torso.compute_base_matrix(); + ( + [ + FigureBoneData::new(torso_mat * upper_torso_mat * self.head.compute_base_matrix()), + FigureBoneData::new(torso_mat * upper_torso_mat), + FigureBoneData::new( + torso_mat * upper_torso_mat * self.lower_torso.compute_base_matrix(), + ), + FigureBoneData::new(torso_mat * upper_torso_mat * shoulder_l_mat), + FigureBoneData::new(torso_mat * upper_torso_mat * shoulder_r_mat), + FigureBoneData::new( + torso_mat * upper_torso_mat * self.hand_l.compute_base_matrix(), + ), + FigureBoneData::new( + torso_mat * upper_torso_mat * self.hand_r.compute_base_matrix(), + ), + FigureBoneData::new(torso_mat * upper_torso_mat * leg_l_mat), + FigureBoneData::new(torso_mat * upper_torso_mat * leg_r_mat), + FigureBoneData::new(self.foot_l.compute_base_matrix()), + FigureBoneData::new(self.foot_r.compute_base_matrix()), + FigureBoneData::default(), + FigureBoneData::default(), + FigureBoneData::default(), + FigureBoneData::default(), + FigureBoneData::default(), + ], + Vec3::default(), + ) } fn interpolate(&mut self, target: &Self, dt: f32) { - self.head_upper.interpolate(&target.head_upper, dt); - self.head_lower.interpolate(&target.head_lower, dt); - self.jaw.interpolate(&target.jaw, dt); - self.chest_front.interpolate(&target.chest_front, dt); - self.chest_rear.interpolate(&target.chest_rear, dt); - self.tail_front.interpolate(&target.tail_front, dt); - self.tail_rear.interpolate(&target.tail_rear, dt); - self.wing_in_l.interpolate(&target.wing_in_l, dt); - self.wing_in_r.interpolate(&target.wing_in_r, dt); - self.wing_out_l.interpolate(&target.wing_out_l, dt); - self.wing_out_r.interpolate(&target.wing_out_r, dt); - self.foot_fl.interpolate(&target.foot_fl, dt); - self.foot_fr.interpolate(&target.foot_fr, dt); - self.foot_bl.interpolate(&target.foot_bl, dt); - self.foot_br.interpolate(&target.foot_br, dt); + self.head.interpolate(&target.head, dt); + self.upper_torso.interpolate(&target.upper_torso, dt); + self.lower_torso.interpolate(&target.lower_torso, dt); + self.shoulder_l.interpolate(&target.shoulder_l, dt); + self.shoulder_r.interpolate(&target.shoulder_r, dt); + self.hand_l.interpolate(&target.hand_l, dt); + self.hand_r.interpolate(&target.hand_r, dt); + self.leg_l.interpolate(&target.leg_l, dt); + self.leg_r.interpolate(&target.leg_r, dt); + self.foot_l.interpolate(&target.foot_l, dt); + self.foot_r.interpolate(&target.foot_r, dt); + self.torso.interpolate(&target.torso, dt); } } pub struct SkeletonAttr { - head_upper: (f32, f32), - head_lower: (f32, f32), - jaw: (f32, f32), - chest_front: (f32, f32), - chest_rear: (f32, f32), - tail_front: (f32, f32), - tail_rear: (f32, f32), - wing_in: (f32, f32, f32), - wing_out: (f32, f32, f32), - feet_f: (f32, f32, f32), - feet_b: (f32, f32, f32), - height: f32, + head: (f32, f32), + upper_torso: (f32, f32), + lower_torso: (f32, f32), + shoulder: (f32, f32, f32), + hand: (f32, f32, f32), + leg: (f32, f32, f32), + foot: (f32, f32, f32), } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -116,7 +102,7 @@ impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { fn try_from(body: &'a comp::Body) -> Result { match body { - comp::Body::Dragon(body) => Ok(SkeletonAttr::from(body)), + comp::Body::BipedLarge(body) => Ok(SkeletonAttr::from(body)), _ => Err(()), } } @@ -125,61 +111,41 @@ impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { impl Default for SkeletonAttr { fn default() -> Self { Self { - head_upper: (0.0, 0.0), - head_lower: (0.0, 0.0), - jaw: (0.0, 0.0), - chest_front: (0.0, 0.0), - chest_rear: (0.0, 0.0), - tail_front: (0.0, 0.0), - tail_rear: (0.0, 0.0), - wing_in: (0.0, 0.0, 0.0), - wing_out: (0.0, 0.0, 0.0), - feet_f: (0.0, 0.0, 0.0), - feet_b: (0.0, 0.0, 0.0), - height: (0.0), + head: (0.0, 0.0), + upper_torso: (0.0, 0.0), + lower_torso: (0.0, 0.0), + shoulder: (0.0, 0.0, 0.0), + hand: (0.0, 0.0, 0.0), + leg: (0.0, 0.0, 0.0), + foot: (0.0, 0.0, 0.0), } } } -impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { - fn from(body: &'a comp::dragon::Body) -> Self { - use comp::dragon::Species::*; +impl<'a> From<&'a comp::biped_large::Body> for SkeletonAttr { + fn from(body: &'a comp::biped_large::Body) -> Self { + use comp::biped_large::Species::*; Self { - head_upper: match (body.species, body.body_type) { - (Reddragon, _) => (2.5, 4.5), + head: match (body.species, body.body_type) { + (Ogre, _) => (3.0, 6.0), }, - head_lower: match (body.species, body.body_type) { - (Reddragon, _) => (7.5, 3.5), + upper_torso: match (body.species, body.body_type) { + (Ogre, _) => (0.0, 19.0), }, - jaw: match (body.species, body.body_type) { - (Reddragon, _) => (7.0, -5.0), + lower_torso: match (body.species, body.body_type) { + (Ogre, _) => (1.0, -9.5), }, - chest_front: match (body.species, body.body_type) { - (Reddragon, _) => (0.0, 14.0), + shoulder: match (body.species, body.body_type) { + (Ogre, _) => (6.1, 0.5, 2.5), }, - chest_rear: match (body.species, body.body_type) { - (Reddragon, _) => (-12.5, 0.0), + hand: match (body.species, body.body_type) { + (Ogre, _) => (10.5, -1.0, -0.5), }, - tail_front: match (body.species, body.body_type) { - (Reddragon, _) => (-6.5, 1.5), + leg: match (body.species, body.body_type) { + (Ogre, _) => (0.0, 0.0, -6.0), }, - tail_rear: match (body.species, body.body_type) { - (Reddragon, _) => (-11.5, -1.0), - }, - wing_in: match (body.species, body.body_type) { - (Reddragon, _) => (2.5, -16.5, 0.0), - }, - wing_out: match (body.species, body.body_type) { - (Reddragon, _) => (23.0, 0.5, 4.0), - }, - feet_f: match (body.species, body.body_type) { - (Reddragon, _) => (6.0, 0.0, 1.5), - }, - feet_b: match (body.species, body.body_type) { - (Reddragon, _) => (6.0, -15.0, 3.0), - }, - height: match (body.species, body.body_type) { - (Reddragon, _) => (1.0), + foot: match (body.species, body.body_type) { + (Ogre, _) => (4.0, 0.5, 2.5), }, } } diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index ae870320c6..db6bd23dbd 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -7,70 +7,9 @@ pub use self::{fly::FlyAnimation, idle::IdleAnimation, run::RunAnimation}; use super::{Bone, Skeleton}; use crate::render::FigureBoneData; -<<<<<<< HEAD -<<<<<<< HEAD use common::comp::{self}; use vek::Vec3; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const HEAD_UPPER_X: f32 = 2.5; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const HEAD_UPPER_Z: f32 = 4.5; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const HEAD_LOWER_X: f32 = 7.5; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const HEAD_LOWER_Z: f32 = 3.5; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const JAW_X: f32 = 7.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const JAW_Z: f32 = -5.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const CHEST_F_X: f32 = 0.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const CHEST_F_Z: f32 = 14.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const CHEST_R_X: f32 = -12.5; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const CHEST_R_Z: f32 = 0.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_F_X: f32 = -12.5; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_F_Z: f32 = 1.5; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_R_X: f32 = -14.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const TAIL_R_Z: f32 = 0.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_IN_X: f32 = 2.5; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_IN_Y: f32 = -16.5; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_IN_Z: f32 = 0.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_OUT_X: f32 = 23.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_OUT_Y: f32 = 0.5; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const WING_OUT_Z: f32 = 4.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const FEET_F_X: f32 = 6.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const FEET_F_Y: f32 = 0.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const FEET_F_Z: f32 = 1.5; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const FEET_B_X: f32 = 6.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const FEET_B_Y: f32 = -15.0; -#[const_tweaker::tweak(min = -40.0, max = 40.0, step = 0.5)] -const FEET_B_Z: f32 = 3.0; -======= -use common::comp::{self}; ->>>>>>> Cleanup -======= -use common::comp::{self}; ->>>>>>> fmt - #[derive(Clone, Default)] pub struct DragonSkeleton { head_upper: Bone, @@ -99,72 +38,49 @@ impl Skeleton for DragonSkeleton { fn bone_count(&self) -> usize { 15 } -<<<<<<< HEAD fn compute_matrices(&self) -> ([FigureBoneData; 16], Vec3) { -======= - fn compute_matrices(&self) -> [FigureBoneData; 16] { let head_upper_mat = self.head_upper.compute_base_matrix(); let head_lower_mat = self.head_lower.compute_base_matrix(); ->>>>>>> New dragon model, added jaw, splitted head into upper/lower let chest_front_mat = self.chest_front.compute_base_matrix(); let chest_rear_mat = self.chest_rear.compute_base_matrix(); let wing_in_l_mat = self.wing_in_l.compute_base_matrix(); let wing_in_r_mat = self.wing_in_r.compute_base_matrix(); let tail_front_mat = self.tail_front.compute_base_matrix(); - -<<<<<<< HEAD ( [ - FigureBoneData::new(self.head.compute_base_matrix() * chest_front_mat), + FigureBoneData::new(chest_front_mat * head_lower_mat * head_upper_mat), + FigureBoneData::new(chest_front_mat * head_lower_mat), + FigureBoneData::new( + chest_front_mat + * head_lower_mat + * head_upper_mat + * self.jaw.compute_base_matrix(), + ), FigureBoneData::new(chest_front_mat), - FigureBoneData::new(self.chest_rear.compute_base_matrix() * chest_front_mat), - FigureBoneData::new(tail_front_mat), - FigureBoneData::new(self.tail_rear.compute_base_matrix() * tail_front_mat), - FigureBoneData::new(wing_in_l_mat), - FigureBoneData::new(wing_in_r_mat), - FigureBoneData::new(self.wing_out_l.compute_base_matrix() * wing_in_l_mat), - FigureBoneData::new(self.wing_out_r.compute_base_matrix() * wing_in_r_mat), + FigureBoneData::new(chest_front_mat * self.chest_rear.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * chest_rear_mat * tail_front_mat), + FigureBoneData::new( + chest_front_mat + * chest_rear_mat + * tail_front_mat + * self.tail_rear.compute_base_matrix(), + ), + FigureBoneData::new(chest_front_mat * self.wing_in_l.compute_base_matrix()), + FigureBoneData::new(chest_front_mat * self.wing_in_r.compute_base_matrix()), + FigureBoneData::new( + chest_front_mat * wing_in_l_mat * self.wing_out_l.compute_base_matrix(), + ), + FigureBoneData::new( + chest_front_mat * wing_in_r_mat * self.wing_out_r.compute_base_matrix(), + ), FigureBoneData::new(self.foot_fl.compute_base_matrix()), FigureBoneData::new(self.foot_fr.compute_base_matrix()), FigureBoneData::new(self.foot_bl.compute_base_matrix()), FigureBoneData::new(self.foot_br.compute_base_matrix()), FigureBoneData::default(), - FigureBoneData::default(), - FigureBoneData::default(), ], Vec3::default(), ) -======= - [ - FigureBoneData::new(chest_front_mat * head_lower_mat * head_upper_mat), - FigureBoneData::new(chest_front_mat * head_lower_mat), - FigureBoneData::new( - chest_front_mat * head_lower_mat * head_upper_mat * self.jaw.compute_base_matrix(), - ), - FigureBoneData::new(chest_front_mat), - FigureBoneData::new(chest_front_mat * self.chest_rear.compute_base_matrix()), - FigureBoneData::new(chest_front_mat * chest_rear_mat * tail_front_mat), - FigureBoneData::new( - chest_front_mat - * chest_rear_mat - * tail_front_mat - * self.tail_rear.compute_base_matrix(), - ), - FigureBoneData::new(chest_front_mat * self.wing_in_l.compute_base_matrix()), - FigureBoneData::new(chest_front_mat * self.wing_in_r.compute_base_matrix()), - FigureBoneData::new( - chest_front_mat * wing_in_l_mat * self.wing_out_l.compute_base_matrix(), - ), - FigureBoneData::new( - chest_front_mat * wing_in_r_mat * self.wing_out_r.compute_base_matrix(), - ), - FigureBoneData::new(self.foot_fl.compute_base_matrix()), - FigureBoneData::new(self.foot_fr.compute_base_matrix()), - FigureBoneData::new(self.foot_bl.compute_base_matrix()), - FigureBoneData::new(self.foot_br.compute_base_matrix()), - FigureBoneData::default(), - ] ->>>>>>> Symmetry of dragon skeleton } fn interpolate(&mut self, target: &Self, dt: f32) { From ad6865af69576e66a7230d118af99f63ecb8b4e8 Mon Sep 17 00:00:00 2001 From: Snowram Date: Sun, 10 May 2020 01:40:53 +0200 Subject: [PATCH 17/19] Fix dragon jaw Z fighting --- voxygen/src/anim/dragon/fly.rs | 10 +++++----- voxygen/src/anim/dragon/idle.rs | 4 ++-- voxygen/src/anim/dragon/mod.rs | 2 +- voxygen/src/anim/dragon/run.rs | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/voxygen/src/anim/dragon/fly.rs b/voxygen/src/anim/dragon/fly.rs index 53fcce8757..a996e89775 100644 --- a/voxygen/src/anim/dragon/fly.rs +++ b/voxygen/src/anim/dragon/fly.rs @@ -39,7 +39,7 @@ impl Animation for FlyAnimation { ); next.head_upper.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(wave_ultra_slow * -0.10); - next.head_upper.scale = Vec3::one(); + next.head_upper.scale = Vec3::one() * 1.05; next.head_lower.offset = Vec3::new( 0.0, @@ -48,15 +48,15 @@ impl Animation for FlyAnimation { ); next.head_lower.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(wave_ultra_slow * -0.10); - next.head_lower.scale = Vec3::one(); + next.head_lower.scale = Vec3::one() * 1.05; next.jaw.offset = Vec3::new( 0.0, skeleton_attr.jaw.0 - wave_ultra_slow_cos * 0.12, skeleton_attr.jaw.1 + wave_slow * 0.2, ); - next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.05); - next.jaw.scale = Vec3::one() * 0.98; + next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.03); + next.jaw.scale = Vec3::one() * 1.05; next.tail_front.offset = Vec3::new( 0.0, @@ -141,7 +141,7 @@ impl Animation for FlyAnimation { skeleton_attr.wing_out.2, ); next.wing_out_l.ori = Quaternion::rotation_y((0.35 + wingl * 0.6).max(0.2)); - next.wing_out_l.scale = Vec3::one() * 1.05; + next.wing_out_l.scale = Vec3::one(); next.wing_out_r.offset = Vec3::new( skeleton_attr.wing_out.0, diff --git a/voxygen/src/anim/dragon/idle.rs b/voxygen/src/anim/dragon/idle.rs index afdd649907..9e97adb4c3 100644 --- a/voxygen/src/anim/dragon/idle.rs +++ b/voxygen/src/anim/dragon/idle.rs @@ -53,8 +53,8 @@ impl Animation for IdleAnimation { next.head_lower.scale = Vec3::one() * 1.05; next.jaw.offset = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); - next.jaw.ori = Quaternion::rotation_x(slow * 0.05); - next.jaw.scale = Vec3::one() * 0.98; + next.jaw.ori = Quaternion::rotation_x(slow * 0.04); + next.jaw.scale = Vec3::one() * 1.05; next.chest_front.offset = Vec3::new( 0.0, diff --git a/voxygen/src/anim/dragon/mod.rs b/voxygen/src/anim/dragon/mod.rs index db6bd23dbd..8e4ea6ff40 100644 --- a/voxygen/src/anim/dragon/mod.rs +++ b/voxygen/src/anim/dragon/mod.rs @@ -158,7 +158,7 @@ impl<'a> From<&'a comp::dragon::Body> for SkeletonAttr { (Reddragon, _) => (7.5, 3.5), }, jaw: match (body.species, body.body_type) { - (Reddragon, _) => (7.0, -5.0), + (Reddragon, _) => (6.5, -5.0), }, chest_front: match (body.species, body.body_type) { (Reddragon, _) => (0.0, 14.0), diff --git a/voxygen/src/anim/dragon/run.rs b/voxygen/src/anim/dragon/run.rs index 2619713d4c..6bb74df52c 100644 --- a/voxygen/src/anim/dragon/run.rs +++ b/voxygen/src/anim/dragon/run.rs @@ -67,8 +67,8 @@ impl Animation for RunAnimation { skeleton_attr.jaw.0 - wave_ultra_slow_cos * 0.12, skeleton_attr.jaw.1 + wave_slow * 0.2, ); - next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.05); - next.jaw.scale = Vec3::one() * 0.98; + next.jaw.ori = Quaternion::rotation_x(wave_slow * 0.03); + next.jaw.scale = Vec3::one() * 1.05; next.tail_front.offset = Vec3::new( 0.0, @@ -137,7 +137,7 @@ impl Animation for RunAnimation { skeleton_attr.wing_in.2, ); next.wing_in_l.ori = Quaternion::rotation_y(0.8); - next.wing_in_l.scale = Vec3::one() * 1.05; + next.wing_in_l.scale = Vec3::one(); next.wing_in_r.offset = Vec3::new( skeleton_attr.wing_in.0, From 7f7973992e167ee3e3fa0f0cd28e07572bf76424 Mon Sep 17 00:00:00 2001 From: Snowram Date: Sun, 10 May 2020 01:41:35 +0200 Subject: [PATCH 18/19] Updated changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1978b3b1ed..182145af63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,7 +64,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added non-uniform block heights - Added `/sudo` command - Added a Level of Detail (LoD) system for terrain sprites and entities -- Added owl, hyena, parrot npcs +- Added owl, hyena, parrot, cockatrice, red dragon npcs - Added dungeon entrances - Villagers tools and clothing - Cultists clothing From a546c4827d3c771c2a4f53d7bd5b1b4527b8c675 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 9 May 2020 19:59:34 -0400 Subject: [PATCH 19/19] delete unused jump file --- voxygen/src/anim/dragon/jump.rs | 73 --------------------------------- 1 file changed, 73 deletions(-) delete mode 100644 voxygen/src/anim/dragon/jump.rs diff --git a/voxygen/src/anim/dragon/jump.rs b/voxygen/src/anim/dragon/jump.rs deleted file mode 100644 index d699d23050..0000000000 --- a/voxygen/src/anim/dragon/jump.rs +++ /dev/null @@ -1,73 +0,0 @@ -use super::{super::Animation, DragonSkeleton, SkeletonAttr}; -//use std::f32::consts::PI; -use vek::*; - -pub struct JumpAnimation; - -impl Animation for JumpAnimation { - type Dependency = (f32, f64); - type Skeleton = DragonSkeleton; - - fn update_skeleton( - skeleton: &Self::Skeleton, - _global_time: Self::Dependency, - _anim_time: f64, - _rate: &mut f32, - _skeleton_attr: &SkeletonAttr, - ) -> Self::Skeleton { - let mut next = (*skeleton).clone(); - - next.head.offset = Vec3::new(0.0, 7.5, 15.0) / 11.0; - next.head.ori = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.head.scale = Vec3::one() * 1.01; - - next.chest_front.offset = Vec3::new(0.0, 4.5, 2.0); - next.chest_front.ori = Quaternion::rotation_x(0.0); - next.chest_front.scale = Vec3::one() * 1.01; - - next.chest_rear.offset = Vec3::new(0.0, 4.5, 2.0); - next.chest_rear.ori = Quaternion::rotation_x(0.0); - next.chest_rear.scale = Vec3::one() * 1.01; - - next.tail_front.offset = Vec3::new(0.0, 4.5, 2.0); - next.tail_front.ori = Quaternion::rotation_x(0.0); - next.tail_front.scale = Vec3::one() * 1.01; - - next.tail_rear.offset = Vec3::new(0.0, 4.5, 2.0); - next.tail_rear.ori = Quaternion::rotation_x(0.0); - next.tail_rear.scale = Vec3::one() * 1.01; - - next.wing_in_l.offset = Vec3::new(0.0, 4.5, 2.0); - next.wing_in_l.ori = Quaternion::rotation_x(0.0); - next.wing_in_l.scale = Vec3::one() * 1.01; - - next.wing_in_r.offset = Vec3::new(0.0, 4.5, 2.0); - next.wing_in_r.ori = Quaternion::rotation_x(0.0); - next.wing_in_r.scale = Vec3::one() * 1.01; - - next.wing_out_l.offset = Vec3::new(0.0, 4.5, 2.0); - next.wing_out_l.ori = Quaternion::rotation_x(0.0); - next.wing_out_l.scale = Vec3::one() * 1.01; - - next.wing_out_r.offset = Vec3::new(0.0, 4.5, 2.0); - next.wing_out_r.ori = Quaternion::rotation_x(0.0); - next.wing_out_r.scale = Vec3::one() * 1.01; - - next.foot_fl.offset = Vec3::new(0.0, 4.5, 2.0); - next.foot_fl.ori = Quaternion::rotation_x(0.0); - next.foot_fl.scale = Vec3::one() * 1.01; - - next.foot_fr.offset = Vec3::new(0.0, 4.5, 2.0); - next.foot_fr.ori = Quaternion::rotation_x(0.0); - next.foot_fr.scale = Vec3::one() * 1.01; - - next.foot_bl.offset = Vec3::new(0.0, 4.5, 2.0); - next.foot_bl.ori = Quaternion::rotation_x(0.0); - next.foot_bl.scale = Vec3::one() * 1.01; - - next.foot_br.offset = Vec3::new(0.0, 4.5, 2.0); - next.foot_br.ori = Quaternion::rotation_x(0.0); - next.foot_br.scale = Vec3::one() * 1.01; - next - } -}