From 485e86342d841f57302c014ea64a8ca70a83c7f0 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Mon, 24 Apr 2023 11:44:11 +0200 Subject: [PATCH] updated example mod and docs for new clothing texture layouts --- Content/ExampleMod/CustomBottomsShoes.png | Bin 1439 -> 1441 bytes Content/ExampleMod/CustomHairs.png | Bin 1184 -> 1129 bytes Content/ExampleMod/CustomTops.png | Bin 1127 -> 1212 bytes ExampleMod.cs | 4 ++-- 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Content/ExampleMod/CustomBottomsShoes.png b/Content/ExampleMod/CustomBottomsShoes.png index 1fe53cb82ff696008669f7f83fc7466a044c1e50..b627a4ef9d52ba0e63141705757cc3599ec53a2c 100644 GIT binary patch literal 1441 zcmZ9KdsNbA7{`CWyi$pmI;CJ<<|&s$OSCN0si5LDF_%uAIwzZ&mo!NwM4KINdF!HP zDJvDy3hz=n5w)@sWui$+3NF(?8RmTvINHwHX}#yX@AE!?yw5qG@8``s;p4VlQ(qGR zfbCd!G)`GFm7Armsyx~FSemkcl5uX%0DTxP0sxg@EZXU0>P^X1Z)wd@Smq2qrWpA& z69~zk*#_UY2d0VvhFN;^Gl=zew{Z`5FgtvOTyA6N+4QYx;?5}@kaFB7i(({`Kwj3+ z7hJVVM@6fv89`-!0-l6mFeHiCjYiL&ci_Y{k{)$PJLB7mLm!bogdIc}j)=})Zn0=> zv9Lz4^!lyrC%aTl>qtqjw;sbCL5Yc9uzIxtH8%hbS2pC3gz=Q)`MDvDJa#*xrIs{` zs>yvS&nRD5tDN9B%PjMq(P(73Cq7|dH9}xV`=ArZB^0ikla4^XLD%lrjIP9wS+b|s z52`7j--gWbi=x!LJb;NFMkJX`_8@-3^3PS8J#Z0$BrCMJ68D|+UCMt z3!9x!&578gu?q_UE3YbfjQE~r)fw~FOx2;A%ZKI^Y-R`n0aONdrtGC#S`cj2&Bd2NNb`b@`b|>qkX(hF73Tfw^qgI zlhZd|-HEO|BfeL^F!|R8HTp?C>dzBBOxt8!|21jgXWEpg4j>g1I7)Y5c<@HBk+c8v z{jhhgC|X7#SUXwA-W-t49c&oDPXsq<7=j35$yMl8Z>kg!q4x zA6KvBf0BGY?YaJXN3mTvT>?W`2?!R)!g1iIitZ}huOi(^$Y;5y?z2ZO{+=?mDVKkp zR_z&77R2wUVHQP`yQZEnrF9JrUSVVs$&8k>Fxf*A6y&-G1o%n#9S971*`EBJW5w!{ zdt+*mLpz5l-5a-T?>kNDP};bzS^@>Zmc(!PE^%e!YU&6rkkBvS#cMY9x&oufc$cm! zt}}`fBu{!B+_JO<3%zI46c0LlM`YImr-3^Q=_7qZu^X*6auXVzVoVaaY2D1-y4*a+ zU0HYd?b$68vaT~GqlH*-TOH36CrM4ntyw7=8zpu@ta@Bac8X>Z!k#kb>82z}c+U%8 zmXpMbjSVp^QgX#0ordg>x0D(3ZBfD5WmmKi^IgNP)cVYjr2bB#_b6H=VsZYnhybB= ziSk3vS<5|joc%YP;)Off;*KG)PM$9|2kveF+m?4OOZ&Bvglb!5*lFG5opRp`x&Q(I3qu7@&*05PrW`puYj= zQZ)}edMOhYzyK#aEF0VhUplw@yf#?4bQ!`bkKEFDxX~Qa$|`ewJ&p=8MvGW6Z*~yP z(};PgvK5Na$-A8MTU8f~V={3bcTf9?RsPSi$SZ>$Z@x2D9L9k*mD7l8iaCp)7=b|nE4-`RboQGUQ%o3n!=B9z{isEuvV z3eWgnP_XA40k*t|eTpmSFof(5LQS?@f&N0mPUZv(u@O(+qQEu;| zlef9HX^SB1RBJpq6w=M;61UePO}CH`t&ey|YPSG~E^DwxJUjbikHz?)>CWL7{sw(N Bk>daW delta 1407 zcmZ9KdpOez7{`B;T#Igx>Pf06x8ZTpJ$t4lje_ zGDEekZM9&ZmUQ;Kv{ zFaiMzj=9V3iRgPF$ZbJEsc%u(B8M$^rfO1= zftQAm&yzX-(wGwuGiu@p4OI9g6MDXdZz=(3gL7YXK>9M6WQo!)OIbGZenMTMqG zFr%L~>ESX(Ulg&oJarh$+)%)YdIwl^R1ueAp3y9>8W+oZy7oJNl$Bxi|K*H?dqlN> zi?%*LsshQbj`!1n!QK_gD%~KxF7Kp{6L2sA=MK8zfJ(a-J4`>_%i~rvA$kuHJCTQ{>o}_ zG^nqUDriF$x^RT}U#Y=CK{+fMO2{jZGNEyi8tCk6 zT>PvGPE_xH(f@WS79$QFwyd|^7ShG@@^85#N~#@#|ISm!U1gpAxXld5JIN2cJH>Oo z6-$xk@3J7?lGm~YJxl%pBBWwKquGR;_V~RTJU_=I+B;@x8V9;{;PS%8@t&Io9!OB! zu6V~mVR#_60O^JNV=`D~*DPd2+cZA^%D_$uqG!M8_Cxh+&QZ-XC`TVF4S)O`OoK_o zq-+$apxPys8%NJAYiwo1-7Z}lIXz_3lXCEAaaENMv#jpH+?pHBw*nc41`h=^Vks`k z0b@Nk9iRtk=%ClU0%-$79m41tZg`~qfHBR%ySF8nD=p6;Va@t##jftVKAc%&(@!}* z>HJ&A22ETxQ47gFq<#f5qqk-*jQ{Xa1*vW4&YD{&RXD z^bYutuqk;GLh&JQsO-S)S3Ut{c|NT!mHU6R+1eL;*|^)Sn<7Cad1qynMXP5o+R!DAZfG`oMjS;R65L<7qp?h)fNiTra*0eP*Qc|lF!vI z6B`-s`kSbvyXzPUi-Wn3*d-w!Ch%+a@I`$)@C$r}{+zNRQ8qfB*AZx)ANI`N-o7!= z+62eesv8KLm-tbs)Tlz2Ey$6|WCnJG68Su3kHHr+3!vs~_X^>L?+ZX~fp-9@kdT45 j(ZbSJ>bwF50Gs_F&B6WFLpw)}Z-Q>laHrbKArJloeCD+B diff --git a/Content/ExampleMod/CustomHairs.png b/Content/ExampleMod/CustomHairs.png index d5863e9bb93801ca653e6c1fbcd8c18a9745dc55..4f9a55df5730f48365176a1d0e7eee01c37a793e 100644 GIT binary patch delta 1121 zcmV-n1fKh#3F!!s7k{7#1^@s6ye(>600001b5ch_0Itp)=>Px(BS}O-RCt{2o4anS zKoEupl*kQ@jf5+zRDLI(!3C}mg++m=OyOtnJ5i-_6(sCt8{}e7VGUWsa@qKhoap>t zWx>v6huy`}{1Acv8>{a|6324sx^%57avX3zR@Ddb4 zP!I$U0XdN&+GBzsu-M;}EyVWx#6HevGO<_lXItJry8N|g01?sKX4AR0iy~|2FiPTB z>Q;=-*O2{tQ8cHwiM=kS<2ZD!Dta#pZT_7C@B}Vp`G0WzkY#e}9&A4;_BCZY9rIjr z@@wBWwr}UpKHfGP?HST3KoZB2-?{CHsQXcey6+hFu}{;%)uY;foX?#&Q|#OMtA0Pu zXKntyTR?Ycw9f<`x-oqRP@g?NHTGp<-;T*X*1kU}|Ay1)^iXZnKSD#kro>i#nA*2( z4p}C@;(z1Em?PO=RR91000000000000OkYj@gZZh$I%`~dmQa?^&Z;eXpf^kj`sLi z0%(tG#-crL2-@QS00000000000000m6A(xY8ABiefdm8+5J;%^AdrAS0s;vLB*qee zKteMX0trJPkN^Mx0000000000U^dVmA2LRJ9DnU`w8zmNSMQ-cj`ld(<7khMC4lz0 zW-Qv{hM+wT000000000000000000000O0Rp5#41e*Qz3-Pa)AW>M$ML?`Nsn(sd`R z#^%IM;#jf}k(F6f^nj+YUygIDYa{jNT-Zz3Z4{L(h@2}J3n*CuYNGy}3!CUJBwV`g zgMXmOL=rQ`AY9kULZmTG;8b+lL5{_-ryzuwv}KYwmL^-+ zCi;|-{q2KK$1aL2oeXXaldWko)+V}FckTO~rSt4oP?x@XZSDJ`2dysdSU$RVeZH7R zC)ieoGS7;ob=Ui1F{jf>vQ|*%Q@0iRWPiFuca315O3eO_W#30%>>voNOIgw(%Q~`K zqONLGrw%2e#{N>4y&}mM{;>^1iv@~v6@{075CpvkEMMmj9af(Au!MI}WbrovjN>?T z%yYR7!-p-h_IVYMeL%;8WSvXf=L|9YgIL>ah?oML_I@<5L&cc zEGUU%`MOv%dSmrf+jlVj_+QZ>)ThZ4e%oxCr>Yit)oF}h-q5n00000NkvXXu0mjf&5#UG literal 1184 zcmeAS@N?(olHy`uVBq!ia0vp^4nTZ>gAGV-xtR*07>k44ofy`glX=O&z!K%@;uumf z=k1*Rd5awc+SyjI>|W&cwEU4|%mc1K7d;)V-6xEH%#B%EB&zZzOVUrJ=cd*TAodg zZb=k9Az+vNUh01=)4cD$KfSFIP41cVIi}|R^iY{<|J!TRdtSc1BcTjrZSP7x|Gn1o z`A&)CCvU5!KL5MVywU1M`_CA=r2OvxiFWHJU6|bf)T9(7xoh2DtJf+YOB71)*V>$U z{;9|&Y=7*V*&n+*_Q>>KeXmx|c|kLyXQD<|p4AnHT^ZXt7o7;Mcb+!k)@$Kv+qp-M z?vvYp>(!@?NAvG8yST_rKfOB}Xxc8b#lEwqZIev?d^Pny(8S%_yZ5g3zyJMdkODO$Z=rPVV(fvC2 zwv0!u?X4B-tzBzva<|XjygcuJmDSy^#z*!^*57^q`ejP*{!-2xX1&kmB^IA+_K29x+BN88@g@yAHoDo z1rTto`BTMo!>5I(9#1*0*?;|gpxkmBzsfnED&iTY9M{d&?6-ERlz}N`NKg^*D3Mg2 z;Godxz|`pSSB{C3MTi3^_=UB>;m{?q#ujA`6}W0QlFSBc`=>MS#BLp6uql0t_V^-M zI)iuZ_thb}Vl2&}$;n1Hmt?MVatTf2y~w<4QQg-0+h1Sx{A(#TIZ_~`%S+Uy@9Io0 zjZnr{i~h-Ucb?cip+Jnqyh%;m(?@={&ThfDvrP+xoObTKlWua2g&H11AgsS{>u3z)$MsVY! z2+xZz=btpL^^=cW&Sw$d?3Q_uN;CM&mglnIrFrkRUc3mtfA+u{`2m`!h8J%mx1`6u6{1-oD!MaNgWg{1E8 zSTJks&Y@L8kut%(6aC&0?pStOCc~iYb#)xn>RZ#n@aZ~r_=<3Ics=-mGFTenOCU7( z;>t*!uKCb*YI3Ugg+p00<%;MW##!ofRR9HJUQj?U)G|gB#>_kVv1cFM8xZD}7@-G( zD3pLO-oH0y$zi;#GJ3qiAVU;KY%}If*AS8>jimC_eYnJ&yCtwv<0$0%=;+tWC!-`_ z3`85LqRj!zY2XS|yue)PpD(Vay31i*=!i|}=Q)r!Y5`#2@=N2?PG<5J0bBmkIKsgb zWI_|}9}efB$^-~2}CRK)7K7+7<%0%}J=KPbFW-{DBK#BCBcm8R8hRA-O_yuIf{aEaaVr^>O zO|7^IU(Rn9Cz$ssx0L}M`tD_$%=-`9aAIfa%thY{J{=QGKj8N5t?R!&H$mxke;+da zD7%Em6R6W6{!P6<_YO275)t`|OT}RDx$962JaW~)nA9|=v6PNEqS`0mO0OdgwDWj` zM9dJ&eXrc0y>v5Sk;_X?M>tT@P!SGlyDG_G)J>{K@$3U`{fecM{f($b(!nkb)TtT*lkTxf z{t`t5J7$-*zlL|z8S(@&YZq$nOOdy^gGWHtAkq)?+ov<;{$o)|*aq|9D%y98k$sBV zC9b5%TD~`Tmx|V>yt6mg?F6C*Z@$fW^8Np^6Bn6Y9%ewDc-HcBd6rP8b9tNqcBb|F z)|jK)Tq7T^*){n^G7ej=U3U*5I;dz>cv3RnRz-8}Q*tFn1~AHJ3-G} M3LqU85Ti2w0}N_2jsO4v delta 1119 zcmV-l1fcu83Fioq7k>Z<1^@s614eKL00001b5ch_0Itp)=>Px(AxT6*RCt{2-NA~h zJQTq3<8X&zpv)t(+q8~~r#Pv9BNehJ#QLd-p=iFL*IeJ@?tsm}lL z@geW;?+^PBGy~S0f_w80Kv5J~-}g}$V&b)b!tB@-=bvli-&_M-*DXGIOzbnn0{{R3 z00000UXl0r`hRhXt1L^^Z~L+FyQashsv5q&zV2STUa!Fy5gWg2dVD-`DTTB>cgz~` z&eYi3n<{A>B&N+>(&J6jB9Sf1yZ-R9h}MNwpP z$Ao+bJc=K`@0>6b^DL4nf?)dlj_u^S#$A4-Ea;x;Xa{$`5z56@fwypZ) zc1%@OgSL&X>+b$(#l`~w00000004m3!}jCKfr_a16V&G9P0-N z>jx~3eTH}d00000006)%B0cVUas2#$iqurh`T?7!#Bc$ zzV8?Bad1AL2fG~+nN*s1i=^y|j`5Z`A?%pY>X4!+GJ79_n2Q(r+2Fx0vS{0Oeg?Sq z2eO5Jl5-avGMmg4{`~xm8UT@>Szrd$b>7JUh`2xT&_X3wfs$cXl3DtlvW7`V?9n$& zxqpeKN=rn<+|MHaZ@KYI7at^M@1HI94FUiF000000002Ou#Ao`_$a%?#KyDBjO##l zneq6OyUdufn7Xb9%{^$2y<9HCVRxCaYl1WvU>~bpKWJ;-LdhjN!=!90)e<_7JZ+^Y zyUYLp00000tc1*vFZd{#o!EG1W+>)~ZGWHJ?RK2ZkjT%^+2fzImvq3@j@Fu)p~IpdKS2%G zhvOZ9tuixvpZ{q$SlBxr000000001h7esx4FZd|={n+?FUmu`)Xv$10-zQPm^;jx{ zx3oUMwYv3~Gd*6GrMIYIZW{XD%kw;Y))l2yPjfDLa&(E^pB!DInBi~*65|dpDUev$ lClR4OVE1?c00025?LVek;%jR7k;wo6002ovPDHLkV1lK2CRYFe diff --git a/ExampleMod.cs b/ExampleMod.cs index 75a1074..1162028 100644 --- a/ExampleMod.cs +++ b/ExampleMod.cs @@ -106,8 +106,8 @@ public class ExampleMod : Mod { // loads a texture atlas with the given amount of separate texture regions in the x and y axes // we submit it to the texture packer to increase rendering performance. The callback is invoked once packing is completed - texturePacker.Add(new UniformTextureAtlas(content.Load("CustomTops"), 4, 8), r => this.customTops = r); - texturePacker.Add(new UniformTextureAtlas(content.Load("CustomHairs"), 4, 6), r => this.customHairs = r); + texturePacker.Add(new UniformTextureAtlas(content.Load("CustomTops"), 4, 11), r => this.customTops = r); + texturePacker.Add(new UniformTextureAtlas(content.Load("CustomHairs"), 4, 5), r => this.customHairs = r); texturePacker.Add(new UniformTextureAtlas(content.Load("CustomBottomsShoes"), 8, 6), r => this.customBottoms = r); texturePacker.Add(new UniformTextureAtlas(content.Load("UiTextures"), 8, 8), r => this.uiTextures = r); // wallpaper textures require special treatment to work with openings, the x and y values are passed to the UniformTextureAtlas constructor