From 16326c82095ab59dd8298a61ca6a470cf436cc03 Mon Sep 17 00:00:00 2001 From: Ahmet Enes Bayraktar Date: Sun, 17 Jul 2022 19:00:25 +0300 Subject: [PATCH 1/2] fixes #1803 --- packages/flame_forge2d/lib/body_component.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/flame_forge2d/lib/body_component.dart b/packages/flame_forge2d/lib/body_component.dart index 2552db0aa49..4c3b3a5d8ed 100644 --- a/packages/flame_forge2d/lib/body_component.dart +++ b/packages/flame_forge2d/lib/body_component.dart @@ -125,8 +125,7 @@ abstract class BodyComponent extends Component } void renderChain(Canvas canvas, List points) { - final path = Path()..addPolygon(points, true); - canvas.drawPath(path, paint); + canvas.drawPoints(PointMode.polygon, points, paint); } void _renderCircle(Canvas canvas, Fixture fixture) { From b8550a070152080e8bd3c4294adcc7a06fdb9a44 Mon Sep 17 00:00:00 2001 From: Ahmet Enes Bayraktar Date: Mon, 18 Jul 2022 03:57:07 +0300 Subject: [PATCH 2/2] update tests --- .../test/body_component_test.dart | 33 ++++++++++++++++-- .../body_component/chain_shape_closed.png | Bin 0 -> 22073 bytes .../body_component/chain_shape_open.png | Bin 0 -> 22036 bytes 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 packages/flame_forge2d/test/goldens/body_component/chain_shape_closed.png create mode 100644 packages/flame_forge2d/test/goldens/body_component/chain_shape_open.png diff --git a/packages/flame_forge2d/test/body_component_test.dart b/packages/flame_forge2d/test/body_component_test.dart index 6c961f3b037..b2228b3d404 100644 --- a/packages/flame_forge2d/test/body_component_test.dart +++ b/packages/flame_forge2d/test/body_component_test.dart @@ -117,7 +117,7 @@ void main() { ); flameTester.testGameWidget( - 'a ChainShape', + 'an open ChainShape', setUp: (game, tester) async { final body = game.world.createBody(BodyDef()); final shape = ChainShape() @@ -140,7 +140,36 @@ void main() { verify: (game, tester) async { await expectLater( find.byGame(), - matchesGoldenFile(goldenPath('chain_shape')), + matchesGoldenFile(goldenPath('chain_shape_open')), + ); + }, + ); + + flameTester.testGameWidget( + 'a closed ChainShape', + setUp: (game, tester) async { + final body = game.world.createBody(BodyDef()); + final shape = ChainShape() + ..createLoop( + [ + Vector2.zero(), + Vector2.all(10), + Vector2(10, 0), + ], + ); + body.createFixture(FixtureDef(shape)); + + final component = _TestBodyComponent() + ..body = body + ..paint = testPaint; + await game.add(component); + + game.camera.followVector2(Vector2.zero()); + }, + verify: (game, tester) async { + await expectLater( + find.byGame(), + matchesGoldenFile(goldenPath('chain_shape_closed')), ); }, ); diff --git a/packages/flame_forge2d/test/goldens/body_component/chain_shape_closed.png b/packages/flame_forge2d/test/goldens/body_component/chain_shape_closed.png new file mode 100644 index 0000000000000000000000000000000000000000..85b3ce4dd629a773bd8b2bd3cd9e1d848d82dcaf GIT binary patch literal 22073 zcmeI4{Zm!P9mW>~L<9jr6h!4su!?etU_?bONK^#jYJ9oAU~ZZisKtmSB}VP!L`?$P z8c~KK8oV>ji_>ay?O2BnPQBwygKegfw5dUxQD$0On_|>Sj8>hb_k5pcrT;*u({%ZT z^PIhBKfBL<_q%(RJ2bm07eqxQMJT1B$`+O`Rce?=siEQFVSzhcf4mnG_!ZQ!bU}%F z=Y!0U9$exIs-FIN zRNxW(^n7_;Un*;5qVJ(d8tIETVJY{pyB#DR)|b{fD^y>{ zn98*k#ugJTIu^_%GP#AZU{bDGEEo!A4K-T}hJx8~nT;qz!EB+;n*~F`yl|QKP=nw)5IV!#2D3QQ_6so>vI z!HI^fj~nBc#D|t=KRBEB(s$fpL&|R6zTNTD$1m3G3ax4V$?K!_r%Qqd{{pp74gQTf zWAGbt;ll=xqs_-t{yWZ`xiemd?A`6x3swIcXSPNMq<2qF&*lez*k*rwQqB4NeCh`E z-kqM!$uCamxm9x`HE=WUZ^81%=6UyT?YvnYxRtZL@bu$>g6@0A@7PbNEj@|P+rQ^e zlo9ttq)9-`M>jo5l<6p)Oqm8bi!v2*5oHSGYRIi|a)#~5kCmnrBAnVg!|iCZ)`iHq zaCY%7`@1sE=wQLOrJl9FMdi&8l4r_epR~`Cd-qF(T34GSB5NO$b7cSiQmNu3v8#aH z0IV+$*nD8!#I6Rmj@T$*PZ663>>6NQ#9jw>60vQ-wi3Gr*w02vZ+-0T^WoCeK4M!j z#YUh_iNI{nlFs%|rc8m1piG0zhMdFFNJ_N0e;nj#mX4xiDM5!>8jI4y8K`+WM>I98EbNGMaKBBrT6z1UZ+b1kIqV zL@B#lL2f2WE65#BNp1oqxg#ja4Wk6N_Xq|oGgHFkS~&*nK%C6QFOU(eP)v$@aL%6w zBd=q&c~W8IDLCgFBSt!B!#Vdp89#3nu-U-6h)n?YD6xBh{fO8oU_T``6WFW7rUUzP zViSQa0Je`<&Y(JA>xrEKY!~C?5U_tiO_nrRF9Cc193xg_pwRy!8u2lr#yWx~et^q|Ag|2RVnOmnm6ViCBKH2qSVBO}={&kmq! z`^Q4Y;90hDtTfsG8GA5QeDl=6sQww^n{Nu9bnTLg`dWaQgcur_k4D5#lqhM$gi^cV zTQ|l>Ef+7Wal~!__ETV;%Yj`Ftalc$OozR|x{0j?_875wz^)*+1K6JtTMg_eVxI+e zfY_D5K11wm!8+JmM+hXdp(7HKE;`~N<6w;=8FDyf2ILURY{*%ZSdko$P|iUqyXy#r zOk-&jWD?~l$dQ!eAh}dHCPD_YbgIbSLm0634jI2|Wf-uED#;&T(786G%dK?oeMIYV zOepJ37}*Br{NEEJom1ePr%a6Wh63wDcU{D~fjvrWHn1NNdkWYM#Qq7`H;FwC?0#Y! zf&CV-<-mpzi{94%7`^QSwrd`GTLNV^mDoODe@ko~uzuGa;-oY-1mcN3cjY(B9az;Z!S7%sQQP7~}gjeS(G&uHuv!A>W( z7uZ$Aj@cotNYwHbkr(OWnB5`|YPnbBDlPZpSuNW{eyFRGrNL^^Qr^w1C6w*p#%c-f zhpeg{+!igtU7{tpv08$Ana))#wpUzd6`gxa@`sm+SCvb;?A^%$Ti;|yPwisH$x<=$ zBo7}v1!ClCPADJt8&ipO1AB?sY+x4?+XgHXuUaEmm&R@s>?Dm{A=p-poh{f!8jJ15 zL}L4Z?IyNPu>Ntxo)T;dGlDfwtl&&lSDNk4c5y$eCP*W?O3-(Ojr2^u2&iZ&oymn= zRf*if{kqD5#5=lDn;42)@bF<7Q5G zqa1cR&Ry9$qI*xeO#Akb!2|g+90u6;&24c2nn-$Ht4Aca~e<~n?*8bj^a;Wm9 Q^ERODvC7hSN<2IM1+U4Mo&W#< literal 0 HcmV?d00001 diff --git a/packages/flame_forge2d/test/goldens/body_component/chain_shape_open.png b/packages/flame_forge2d/test/goldens/body_component/chain_shape_open.png new file mode 100644 index 0000000000000000000000000000000000000000..6cf32dee29a19cdd0cfb3646fa2f3a9ef41c0de6 GIT binary patch literal 22036 zcmeHPZBSI#89u1!A|l`yAgBxY9Zfchq9&RPf`}k)gs82cw-Zf`!4ZQcsXETBLE{HT zqeRyj$xbs>#~5bQL}ImV?qsIXNf~FGrq0Hw*{Kt&9WXl+pl`VJeJE2w z-=6EI7EA^GVBvrD!9v%kr=E;GL9+_(U91n)WIdeFUElV1KScBBUnAAEPv8fg5G;K< zA#_40y&LpyP)e5qT?%w5U?tGIfsXk8^@g_fOZz$R0_d8kYoe}+x+X?Fpi6-+1-cac zODTA}er=y;KQmH_Z=UaL?@TVcvwBK$MXGzKJw3Hby_e~Hv#>|^U!V4>?!Qlu?0!4W zmC*etT7TXBU*Z|-<9owrs&M0Dd#-gobK4b-=e87iPVBuj;zd_1kk*-A^0>8m%m=Zz zk^JN1&y* z2=gv8BD)9~f<%PivNIR(_83Us3SWG~wEr_C|AUgT3oNEdAVDM>8zDKgT|(fW2+6f` z#8W{^o{FqlMcTulttRbm(6-W3*FifSE5TTHJnI^_aRLS-BjC3m!;SVsnEDq)&-xr8 zxPXNfch^;j)+PUM#R%ITNMEEP<2#8DefA6EwkQ@p)(m@?sUzq@xgtus&PTzJau7 zkO*&*wnogeULox*(4GLTJrQsx;Tpizgl_@PBkTkmPnaT^ZN@{gnJ$t&k3g~ql6{9D zIUSPQ>BeRR`zbc`kKn0y7(R3)>k!h>dKR=3Kx?3|n!V|%2}0{V0-mvGgjJ&@&(%kW z-V-!_975n&nDJ0iTzbN!mA&=jdn&!5r)-^+(XY zK?6pCHkE#x1beO!E(AP6NNZ~d_hEDx;V%UmYbp6@NFD>pfk#Dhko7OLMI_%SfaKcQ zBKciPZbPyBAtir?ta*!)Cn9TxkhTpfo*?ZrLL2T&+L=PTmn&t-pc};C8~1fXs_9YFhXKNVZ>u zK?`7zg|;%SKSqsm(F|8`8{1dm3Y8|FF_&{@Z&@h72pG9yd}t3u__IYs2m4?U)&35; zyt-is%|;wH)Orbs#fGG2Na?gMk@g5^Ye<_ZDP_(lJPbI~8O4_;I-`KY2;(5RH(lY* ziM4;<>yT`^MRGe1c*+CG*Kur7V4ZV_5fANu%l zp*_xK<^|7c7Og>YfOSsMYM|5y!?Cth7WNOP0Y$Q~msxL4!ouu89)#c%7Dpe-(ud?J zN2H%jz-`uO(5|Bai9&0q(|}^34R0pg3b>3A)`n*h;4@7d1#|v{^ zPAmjB*t!GQ1-F?dp+?yOK@C=-F$rFgL1&-4$s8k9AB&Bd-!31bmI~ zJwP8}B_P{~ItB|C!yq*ao8((+?n2t!V|uz#(_pPilK_QS0jx4vxTBl~t`rLzIMa_( z^9U0=*c3C@x1V$2Brw@VtOhB+GZH9`paMjY3|BND_q$Ff$x$# zCVLDeMs|zhcN{2v(3)i4;N}?6g({wE>`a?d}-sJ8#+OlbFbi`l&LDesU&u-zpg!_li>e-dqk4YHb~X;od0}7|FgStM|c1Ga&rLAHL+@-e;xBew42_K zPv)PpqosK8(b)eBaDOxPx8ZJ`c#a?LEAe#tIBwH*3!c#F!;H`gp%X%vM_nGH9?+#g zmjYc1bScoK;Jf$g^f8g!LH7pT8~)wB!Qap+Pv_0O?|+@ukQRG*FQ4z