<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Emanuele Feronato &#187; Box2D</title>
	<atom:link href="http://www.emanueleferonato.com/category/box2d/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.emanueleferonato.com</link>
	<description>italian geek and PROgrammer</description>
	<lastBuildDate>Mon, 06 Feb 2012 14:28:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>SamePhysics Flash game source code released</title>
		<link>http://www.emanueleferonato.com/2012/02/06/samephysics-flash-game-source-code-released/</link>
		<comments>http://www.emanueleferonato.com/2012/02/06/samephysics-flash-game-source-code-released/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 14:28:18 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>
		<category><![CDATA[Monetize]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=5138</guid>
		<description><![CDATA[The source code of SamePhysics, my first Box2D game, is available for download]]></description>
			<content:encoded><![CDATA[<p>More than three years ago I released my first Box2D game called <strong><a href="http://www.emanueleferonato.com/2009/01/12/samephysics-my-first-box2d-game/">SamePhysics</a></strong>.</p>
<p><a href="http://www.emanueleferonato.com/2009/01/12/samephysics-my-first-box2d-game/"><img src="/wp-content/uploads/2012/02/same.jpg" /></a></p>
<p>It was an experiment to port the famous tile based game <a href="http://en.wikipedia.org/wiki/SameGame" target="_blank">SameGame</a> into a real-world physics environment, and despite it was nothing that a prototype with some bugs &#8211; especially with collision management &#8211; the game got some success, with about <strong>2.5 million views</strong> and two sponsorships by Rotten Tomato Games (now offline) and <a href="http://www.girlgames.com/" target="_blank">GirlGames</a>.</p>
<p>Now I am making a sequel of the game, more polished, fun and playable, and it&#8217;s time to release the source code of the good old SamePhysics.</p>
<p>You are warned: the code is &#8220;as is&#8221; and it&#8217;s not even the latest Box2D distribution, but I think it could be interesting to learn the basics of Box2D programming from a real world successful example.</p>
<p><a href="/wp-content/uploads/2012/02/samephysics.zip">Download the source code</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2012/02/06/samephysics-flash-game-source-code-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Play Slingy, my latest Flash game, on Hairy Games</title>
		<link>http://www.emanueleferonato.com/2012/01/27/play-slingy-my-latest-flash-game-on-hairy-games/</link>
		<comments>http://www.emanueleferonato.com/2012/01/27/play-slingy-my-latest-flash-game-on-hairy-games/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 15:48:07 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>
		<category><![CDATA[Monetize]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=5113</guid>
		<description><![CDATA[Play <a href="http://www.hairygames.com/play-slingy.html" target = "_blank">Slingy</a>, my latest physics Flash Game sponsored by <a href="http://www.hairygames.com/" target="_blank">Hairy Games</a>]]></description>
			<content:encoded><![CDATA[<p>I want you all to play <a href="http://www.hairygames.com/play-slingy.html" target="_blank">Slingy</a>, my latest Flash game, sponsored by <strong><a href="http://www.hairygames.com/" target="_blank">Hairy Games</a></strong>.</p>
<p><a href="http://www.hairygames.com/play-slingy.html" target = "_blank"><img src="/wp-content/uploads/2012/01/slingygame1.jpg" alt="" title="slingygame" width="640" height="480" class="alignnone size-full wp-image-5114" /></a></p>
<p>In this physics game you have to beat all 40 levels collecting as much orbs as you can, throwing the ball with a sling. To make your life harder, several kind of blocks to avoid or interact with.</p>
<p>You can find some information about the prototype in these posts:</p>
<p>* <a href="http://www.emanueleferonato.com/2007/09/01/controlling-a-ball-like-in-flash-elasticity-game-tutorial/">Controlling a ball like in Flash Elasticity game tutorial</a><br />
* <a href="http://www.emanueleferonato.com/2010/03/25/flash-elasticity-prototype-as3-version/">Flash Elasticity prototype – AS3 version</a><br />
* <a href="http://www.emanueleferonato.com/2007/12/18/when-elasticity-meets-bloons/">When Elasticity meets Bloons</a></p>
<p>The physics is powered by <a href="http://www.emanueleferonato.com/category/box2d/">Box2D</a>, while I used <a href="http://flintparticles.org/" target="_blank">Flint particle system</a> for the particles.</p>
<p>Talking about advertising, I used <a href="https://www.mochimedia.com/r/972ae333a3c92a2a" target="_blank">MochiMedia</a> for the in-game ads and <a href="http://www.flashgamelicense.com/" target="_blank">FlashGameLicense</a> to find a sponsorship.</p>
<p>I recommend Rick from <a href="http://www.hairygames.com/" target="_blank">Hairy Games</a>: he provides constructive feedback, helps you to make the game better and the branding process is easy.</p>
<p>I also used both <a href="http://www.playtomic.com/" target="_blank">Playtomic</a> and <a href="http://www.mochibot.com/" target="_blank">MochiBot</a> to track game statistics.</p>
<p><a target = "_blak" href="http://www.hairygames.com/play-slingy.html">Play ita</a>, rate it and give me feedback.</p>
<p>I will update you with some interesting new about the game once it&#8217;s in the wild for some time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2012/01/27/play-slingy-my-latest-flash-game-on-hairy-games/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Create REAL explosions with Box2D &#8211; adding textures</title>
		<link>http://www.emanueleferonato.com/2012/01/17/create-real-explosions-with-box2d-adding-textures/</link>
		<comments>http://www.emanueleferonato.com/2012/01/17/create-real-explosions-with-box2d-adding-textures/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 14:45:46 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=5079</guid>
		<description><![CDATA[Real Box2D explosions, now with textures. The final step.]]></description>
			<content:encoded><![CDATA[<p>Ok, you asked it, now you have it. Now the Box2D explosion prototype features bitmap textures and a commented source code.</p>
<p>I have to say a big thank you to <strong>Antoan Angelov</strong> for his version of the <a href="http://www.emanueleferonato.com/2011/08/05/slicing-splitting-and-cutting-objects-with-box2d-part-4-using-real-graphics/">slicing engine</a> as he allowed me to manage textures with no hassle.</p>
<p>So now basically an explosion is a number of cuts at a random angle, all passing for the same point, which is the origin of the explosion. Then, every resulting slice will have a linear velocity according to the distance between the center of the slice mass and the origin of the explosion.</p>
<p>So this is what you&#8217;ll get:</p>
<p><embed src="/wp-content/uploads/2012/01/main.swf" menu="false" quality="high" width="640" height="480" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>Click on a crate to make it explode.</p>
<p>And this is the full, commented source code:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.geom</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Matrix</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">BitmapData</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Dynamics<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.</span>Shapes<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Common<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Main <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> world<span style="color: #000066; font-weight: bold;">:</span>b2World=<span style="color: #0033ff; font-weight: bold;">new</span> b2World<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> enterPointsVec<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span> = <span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> numEnterPoints<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> worldScale<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #009900; font-style: italic;">// variables used in the explosion process:</span>
		<span style="color: #009900; font-style: italic;">// the vector of exploding bodies</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> explodingBodies<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Body<span style="color: #000066; font-weight: bold;">&gt;;</span>
		<span style="color: #009900; font-style: italic;">// the number of cuts for every explosion</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> explosionCuts<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">5</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #009900; font-style: italic;">// explosion x and y center</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> explosionX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> explosionY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #009900; font-style: italic;">// explosion radius, useful to determine the velocity of debris</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> explosionRadius<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900; font-style: italic;">// calling the debug draw. This is used to show you the bitmaps are correctly applied,</span>
			<span style="color: #009900; font-style: italic;">// and because I did not want to draw the walls :)</span>
			debugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// this is the BitmapData representation of my 100x100 pixels crate image</span>
			<span style="color: #009900; font-style: italic;">// check the library to see both the raw image and CrateImage Sprite</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> crateBitmap<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">BitmapData</span>=<span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">BitmapData</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">100</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			crateBitmap<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">draw</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> CrateImage<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// adding the four static, undestroyable walls</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">480</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">640</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">640</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">480</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">640</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">480</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// this vector stores the clockwise local coordinates of the 100x100 pixels crate</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> crateCoordVector<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span>=<span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#91;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// then createBody builds the final body and applies the bitmap.</span>
			<span style="color: #009900; font-style: italic;">// the first two arguments are the X and Y position of the center of the crate, in pixels</span>
			createBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">95</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">420</span><span style="color: #000066; font-weight: bold;">,</span>crateCoordVector<span style="color: #000066; font-weight: bold;">,</span>crateBitmap<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			createBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">245</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">420</span><span style="color: #000066; font-weight: bold;">,</span>crateCoordVector<span style="color: #000066; font-weight: bold;">,</span>crateBitmap<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			createBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">395</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">420</span><span style="color: #000066; font-weight: bold;">,</span>crateCoordVector<span style="color: #000066; font-weight: bold;">,</span>crateBitmap<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			createBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">545</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">420</span><span style="color: #000066; font-weight: bold;">,</span>crateCoordVector<span style="color: #000066; font-weight: bold;">,</span>crateBitmap<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			createBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span>crateCoordVector<span style="color: #000066; font-weight: bold;">,</span>crateBitmap<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			createBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span>crateCoordVector<span style="color: #000066; font-weight: bold;">,</span>crateBitmap<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			createBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">470</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span>crateCoordVector<span style="color: #000066; font-weight: bold;">,</span>crateBitmap<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			createBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">245</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">220</span><span style="color: #000066; font-weight: bold;">,</span>crateCoordVector<span style="color: #000066; font-weight: bold;">,</span>crateBitmap<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			createBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">395</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">220</span><span style="color: #000066; font-weight: bold;">,</span>crateCoordVector<span style="color: #000066; font-weight: bold;">,</span>crateBitmap<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			createBody<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">120</span><span style="color: #000066; font-weight: bold;">,</span>crateCoordVector<span style="color: #000066; font-weight: bold;">,</span>crateBitmap<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// You can see the reason for creating the enterPointsVec in the coments in the intersection() method.</span>
			enterPointsVec=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span>numEnterPoints<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// listeners</span>
			<span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_DOWN</span><span style="color: #000066; font-weight: bold;">,</span> boom<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span> update<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900; font-style: italic;">// my old friend debugDraw function</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> debugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> debugDraw<span style="color: #000066; font-weight: bold;">:</span>b2DebugDraw = <span style="color: #0033ff; font-weight: bold;">new</span> b2DebugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> debugSprite<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>debugSprite<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetSprite<span style="color: #000000;">&#40;</span>debugSprite<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetDrawScale<span style="color: #000000;">&#40;</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetFlags<span style="color: #000000;">&#40;</span>b2DebugDraw<span style="color: #000066; font-weight: bold;">.</span>e_shapeBit<span style="color: #000066; font-weight: bold;">|</span>b2DebugDraw<span style="color: #000066; font-weight: bold;">.</span>e_jointBit<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetFillAlpha<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>SetDebugDraw<span style="color: #000000;">&#40;</span>debugDraw<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900; font-style: italic;">// this function returns the body at a X,Y coordinate without using a temp body like the one in</span>
		<span style="color: #009900; font-style: italic;">// the original Box2D distribution. It uses QueryPoint method.</span>
		<span style="color: #009900; font-style: italic;">// returns the body ad X,Y coordinate or null</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> GetBodyAtXY<span style="color: #000000;">&#40;</span>coordinate<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span>b2Body <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> touchedBody<span style="color: #000066; font-weight: bold;">:</span>b2Body=<span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>QueryPoint<span style="color: #000000;">&#40;</span>GetBodyCallback<span style="color: #000066; font-weight: bold;">,</span>coordinate<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #339966; font-weight: bold;">function</span> GetBodyCallback<span style="color: #000000;">&#40;</span>fixture<span style="color: #000066; font-weight: bold;">:</span>b2Fixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> shape<span style="color: #000066; font-weight: bold;">:</span>b2Shape=fixture<span style="color: #000066; font-weight: bold;">.</span>GetShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> inside<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span>=shape<span style="color: #000066; font-weight: bold;">.</span>TestPoint<span style="color: #000000;">&#40;</span>fixture<span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>GetTransform<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span>coordinate<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>inside<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					touchedBody=fixture<span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> touchedBody<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900; font-style: italic;">// simple function to add a static wall</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> addWall<span style="color: #000000;">&#40;</span>pX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span>pY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span>w<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wallShape<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wallShape<span style="color: #000066; font-weight: bold;">.</span>SetAsBox<span style="color: #000000;">&#40;</span>w<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wallFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>shape=wallShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wallBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wallBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>pX<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>pY<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wall<span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>wallBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wall<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>wallFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			numEnterPoints<span style="color: #000066; font-weight: bold;">++;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900; font-style: italic;">// function to create and texture a dynamic body</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> createBody<span style="color: #000000;">&#40;</span>xPos<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span> yPos<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span> verticesArr<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;,</span> texture<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">BitmapData</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900; font-style: italic;">// I need this temp vector to convert pixels coordinates to Box2D meters coordinates</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> vec<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span>=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>verticesArr<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				vec<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span>verticesArr<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>verticesArr<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> bodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">type</span>=b2Body<span style="color: #000066; font-weight: bold;">.</span>b2_dynamicBody<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> boxDef<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			boxDef<span style="color: #000066; font-weight: bold;">.</span>SetAsVector<span style="color: #000000;">&#40;</span>vec<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>xPos<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span> yPos<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// custom userData used to map the texture</span>
			bodyDef<span style="color: #000066; font-weight: bold;">.</span>userData=<span style="color: #0033ff; font-weight: bold;">new</span> userData<span style="color: #000000;">&#40;</span>numEnterPoints<span style="color: #000066; font-weight: bold;">,</span>vec<span style="color: #000066; font-weight: bold;">,</span>texture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000066; font-weight: bold;">.</span>userData<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> fixtureDef<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			fixtureDef<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			fixtureDef<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">0.2</span><span style="color: #000066; font-weight: bold;">;</span>
			fixtureDef<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">;</span>
			fixtureDef<span style="color: #000066; font-weight: bold;">.</span>shape=boxDef<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> tempBox<span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			tempBox<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>fixtureDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			numEnterPoints<span style="color: #000066; font-weight: bold;">++;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900; font-style: italic;">// function to create an explosion</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> boom<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> cutAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">;</span>
			explosionX=<span style="color: #004993;">mouseX</span><span style="color: #000066; font-weight: bold;">;</span>
			explosionY=<span style="color: #004993;">mouseY</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// I am looking for a body under my mouse</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> clickedBody<span style="color: #000066; font-weight: bold;">:</span>b2Body=GetBodyAtXY<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span>explosionX<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>explosionY<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>clickedBody<span style="color: #000066; font-weight: bold;">!</span>=<span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #009900; font-style: italic;">// storing the exploding bodies in a vector. I need to do it since I do not want other bodies</span>
				<span style="color: #009900; font-style: italic;">// to be affected by the raycast and explode</span>
				explodingBodies=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Body<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				explodingBodies<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>clickedBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #009900; font-style: italic;">// the explosion begins!</span>
				<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>=explosionCuts<span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #009900; font-style: italic;">// choosing a random angle</span>
					cutAngle=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #009900; font-style: italic;">// creating the two points to be used for the raycast, according to the random angle and mouse position</span>
					<span style="color: #009900; font-style: italic;">// also notice how I need to add a little offset (i/10) or Box2D will crash. Probably it's not able to </span>
					<span style="color: #009900; font-style: italic;">// determine raycast on objects whose area is very very close to zero (or zero)</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> p1<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>explosionX<span style="color: #000066; font-weight: bold;">+</span>i<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">2000</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000;">&#40;</span>explosionY<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">2000</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> p2<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>explosionX<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">2000</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000;">&#40;</span>explosionY<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">2000</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					world<span style="color: #000066; font-weight: bold;">.</span>RayCast<span style="color: #000000;">&#40;</span><span style="color: #004993;">intersection</span><span style="color: #000066; font-weight: bold;">,</span> p1<span style="color: #000066; font-weight: bold;">,</span> p2<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					world<span style="color: #000066; font-weight: bold;">.</span>RayCast<span style="color: #000000;">&#40;</span><span style="color: #004993;">intersection</span><span style="color: #000066; font-weight: bold;">,</span> p2<span style="color: #000066; font-weight: bold;">,</span> p1<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					enterPointsVec=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span>numEnterPoints<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900; font-style: italic;">// update function to simulate and render the world</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> update<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> spr<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">:</span>b2Body = world<span style="color: #000066; font-weight: bold;">.</span>GetBodyList<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #004993;">b</span> = <span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">.</span>GetNext<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				spr=<span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>spr<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					spr<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=<span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">.</span>GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">;</span>
					spr<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=<span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">.</span>GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">;</span>
					spr<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">rotation</span>=<span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">.</span>GetAngle<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">180</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>DrawDebugData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">intersection</span><span style="color: #000000;">&#40;</span>fixture<span style="color: #000066; font-weight: bold;">:</span>b2Fixture<span style="color: #000066; font-weight: bold;">,</span> point<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000066; font-weight: bold;">,</span> normal<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000066; font-weight: bold;">,</span> fraction<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>explodingBodies<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">indexOf</span><span style="color: #000000;">&#40;</span>fixture<span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">!</span>=<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> spr<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span>=fixture<span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #009900; font-style: italic;">// Throughout this whole code I use only one global vector, and that is enterPointsVec. Why do I need it you ask? </span>
				<span style="color: #009900; font-style: italic;">// Well, the problem is that the world.RayCast() method calls this function only when it sees that a given line gets into the body - it doesnt see when the line gets out of it.</span>
				<span style="color: #009900; font-style: italic;">// I must have 2 intersection points with a body so that it can be sliced, thats why I use world.RayCast() again, but this time from B to A - that way the point, at which BA enters the body is the point at which AB leaves it!</span>
				<span style="color: #009900; font-style: italic;">// For that reason, I use a vector enterPointsVec, where I store the points, at which AB enters the body. And later on, if I see that BA enters a body, which has been entered already by AB, I fire the splitObj() function!</span>
				<span style="color: #009900; font-style: italic;">// I need a unique ID for each body, in order to know where its corresponding enter point is - I store that id in the userData of each body.</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>spr <span style="color: #0033ff; font-weight: bold;">is</span> userData<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> userD<span style="color: #000066; font-weight: bold;">:</span>userData=spr <span style="color: #0033ff; font-weight: bold;">as</span> userData<span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>enterPointsVec<span style="color: #000000;">&#91;</span>userD<span style="color: #000066; font-weight: bold;">.</span>id<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						<span style="color: #009900; font-style: italic;">// If this body has already had an intersection point, then it now has two intersection points, thus it must be split in two - thats where the splitObj() method comes in.</span>
						splitObj<span style="color: #000000;">&#40;</span>fixture<span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span> enterPointsVec<span style="color: #000000;">&#91;</span>userD<span style="color: #000066; font-weight: bold;">.</span>id<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">,</span> point<span style="color: #000066; font-weight: bold;">.</span>Copy<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
					<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
						enterPointsVec<span style="color: #000000;">&#91;</span>userD<span style="color: #000066; font-weight: bold;">.</span>id<span style="color: #000000;">&#93;</span>=point<span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900; font-style: italic;">// function to get the area of a shape. I will remove tiny shape to increase performance</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> getArea<span style="color: #000000;">&#40;</span>vs<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;,</span> count<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">uint</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> area<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> p1X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> p1Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> inv3<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">1.0</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">3.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i <span style="color: #000066; font-weight: bold;">&lt;</span> count<span style="color: #000066; font-weight: bold;">;</span> <span style="color: #000066; font-weight: bold;">++</span>i<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> p2<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=vs<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> p3<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=i<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">&lt;</span>count<span style="color: #000066; font-weight: bold;">?</span>vs<span style="color: #000000;">&#91;</span><span style="color: #004993;">int</span><span style="color: #000000;">&#40;</span>i<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">:</span>vs<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e1X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p2<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>p1X<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e1Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p2<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>p1Y<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e2X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p3<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>p1X<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e2Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p3<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>p1Y<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> D<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000;">&#40;</span>e1X <span style="color: #000066; font-weight: bold;">*</span> e2Y <span style="color: #000066; font-weight: bold;">-</span> e1Y <span style="color: #000066; font-weight: bold;">*</span> e2X<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> triangleArea<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">*</span>D<span style="color: #000066; font-weight: bold;">;</span>
				area<span style="color: #000066; font-weight: bold;">+</span>=triangleArea<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> area<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> splitObj<span style="color: #000000;">&#40;</span>sliceBody<span style="color: #000066; font-weight: bold;">:</span>b2Body<span style="color: #000066; font-weight: bold;">,</span> A<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000066; font-weight: bold;">,</span> B<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> origFixture<span style="color: #000066; font-weight: bold;">:</span>b2Fixture=sliceBody<span style="color: #000066; font-weight: bold;">.</span>GetFixtureList<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> poly<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape=origFixture<span style="color: #000066; font-weight: bold;">.</span>GetShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #0033ff; font-weight: bold;">as</span> b2PolygonShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> verticesVec<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span>=poly<span style="color: #000066; font-weight: bold;">.</span>GetVertices<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span>numVertices<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=poly<span style="color: #000066; font-weight: bold;">.</span>GetVertexCount<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> shape1Vertices<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span> = <span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span> shape2Vertices<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span> = <span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> origUserData<span style="color: #000066; font-weight: bold;">:</span>userData=sliceBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span>origUserDataId<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=origUserData<span style="color: #000066; font-weight: bold;">.</span>id<span style="color: #000066; font-weight: bold;">,</span><span style="color: #004993;">d</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> polyShape<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> body<span style="color: #000066; font-weight: bold;">:</span>b2Body<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// First, I destroy the original body and remove its Sprite representation from the childlist.</span>
			world<span style="color: #000066; font-weight: bold;">.</span>DestroyBody<span style="color: #000000;">&#40;</span>sliceBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">removeChild</span><span style="color: #000000;">&#40;</span>origUserData<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// The world.RayCast() method returns points in world coordinates, so I use the b2Body.GetLocalPoint() to convert them to local coordinates.;</span>
			A=sliceBody<span style="color: #000066; font-weight: bold;">.</span>GetLocalPoint<span style="color: #000000;">&#40;</span>A<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			B=sliceBody<span style="color: #000066; font-weight: bold;">.</span>GetLocalPoint<span style="color: #000000;">&#40;</span>B<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// I use shape1Vertices and shape2Vertices to store the vertices of the two new shapes that are about to be created. </span>
			<span style="color: #009900; font-style: italic;">// Since both point A and B are vertices of the two new shapes, I add them to both vectors.</span>
			shape1Vertices<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>A<span style="color: #000066; font-weight: bold;">,</span> B<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			shape2Vertices<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>A<span style="color: #000066; font-weight: bold;">,</span> B<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// I iterate over all vertices of the original body. ;</span>
			<span style="color: #009900; font-style: italic;">// I use the function det() (&quot;det&quot; stands for &quot;determinant&quot;) to see on which side of AB each point is standing on. The parameters it needs are the coordinates of 3 points:</span>
			<span style="color: #009900; font-style: italic;">// - if it returns a value &gt;0, then the three points are in clockwise order (the point is under AB)</span>
			<span style="color: #009900; font-style: italic;">// - if it returns a value =0, then the three points lie on the same line (the point is on AB)</span>
			<span style="color: #009900; font-style: italic;">// - if it returns a value &lt;0, then the three points are in counter-clockwise order (the point is above AB). </span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>numVertices<span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #004993;">d</span>=det<span style="color: #000000;">&#40;</span>A<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">,</span>A<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">,</span>B<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">,</span>B<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">,</span>verticesVec<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">,</span>verticesVec<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>d<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					shape1Vertices<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>verticesVec<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					shape2Vertices<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>verticesVec<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #009900; font-style: italic;">// In order to be able to create the two new shapes, I need to have the vertices arranged in clockwise order.</span>
			<span style="color: #009900; font-style: italic;">// I call my custom method, arrangeClockwise(), which takes as a parameter a vector, representing the coordinates of the shape's vertices and returns a new vector, with the same points arranged clockwise.</span>
			shape1Vertices=arrangeClockwise<span style="color: #000000;">&#40;</span>shape1Vertices<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			shape2Vertices=arrangeClockwise<span style="color: #000000;">&#40;</span>shape2Vertices<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// setting the properties of the two newly created shapes</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> bodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">type</span>=b2Body<span style="color: #000066; font-weight: bold;">.</span>b2_dynamicBody<span style="color: #000066; font-weight: bold;">;</span>
			bodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span>=sliceBody<span style="color: #000066; font-weight: bold;">.</span>GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> fixtureDef<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			fixtureDef<span style="color: #000066; font-weight: bold;">.</span>density=origFixture<span style="color: #000066; font-weight: bold;">.</span>GetDensity<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			fixtureDef<span style="color: #000066; font-weight: bold;">.</span>friction=origFixture<span style="color: #000066; font-weight: bold;">.</span>GetFriction<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			fixtureDef<span style="color: #000066; font-weight: bold;">.</span>restitution=origFixture<span style="color: #000066; font-weight: bold;">.</span>GetRestitution<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// creating the first shape, if big enough</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>getArea<span style="color: #000000;">&#40;</span>shape1Vertices<span style="color: #000066; font-weight: bold;">,</span>shape1Vertices<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">&gt;</span>=<span style="color: #000000; font-weight:bold;">0.05</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				polyShape<span style="color: #000066; font-weight: bold;">.</span>SetAsVector<span style="color: #000000;">&#40;</span>shape1Vertices<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				fixtureDef<span style="color: #000066; font-weight: bold;">.</span>shape=polyShape<span style="color: #000066; font-weight: bold;">;</span>
				bodyDef<span style="color: #000066; font-weight: bold;">.</span>userData=<span style="color: #0033ff; font-weight: bold;">new</span> userData<span style="color: #000000;">&#40;</span>origUserDataId<span style="color: #000066; font-weight: bold;">,</span>shape1Vertices<span style="color: #000066; font-weight: bold;">,</span>origUserData<span style="color: #000066; font-weight: bold;">.</span>texture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000066; font-weight: bold;">.</span>userData<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				enterPointsVec<span style="color: #000000;">&#91;</span>origUserDataId<span style="color: #000000;">&#93;</span>=<span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000066; font-weight: bold;">;</span>
				body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				body<span style="color: #000066; font-weight: bold;">.</span>SetAngle<span style="color: #000000;">&#40;</span>sliceBody<span style="color: #000066; font-weight: bold;">.</span>GetAngle<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				body<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>fixtureDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #009900; font-style: italic;">// setting a velocity for the debris</span>
				body<span style="color: #000066; font-weight: bold;">.</span>SetLinearVelocity<span style="color: #000000;">&#40;</span>setExplosionVelocity<span style="color: #000000;">&#40;</span>body<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #009900; font-style: italic;">// the shape will be also part of the explosion and can explode too</span>
				explodingBodies<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>body<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #009900; font-style: italic;">// creating the second shape, if big enough</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>getArea<span style="color: #000000;">&#40;</span>shape2Vertices<span style="color: #000066; font-weight: bold;">,</span>shape2Vertices<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">&gt;</span>=<span style="color: #000000; font-weight:bold;">0.05</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				polyShape<span style="color: #000066; font-weight: bold;">.</span>SetAsVector<span style="color: #000000;">&#40;</span>shape2Vertices<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				fixtureDef<span style="color: #000066; font-weight: bold;">.</span>shape=polyShape<span style="color: #000066; font-weight: bold;">;</span>
				bodyDef<span style="color: #000066; font-weight: bold;">.</span>userData=<span style="color: #0033ff; font-weight: bold;">new</span> userData<span style="color: #000000;">&#40;</span>numEnterPoints<span style="color: #000066; font-weight: bold;">,</span>shape2Vertices<span style="color: #000066; font-weight: bold;">,</span>origUserData<span style="color: #000066; font-weight: bold;">.</span>texture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000066; font-weight: bold;">.</span>userData<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				enterPointsVec<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				numEnterPoints<span style="color: #000066; font-weight: bold;">++;</span>
				body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				body<span style="color: #000066; font-weight: bold;">.</span>SetAngle<span style="color: #000000;">&#40;</span>sliceBody<span style="color: #000066; font-weight: bold;">.</span>GetAngle<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				body<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>fixtureDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #009900; font-style: italic;">// setting a velocity for the debris</span>
				body<span style="color: #000066; font-weight: bold;">.</span>SetLinearVelocity<span style="color: #000000;">&#40;</span>setExplosionVelocity<span style="color: #000000;">&#40;</span>body<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #009900; font-style: italic;">// the shape will be also part of the explosion and can explode too</span>
				explodingBodies<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>body<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900; font-style: italic;">// this function will determine the velocity of the debris according</span>
		<span style="color: #009900; font-style: italic;">// to the center of mass of the body and the distance from the explosion point</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> setExplosionVelocity<span style="color: #000000;">&#40;</span><span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">:</span>b2Body<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span>b2Vec2 <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">.</span>GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">-</span>explosionX<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distX<span style="color: #000066; font-weight: bold;">&lt;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distX<span style="color: #000066; font-weight: bold;">&lt;-</span>explosionRadius<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					distX=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					distX=<span style="color: #000066; font-weight: bold;">-</span> explosionRadius<span style="color: #000066; font-weight: bold;">-</span>distX<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distX<span style="color: #000066; font-weight: bold;">&gt;</span>explosionRadius<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					distX=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					distX=explosionRadius<span style="color: #000066; font-weight: bold;">-</span>distX<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">.</span>GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">-</span>explosionY<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distY<span style="color: #000066; font-weight: bold;">&lt;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distY<span style="color: #000066; font-weight: bold;">&lt;-</span>explosionRadius<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					distY=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					distY=<span style="color: #000066; font-weight: bold;">-</span> explosionRadius<span style="color: #000066; font-weight: bold;">-</span>distY<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distY<span style="color: #000066; font-weight: bold;">&gt;</span>explosionRadius<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					distY=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					distY=explosionRadius<span style="color: #000066; font-weight: bold;">-</span>distY<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			distX<span style="color: #000066; font-weight: bold;">*</span>=<span style="color: #000000; font-weight:bold;">0.25</span><span style="color: #000066; font-weight: bold;">;</span>
			distY<span style="color: #000066; font-weight: bold;">*</span>=<span style="color: #000000; font-weight:bold;">0.25</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span>distX<span style="color: #000066; font-weight: bold;">,</span>distY<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> arrangeClockwise<span style="color: #000000;">&#40;</span>vec<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900; font-style: italic;">// The algorithm is simple: </span>
			<span style="color: #009900; font-style: italic;">// First, it arranges all given points in ascending order, according to their x-coordinate.</span>
			<span style="color: #009900; font-style: italic;">// Secondly, it takes the leftmost and rightmost points (lets call them C and D), and creates tempVec, where the points arranged in clockwise order will be stored.</span>
			<span style="color: #009900; font-style: italic;">// Then, it iterates over the vertices vector, and uses the det() method I talked about earlier. It starts putting the points above CD from the beginning of the vector, and the points below CD from the end of the vector. </span>
			<span style="color: #009900; font-style: italic;">// That was it!</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> n<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=vec<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #004993;">d</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span>i1<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">,</span>i2<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=n<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> tempVec<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span>=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span>n<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span>C<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000066; font-weight: bold;">,</span>D<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000066; font-weight: bold;">;</span>
			vec<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sort</span><span style="color: #000000;">&#40;</span>comp1<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			tempVec<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span>=vec<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
			C=vec<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
			D=vec<span style="color: #000000;">&#91;</span>n<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>n<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #004993;">d</span>=det<span style="color: #000000;">&#40;</span>C<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">,</span>C<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">,</span>D<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">,</span>D<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">,</span>vec<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">,</span>vec<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>d<span style="color: #000066; font-weight: bold;">&lt;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					tempVec<span style="color: #000000;">&#91;</span>i1<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#93;</span>=vec<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					tempVec<span style="color: #000000;">&#91;</span>i2<span style="color: #000066; font-weight: bold;">--</span><span style="color: #000000;">&#93;</span>=vec<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			tempVec<span style="color: #000000;">&#91;</span>i1<span style="color: #000000;">&#93;</span>=vec<span style="color: #000000;">&#91;</span>n<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> tempVec<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> comp1<span style="color: #000000;">&#40;</span>a<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">b</span><span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900; font-style: italic;">// This is a compare function, used in the arrangeClockwise() method - a fast way to arrange the points in ascending order, according to their x-coordinate.</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>a<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">&gt;</span>b<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>a<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">&lt;</span>b<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> det<span style="color: #000000;">&#40;</span>x1<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span> y1<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span> x2<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span> y2<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span> x3<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span> y3<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900; font-style: italic;">// This is a function which finds the determinant of a 3x3 matrix.</span>
			<span style="color: #009900; font-style: italic;">// If you studied matrices, you'd know that it returns a positive number if three given points are in clockwise order, negative if they are in anti-clockwise order and zero if they lie on the same line.</span>
			<span style="color: #009900; font-style: italic;">// Another useful thing about determinants is that their absolute value is two times the face of the triangle, formed by the three given points.</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> x1<span style="color: #000066; font-weight: bold;">*</span>y2<span style="color: #000066; font-weight: bold;">+</span>x2<span style="color: #000066; font-weight: bold;">*</span>y3<span style="color: #000066; font-weight: bold;">+</span>x3<span style="color: #000066; font-weight: bold;">*</span>y1<span style="color: #000066; font-weight: bold;">-</span>y1<span style="color: #000066; font-weight: bold;">*</span>x2<span style="color: #000066; font-weight: bold;">-</span>y2<span style="color: #000066; font-weight: bold;">*</span>x3<span style="color: #000066; font-weight: bold;">-</span>y3<span style="color: #000066; font-weight: bold;">*</span>x1<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>and this is <code>userData</code> class:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Common<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span>b2Vec2<span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">BitmapData</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.geom</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Matrix</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> userData <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #6699cc; font-weight: bold;">var</span> id<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span><span style="color: #000066; font-weight: bold;">,</span>texture<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">BitmapData</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> userData<span style="color: #000000;">&#40;</span>id<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span><span style="color: #000066; font-weight: bold;">,</span> verticesVec<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;,</span> texture<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">BitmapData</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">.</span>id=id<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">.</span>texture=texture<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// I use the matrix so that I can have the center of the shape I'm drawing match the center of the BitmapData image - I &quot;move&quot; the BitmapData projection left by half its width and up by half its height.</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> m<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Matrix</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Matrix</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			m<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">tx</span>=<span style="color: #000066; font-weight: bold;">-</span> texture<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">width</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">;</span>
			m<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ty</span>=<span style="color: #000066; font-weight: bold;">-</span> texture<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">height</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #009900; font-style: italic;">// I then draw lines from each vertex to the next, in clockwise order and use the beginBitmapFill() method to add the texture.</span>
			<span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">lineStyle</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">beginBitmapFill</span><span style="color: #000000;">&#40;</span>texture<span style="color: #000066; font-weight: bold;">,</span> m<span style="color: #000066; font-weight: bold;">,</span> <span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">moveTo</span><span style="color: #000000;">&#40;</span>verticesVec<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">,</span> verticesVec<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>verticesVec<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span>verticesVec<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">,</span> verticesVec<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span>verticesVec<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">,</span> verticesVec<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">endFill</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>And now let me see what kind of games can you make using this concept.</p>
<p><a href="/wp-content/uploads/2012/01/main.zip">Download the source code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2012/01/17/create-real-explosions-with-box2d-adding-textures/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Create REAL explosions with Box2D &#8211; exploding objects and setting the center of explosion with mouse click</title>
		<link>http://www.emanueleferonato.com/2012/01/05/create-real-explosions-with-box2d-exploding-objects-and-setting-the-center-of-explosion-with-mouse-click/</link>
		<comments>http://www.emanueleferonato.com/2012/01/05/create-real-explosions-with-box2d-exploding-objects-and-setting-the-center-of-explosion-with-mouse-click/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 11:55:13 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=5047</guid>
		<description><![CDATA[Real Box2D explosions get even more real]]></description>
			<content:encoded><![CDATA[<p>I got a lot of requests once I published how to <a href="http://www.emanueleferonato.com/2011/12/08/create-real-explosions-with-box2d/">create REAL explosions with Box2D</a> and most of them asked for exploding objects clicking on them, setting the center of explosion with mouse pointer.</p>
<p>So I changed a bit the script and now you have such features, and to preserve speed I also removed all chunks whose area is too small. They just slow down the prototype with no advantage.</p>
<p>So that&#8217;s what you have now:</p>
<p><embed src="/wp-content/uploads/2012/01/boom.swf" menu="false" quality="high" width="640" height="480" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>Click on any object (static or dynamic) to explode it.</p>
<p>And this is the uncommented, yet to be optimized script:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Dynamics<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.</span>Shapes<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Common<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Main <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> world<span style="color: #000066; font-weight: bold;">:</span>b2World=<span style="color: #0033ff; font-weight: bold;">new</span> b2World<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> worldScale<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> laserSegment<span style="color: #000066; font-weight: bold;">:</span>b2Segment<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> drawing<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span>=<span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> affectedByLaser<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Body<span style="color: #000066; font-weight: bold;">&gt;;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> entryPoint<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> explodingBodies<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Body<span style="color: #000066; font-weight: bold;">&gt;;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> explosionCenterX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> explosionCenterY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> chunks<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">5</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> explosionRadius<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			debugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">480</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">640</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">640</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">480</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">640</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">480</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">110</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">60</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">60</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">390</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">110</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">60</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">60</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span> updateWorld<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_DOWN</span><span style="color: #000066; font-weight: bold;">,</span>mousePressed<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> mousePressed<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> cutAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">;</span>
			explosionCenterX=<span style="color: #004993;">mouseX</span><span style="color: #000066; font-weight: bold;">;</span>
			explosionCenterY=<span style="color: #004993;">mouseY</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> clickedBody<span style="color: #000066; font-weight: bold;">:</span>b2Body=GetBodyAtXY<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span>explosionCenterX<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>explosionCenterY<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			explodingBodies=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Body<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>clickedBody<span style="color: #000066; font-weight: bold;">!</span>=<span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				explodingBodies<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>clickedBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>chunks<span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					cutAngle=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">;</span>
					laserSegment=<span style="color: #0033ff; font-weight: bold;">new</span> b2Segment<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					laserSegment<span style="color: #000066; font-weight: bold;">.</span>p1=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>explosionCenterX<span style="color: #000066; font-weight: bold;">+</span>i<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000;">&#40;</span>explosionCenterY<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					laserSegment<span style="color: #000066; font-weight: bold;">.</span>p2=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>explosionCenterX<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000;">&#40;</span>explosionCenterY<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					affectedByLaser=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Body<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					entryPoint=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					world<span style="color: #000066; font-weight: bold;">.</span>RayCast<span style="color: #000000;">&#40;</span>laserFired<span style="color: #000066; font-weight: bold;">,</span>laserSegment<span style="color: #000066; font-weight: bold;">.</span>p1<span style="color: #000066; font-weight: bold;">,</span>laserSegment<span style="color: #000066; font-weight: bold;">.</span>p2<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					world<span style="color: #000066; font-weight: bold;">.</span>RayCast<span style="color: #000000;">&#40;</span>laserFired<span style="color: #000066; font-weight: bold;">,</span>laserSegment<span style="color: #000066; font-weight: bold;">.</span>p2<span style="color: #000066; font-weight: bold;">,</span>laserSegment<span style="color: #000066; font-weight: bold;">.</span>p1<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> debugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> debugDraw<span style="color: #000066; font-weight: bold;">:</span>b2DebugDraw = <span style="color: #0033ff; font-weight: bold;">new</span> b2DebugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> debugSprite<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>debugSprite<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetSprite<span style="color: #000000;">&#40;</span>debugSprite<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetDrawScale<span style="color: #000000;">&#40;</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetFlags<span style="color: #000000;">&#40;</span>b2DebugDraw<span style="color: #000066; font-weight: bold;">.</span>e_shapeBit<span style="color: #000066; font-weight: bold;">|</span>b2DebugDraw<span style="color: #000066; font-weight: bold;">.</span>e_jointBit<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetFillAlpha<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>SetDebugDraw<span style="color: #000000;">&#40;</span>debugDraw<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> addWall<span style="color: #000000;">&#40;</span>pX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span>pY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span>w<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wallShape<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wallShape<span style="color: #000066; font-weight: bold;">.</span>SetAsBox<span style="color: #000000;">&#40;</span>w<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wallFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>shape=wallShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wallBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wallBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>pX<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>pY<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wall<span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>wallBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wall<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>wallFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> updateWorld<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>DrawDebugData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> laserFired<span style="color: #000000;">&#40;</span>fixture<span style="color: #000066; font-weight: bold;">:</span>b2Fixture<span style="color: #000066; font-weight: bold;">,</span>point<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000066; font-weight: bold;">,</span>normal<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000066; font-weight: bold;">,</span>fraction<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> affectedBody<span style="color: #000066; font-weight: bold;">:</span>b2Body=fixture<span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>explodingBodies<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">indexOf</span><span style="color: #000000;">&#40;</span>affectedBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">!</span>=<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> affectedPolygon<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape=fixture<span style="color: #000066; font-weight: bold;">.</span>GetShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #0033ff; font-weight: bold;">as</span> b2PolygonShape<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> fixtureIndex<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=affectedByLaser<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">indexOf</span><span style="color: #000000;">&#40;</span>affectedBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>fixtureIndex==<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					affectedByLaser<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>affectedBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					entryPoint<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>point<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> rayCenter<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>point<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">+</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000;">&#40;</span>point<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">+</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> rayAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>point<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">,</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>point<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> polyVertices<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span>=affectedPolygon<span style="color: #000066; font-weight: bold;">.</span>GetVertices<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> newPolyVertices1<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span>=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> newPolyVertices2<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span>=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> currentPoly<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> cutPlaced1<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span>=<span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> cutPlaced2<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span>=<span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>polyVertices<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						<span style="color: #6699cc; font-weight: bold;">var</span> worldPoint<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=affectedBody<span style="color: #000066; font-weight: bold;">.</span>GetWorldPoint<span style="color: #000000;">&#40;</span>polyVertices<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
						<span style="color: #6699cc; font-weight: bold;">var</span> cutAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>worldPoint<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>rayCenter<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">,</span>worldPoint<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>rayCenter<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">-</span>rayAngle<span style="color: #000066; font-weight: bold;">;</span>
						<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000066; font-weight: bold;">&lt;</span>Math<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000066; font-weight: bold;">*-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
							cutAngle<span style="color: #000066; font-weight: bold;">+</span>=<span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000066; font-weight: bold;">;</span>
						<span style="color: #000000;">&#125;</span>
						<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">&amp;&amp;</span>cutAngle<span style="color: #000066; font-weight: bold;">&lt;</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
							<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>currentPoly==<span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
								cutPlaced1=<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
								newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>point<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
								newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
							<span style="color: #000000;">&#125;</span>
							newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>worldPoint<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
							currentPoly=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
						<span style="color: #000000;">&#125;</span>
						<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
							<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>currentPoly==<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
								cutPlaced2=<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
								newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
								newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>point<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
							<span style="color: #000000;">&#125;</span>
							newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>worldPoint<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
							currentPoly=<span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
						<span style="color: #000000;">&#125;</span>
					<span style="color: #000000;">&#125;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">!</span> cutPlaced1<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>point<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
						newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">!</span> cutPlaced2<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
						newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>point<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
					createSlice<span style="color: #000000;">&#40;</span>newPolyVertices1<span style="color: #000066; font-weight: bold;">,</span>newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					createSlice<span style="color: #000000;">&#40;</span>newPolyVertices2<span style="color: #000066; font-weight: bold;">,</span>newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					world<span style="color: #000066; font-weight: bold;">.</span>DestroyBody<span style="color: #000000;">&#40;</span>affectedBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> findCentroid<span style="color: #000000;">&#40;</span>vs<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;,</span> count<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">uint</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span>b2Vec2 <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">:</span>b2Vec2 = <span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> area<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> p1X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> p1Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> inv3<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">1.0</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">3.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i <span style="color: #000066; font-weight: bold;">&lt;</span> count<span style="color: #000066; font-weight: bold;">;</span> <span style="color: #000066; font-weight: bold;">++</span>i<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> p2<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=vs<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> p3<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=i<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">&lt;</span>count<span style="color: #000066; font-weight: bold;">?</span>vs<span style="color: #000000;">&#91;</span><span style="color: #004993;">int</span><span style="color: #000000;">&#40;</span>i<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">:</span>vs<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e1X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p2<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>p1X<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e1Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p2<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>p1Y<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e2X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p3<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>p1X<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e2Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p3<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>p1Y<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> D<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000;">&#40;</span>e1X <span style="color: #000066; font-weight: bold;">*</span> e2Y <span style="color: #000066; font-weight: bold;">-</span> e1Y <span style="color: #000066; font-weight: bold;">*</span> e2X<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> triangleArea<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">*</span>D<span style="color: #000066; font-weight: bold;">;</span>
				area<span style="color: #000066; font-weight: bold;">+</span>=triangleArea<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> <span style="color: #000066; font-weight: bold;">+</span>= triangleArea <span style="color: #000066; font-weight: bold;">*</span> inv3 <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000;">&#40;</span>p1X <span style="color: #000066; font-weight: bold;">+</span> p2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> <span style="color: #000066; font-weight: bold;">+</span> p3<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> <span style="color: #000066; font-weight: bold;">+</span>= triangleArea <span style="color: #000066; font-weight: bold;">*</span> inv3 <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000;">&#40;</span>p1Y <span style="color: #000066; font-weight: bold;">+</span> p2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> <span style="color: #000066; font-weight: bold;">+</span> p3<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span>=<span style="color: #000000; font-weight:bold;">1.0</span><span style="color: #000066; font-weight: bold;">/</span>area<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span>=<span style="color: #000000; font-weight:bold;">1.0</span><span style="color: #000066; font-weight: bold;">/</span>area<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> getArea<span style="color: #000000;">&#40;</span>vs<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;,</span> count<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">uint</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> area<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> p1X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> p1Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> inv3<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">1.0</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">3.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i <span style="color: #000066; font-weight: bold;">&lt;</span> count<span style="color: #000066; font-weight: bold;">;</span> <span style="color: #000066; font-weight: bold;">++</span>i<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> p2<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=vs<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> p3<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=i<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">&lt;</span>count<span style="color: #000066; font-weight: bold;">?</span>vs<span style="color: #000000;">&#91;</span><span style="color: #004993;">int</span><span style="color: #000000;">&#40;</span>i<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">:</span>vs<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e1X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p2<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>p1X<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e1Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p2<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>p1Y<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e2X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p3<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>p1X<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e2Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p3<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>p1Y<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> D<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000;">&#40;</span>e1X <span style="color: #000066; font-weight: bold;">*</span> e2Y <span style="color: #000066; font-weight: bold;">-</span> e1Y <span style="color: #000066; font-weight: bold;">*</span> e2X<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> triangleArea<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">*</span>D<span style="color: #000066; font-weight: bold;">;</span>
				area<span style="color: #000066; font-weight: bold;">+</span>=triangleArea<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> area<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> createSlice<span style="color: #000000;">&#40;</span>vertices<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;,</span>numVertices<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>getArea<span style="color: #000000;">&#40;</span>vertices<span style="color: #000066; font-weight: bold;">,</span>vertices<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">&gt;</span>=<span style="color: #000000; font-weight:bold;">0.05</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> centre<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=findCentroid<span style="color: #000000;">&#40;</span>vertices<span style="color: #000066; font-weight: bold;">,</span>vertices<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>numVertices<span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					vertices<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span>Subtract<span style="color: #000000;">&#40;</span>centre<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> sliceBody<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				sliceBody<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>centre<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">,</span> centre<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				sliceBody<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">type</span>=b2Body<span style="color: #000066; font-weight: bold;">.</span>b2_dynamicBody<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> slicePoly<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				slicePoly<span style="color: #000066; font-weight: bold;">.</span>SetAsVector<span style="color: #000000;">&#40;</span>vertices<span style="color: #000066; font-weight: bold;">,</span>numVertices<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> sliceFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				sliceFixture<span style="color: #000066; font-weight: bold;">.</span>shape=slicePoly<span style="color: #000066; font-weight: bold;">;</span>
				sliceFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> worldSlice<span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>sliceBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				worldSlice<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>sliceFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span>i=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>numVertices<span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					vertices<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span>Add<span style="color: #000000;">&#40;</span>centre<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> distX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000;">&#40;</span>centre<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">-</span>explosionCenterX<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distX<span style="color: #000066; font-weight: bold;">&lt;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distX<span style="color: #000066; font-weight: bold;">&lt;-</span>explosionRadius<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						distX=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
					<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
						distX=<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">-</span>distX<span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distX<span style="color: #000066; font-weight: bold;">&gt;</span>explosionRadius<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						distX=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
					<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
						distX=<span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">-</span>distX<span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> distY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000;">&#40;</span>centre<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">-</span>explosionCenterY<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distY<span style="color: #000066; font-weight: bold;">&lt;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distY<span style="color: #000066; font-weight: bold;">&lt;-</span>explosionRadius<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						distY=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
					<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
						distY=<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">-</span>distY<span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distY<span style="color: #000066; font-weight: bold;">&gt;</span>explosionRadius<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						distY=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
					<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
						distY=<span style="color: #000000; font-weight:bold;">50</span><span style="color: #000066; font-weight: bold;">-</span>distY<span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
				distX<span style="color: #000066; font-weight: bold;">*</span>=<span style="color: #000000; font-weight:bold;">0.25</span><span style="color: #000066; font-weight: bold;">;</span>
				distY<span style="color: #000066; font-weight: bold;">*</span>=<span style="color: #000000; font-weight:bold;">0.25</span><span style="color: #000066; font-weight: bold;">;</span>
				worldSlice<span style="color: #000066; font-weight: bold;">.</span>SetLinearVelocity<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span>distX<span style="color: #000066; font-weight: bold;">,</span>distY<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				explodingBodies<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>worldSlice<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> GetBodyAtXY<span style="color: #000000;">&#40;</span>coordinate<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span>b2Body <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> touchedBody<span style="color: #000066; font-weight: bold;">:</span>b2Body=<span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>QueryPoint<span style="color: #000000;">&#40;</span>GetBodyCallback<span style="color: #000066; font-weight: bold;">,</span>coordinate<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #339966; font-weight: bold;">function</span> GetBodyCallback<span style="color: #000000;">&#40;</span>fixture<span style="color: #000066; font-weight: bold;">:</span>b2Fixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> shape<span style="color: #000066; font-weight: bold;">:</span>b2Shape=fixture<span style="color: #000066; font-weight: bold;">.</span>GetShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> inside<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span>=shape<span style="color: #000066; font-weight: bold;">.</span>TestPoint<span style="color: #000000;">&#40;</span>fixture<span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>GetTransform<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span>coordinate<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>inside<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					touchedBody=fixture<span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> touchedBody<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>I will post the complete tutorial once I&#8217;ll complete the final step: adding textures to explosions. If you want to try the class, you can copy/paste it in the example you can download at <a href="http://www.emanueleferonato.com/2011/06/13/slicing-splitting-and-cutting-objects-with-box2d/">slicing, splitting and cutting objects with Box2D</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2012/01/05/create-real-explosions-with-box2d-exploding-objects-and-setting-the-center-of-explosion-with-mouse-click/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Create REAL explosions with Box2D</title>
		<link>http://www.emanueleferonato.com/2011/12/08/create-real-explosions-with-box2d/</link>
		<comments>http://www.emanueleferonato.com/2011/12/08/create-real-explosions-with-box2d/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 19:16:49 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=4946</guid>
		<description><![CDATA[I am showing you how to make Box2D objects explode like cluster bombs. Warning: REAL explosions!!]]></description>
			<content:encoded><![CDATA[<p>Look at the title&#8230; Create <strong>REAL</strong> explosions with Box2D&#8230; keyword: <strong>REAL</strong>.</p>
<p>This means we will make a Box2D explode into pieces using the basics of <a href="http://www.emanueleferonato.com/2011/06/13/slicing-splitting-and-cutting-objects-with-box2d/">Slicing, splitting and cutting objects with Box2D</a>. At the moment it&#8217;s just a prototype but it does not need that much optimization.</p>
<p>That&#8217;s what we&#8217;ll get:</p>
<p><embed src="/wp-content/uploads/2011/12/explosion.swf" menu="false" quality="high" width="640" height="480" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>Click the mouse to make the box explode.</p>
<p>Too fast? Get this slow motion example:</p>
<p><embed src="/wp-content/uploads/2011/12/explosion1.swf" menu="false" quality="high" width="640" height="480" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>As you can see, this is a real explosion.</p>
<p>This is the source code, can you discover how was it possible?</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Dynamics<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.</span>Shapes<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Common<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Main <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> world<span style="color: #000066; font-weight: bold;">:</span>b2World=<span style="color: #0033ff; font-weight: bold;">new</span> b2World<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> worldScale<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> laserSegment<span style="color: #000066; font-weight: bold;">:</span>b2Segment<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> drawing<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span>=<span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> affectedByLaser<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Body<span style="color: #000066; font-weight: bold;">&gt;;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> entryPoint<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			debugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">480</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">640</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">640</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">480</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">640</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">480</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span> updateWorld<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_DOWN</span><span style="color: #000066; font-weight: bold;">,</span>mousePressed<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> mousePressed<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_DOWN</span><span style="color: #000066; font-weight: bold;">,</span>mousePressed<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> cutAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span><span style="color: #000000; font-weight:bold;">5</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				cutAngle=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">;</span>
				laserSegment=<span style="color: #0033ff; font-weight: bold;">new</span> b2Segment<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				laserSegment<span style="color: #000066; font-weight: bold;">.</span>p1=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">+</span>i<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				laserSegment<span style="color: #000066; font-weight: bold;">.</span>p2=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">200</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				affectedByLaser=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Body<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				entryPoint=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				world<span style="color: #000066; font-weight: bold;">.</span>RayCast<span style="color: #000000;">&#40;</span>laserFired<span style="color: #000066; font-weight: bold;">,</span>laserSegment<span style="color: #000066; font-weight: bold;">.</span>p1<span style="color: #000066; font-weight: bold;">,</span>laserSegment<span style="color: #000066; font-weight: bold;">.</span>p2<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				world<span style="color: #000066; font-weight: bold;">.</span>RayCast<span style="color: #000000;">&#40;</span>laserFired<span style="color: #000066; font-weight: bold;">,</span>laserSegment<span style="color: #000066; font-weight: bold;">.</span>p2<span style="color: #000066; font-weight: bold;">,</span>laserSegment<span style="color: #000066; font-weight: bold;">.</span>p1<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> debugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> debugDraw<span style="color: #000066; font-weight: bold;">:</span>b2DebugDraw = <span style="color: #0033ff; font-weight: bold;">new</span> b2DebugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> debugSprite<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>debugSprite<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetSprite<span style="color: #000000;">&#40;</span>debugSprite<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetDrawScale<span style="color: #000000;">&#40;</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetFlags<span style="color: #000000;">&#40;</span>b2DebugDraw<span style="color: #000066; font-weight: bold;">.</span>e_shapeBit<span style="color: #000066; font-weight: bold;">|</span>b2DebugDraw<span style="color: #000066; font-weight: bold;">.</span>e_jointBit<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000066; font-weight: bold;">.</span>SetFillAlpha<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>SetDebugDraw<span style="color: #000000;">&#40;</span>debugDraw<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> addWall<span style="color: #000000;">&#40;</span>pX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span>pY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span>w<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wallShape<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wallShape<span style="color: #000066; font-weight: bold;">.</span>SetAsBox<span style="color: #000000;">&#40;</span>w<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wallFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">;</span>
			wallFixture<span style="color: #000066; font-weight: bold;">.</span>shape=wallShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wallBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wallBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>pX<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>pY<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> wall<span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>wallBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			wall<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>wallFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> updateWorld<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>DrawDebugData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> laserFired<span style="color: #000000;">&#40;</span>fixture<span style="color: #000066; font-weight: bold;">:</span>b2Fixture<span style="color: #000066; font-weight: bold;">,</span>point<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000066; font-weight: bold;">,</span>normal<span style="color: #000066; font-weight: bold;">:</span>b2Vec2<span style="color: #000066; font-weight: bold;">,</span>fraction<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> affectedBody<span style="color: #000066; font-weight: bold;">:</span>b2Body=fixture<span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> affectedPolygon<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape=fixture<span style="color: #000066; font-weight: bold;">.</span>GetShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #0033ff; font-weight: bold;">as</span> b2PolygonShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> fixtureIndex<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=affectedByLaser<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">indexOf</span><span style="color: #000000;">&#40;</span>affectedBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>fixtureIndex==<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				affectedByLaser<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>affectedBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				entryPoint<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>point<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> rayCenter<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>point<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">+</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000;">&#40;</span>point<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">+</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> rayAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>point<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">,</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>point<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> polyVertices<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span>=affectedPolygon<span style="color: #000066; font-weight: bold;">.</span>GetVertices<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> newPolyVertices1<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span>=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> newPolyVertices2<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span>=<span style="color: #0033ff; font-weight: bold;">new</span> Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> currentPoly<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> cutPlaced1<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span>=<span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> cutPlaced2<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span>=<span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>polyVertices<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> worldPoint<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=affectedBody<span style="color: #000066; font-weight: bold;">.</span>GetWorldPoint<span style="color: #000000;">&#40;</span>polyVertices<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> cutAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>worldPoint<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>rayCenter<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">,</span>worldPoint<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>rayCenter<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">-</span>rayAngle<span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000066; font-weight: bold;">&lt;</span>Math<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000066; font-weight: bold;">*-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						cutAngle<span style="color: #000066; font-weight: bold;">+</span>=<span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>cutAngle<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">&amp;&amp;</span>cutAngle<span style="color: #000066; font-weight: bold;">&lt;</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>currentPoly==<span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
							cutPlaced1=<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
							newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>point<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
							newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
						<span style="color: #000000;">&#125;</span>
						newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>worldPoint<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
						currentPoly=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
					<span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
						<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>currentPoly==<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
							cutPlaced2=<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
							newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
							newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>point<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
						<span style="color: #000000;">&#125;</span>
						newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>worldPoint<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
						currentPoly=<span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">!</span> cutPlaced1<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>point<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">!</span> cutPlaced2<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>entryPoint<span style="color: #000000;">&#91;</span>fixtureIndex<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>point<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				createSlice<span style="color: #000000;">&#40;</span>newPolyVertices1<span style="color: #000066; font-weight: bold;">,</span>newPolyVertices1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				createSlice<span style="color: #000000;">&#40;</span>newPolyVertices2<span style="color: #000066; font-weight: bold;">,</span>newPolyVertices2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				world<span style="color: #000066; font-weight: bold;">.</span>DestroyBody<span style="color: #000000;">&#40;</span>affectedBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> findCentroid<span style="color: #000000;">&#40;</span>vs<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;,</span> count<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">uint</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span>b2Vec2 <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">:</span>b2Vec2 = <span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> area<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> p1X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> p1Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> inv3<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">1.0</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">3.0</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i <span style="color: #000066; font-weight: bold;">&lt;</span> count<span style="color: #000066; font-weight: bold;">;</span> <span style="color: #000066; font-weight: bold;">++</span>i<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> p2<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=vs<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> p3<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=i<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">&lt;</span>count<span style="color: #000066; font-weight: bold;">?</span>vs<span style="color: #000000;">&#91;</span><span style="color: #004993;">int</span><span style="color: #000000;">&#40;</span>i<span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">:</span>vs<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e1X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p2<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>p1X<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e1Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p2<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>p1Y<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e2X<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p3<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span>p1X<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> e2Y<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=p3<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span>p1Y<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> D<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000;">&#40;</span>e1X <span style="color: #000066; font-weight: bold;">*</span> e2Y <span style="color: #000066; font-weight: bold;">-</span> e1Y <span style="color: #000066; font-weight: bold;">*</span> e2X<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> triangleArea<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">*</span>D<span style="color: #000066; font-weight: bold;">;</span>
				area<span style="color: #000066; font-weight: bold;">+</span>=triangleArea<span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> <span style="color: #000066; font-weight: bold;">+</span>= triangleArea <span style="color: #000066; font-weight: bold;">*</span> inv3 <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000;">&#40;</span>p1X <span style="color: #000066; font-weight: bold;">+</span> p2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> <span style="color: #000066; font-weight: bold;">+</span> p3<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> <span style="color: #000066; font-weight: bold;">+</span>= triangleArea <span style="color: #000066; font-weight: bold;">*</span> inv3 <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000;">&#40;</span>p1Y <span style="color: #000066; font-weight: bold;">+</span> p2<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> <span style="color: #000066; font-weight: bold;">+</span> p3<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span>=<span style="color: #000000; font-weight:bold;">1.0</span><span style="color: #000066; font-weight: bold;">/</span>area<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span>=<span style="color: #000000; font-weight:bold;">1.0</span><span style="color: #000066; font-weight: bold;">/</span>area<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #004993;">c</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> createSlice<span style="color: #000000;">&#40;</span>vertices<span style="color: #000066; font-weight: bold;">:</span>Vector<span style="color: #000066; font-weight: bold;">.&lt;</span>b2Vec2<span style="color: #000066; font-weight: bold;">&gt;,</span>numVertices<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> centre<span style="color: #000066; font-weight: bold;">:</span>b2Vec2=findCentroid<span style="color: #000000;">&#40;</span>vertices<span style="color: #000066; font-weight: bold;">,</span>vertices<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">length</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>numVertices<span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				vertices<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span>Subtract<span style="color: #000000;">&#40;</span>centre<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sliceBody<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			sliceBody<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>centre<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">,</span> centre<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			sliceBody<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">type</span>=b2Body<span style="color: #000066; font-weight: bold;">.</span>b2_dynamicBody<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> slicePoly<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			slicePoly<span style="color: #000066; font-weight: bold;">.</span>SetAsVector<span style="color: #000000;">&#40;</span>vertices<span style="color: #000066; font-weight: bold;">,</span>numVertices<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sliceFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			sliceFixture<span style="color: #000066; font-weight: bold;">.</span>shape=slicePoly<span style="color: #000066; font-weight: bold;">;</span>
			sliceFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> worldSlice<span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>sliceBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			worldSlice<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>sliceFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span>i=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>numVertices<span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				vertices<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">.</span>Add<span style="color: #000000;">&#40;</span>centre<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=centre<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=centre<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000066; font-weight: bold;">;</span>
			worldSlice<span style="color: #000066; font-weight: bold;">.</span>SetLinearVelocity<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span>distX<span style="color: #000066; font-weight: bold;">,</span>distY<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>I hope this will suggest some interesting gameplay features. No need to download anything, just copy/paste the code in the <a href="http://www.emanueleferonato.com/2011/06/13/slicing-splitting-and-cutting-objects-with-box2d/">slicing example</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2011/12/08/create-real-explosions-with-box2d/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Two Flash games coming soon to your monitors</title>
		<link>http://www.emanueleferonato.com/2011/11/28/two-flash-games-coming-soon-to-your-monitors/</link>
		<comments>http://www.emanueleferonato.com/2011/11/28/two-flash-games-coming-soon-to-your-monitors/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 20:27:56 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=4909</guid>
		<description><![CDATA[Brief overview of my two upcoming games.]]></description>
			<content:encoded><![CDATA[<p>I want to share with you the video preview of two upcoming games: <strong>Stringy</strong> and <strong>Slingy</strong></p>
<p><iframe width="640" height="480" src="http://www.youtube.com/embed/tsZhqknuoFs" frameborder="0" allowfullscreen></iframe></p>
<p><strong>Stringy</strong>, currently on bid on <a href="http://www.flashgamelicense.com/" target="_blank">Flash Game License</a>, is an avoider game built upon the <a href="http://www.emanueleferonato.com/2011/10/13/develop-a-flash-game-like-string-avoider-as3-version-and-more/">String Avoider AS3 prototype</a>. It features 40 levels, collectible items, timed walls, rotating walls, and scoring system.</p>
<p><strong>Slingy</strong> lets you swing a ball trying to grab as much orbs as possible through 40 levels (50 at the moment, but I am polishing them and I think I&#8217;ll ship the game with 40 levels), different block types such as pushable, destroyable, one-way platforms, teleports and more&#8230; all managed by Box2D physics. It will be placed on <a href="http://www.flashgamelicense.com/" target="_blank">Flash Game License</a> in a couple of days, once I&#8217;ll polish tile graphics. According to the success of this game, I will plan an iPhone version.</p>
<p>Some tutorials about the making will follow. Meanwhile, if you want to sponsor the games, feel free to ask more information before you place your bid on FGL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2011/11/28/two-flash-games-coming-soon-to-your-monitors/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Develop a Flash game like Angry Birds using Box2D &#8211; predictive trajectory line</title>
		<link>http://www.emanueleferonato.com/2011/11/03/develop-a-flash-game-like-angry-birds-using-box2d-predictive-trajectory-line/</link>
		<comments>http://www.emanueleferonato.com/2011/11/03/develop-a-flash-game-like-angry-birds-using-box2d-predictive-trajectory-line/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 10:25:38 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=4798</guid>
		<description><![CDATA[Another step in the Angry Birds series with a feature you cannot miss: the predictive trajectory lien]]></description>
			<content:encoded><![CDATA[<p>This should have been the last step of the <a href="http://www.emanueleferonato.com/2011/10/10/develop-a-flash-game-like-angry-birds-using-box2d/">Angry Birds</a> series, but I got an interesting request from a reader and I wanted to show you how to do it.</p>
<p>We will see how to create a predictive trajectory line. Very useful for beginner and unskilled players.</p>
<p>This is what you&#8217;ll get: I added the predictive trajectory line to the script published on <a href="http://www.emanueleferonato.com/2011/10/10/develop-a-flash-game-like-angry-birds-using-box2d/">step 1</a> to reduce the total amount of code displayed:</p>
<p><embed src="/wp-content/uploads/2011/11/index.swf" menu="false" quality="high" width="640" height="480" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>Drag and release the bird with the mouse.</p>
<p>Where&#8217;s the magic? Let&#8217;s look at the source code:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Dynamics<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.</span>Shapes<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Common<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Dynamics<span style="color: #000066; font-weight: bold;">.</span>Joints<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Main <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> world<span style="color: #000066; font-weight: bold;">:</span>b2World=<span style="color: #0033ff; font-weight: bold;">new</span> b2World<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> worldScale<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> bird<span style="color: #000066; font-weight: bold;">:</span>Bird=<span style="color: #0033ff; font-weight: bold;">new</span> Bird<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> birdSphere<span style="color: #000066; font-weight: bold;">:</span>b2Body<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> preview<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span>=<span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> bg<span style="color: #000066; font-weight: bold;">:</span>Background=<span style="color: #0033ff; font-weight: bold;">new</span> Background<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>bg<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>bird<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>preview<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=<span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=<span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">buttonMode</span>=<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">395</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #000000; font-weight:bold;">5</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #000000; font-weight:bold;">5</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">645</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span>updateWorld<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_DOWN</span><span style="color: #000066; font-weight: bold;">,</span>birdClicked<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> addWall<span style="color: #000000;">&#40;</span>w<span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">,</span>px<span style="color: #000066; font-weight: bold;">,</span>py<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> floorShape<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			floorShape<span style="color: #000066; font-weight: bold;">.</span>SetAsBox<span style="color: #000000;">&#40;</span>w<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> floorFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>shape=floorShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> floorBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			floorBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>px<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>py<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">floor</span><span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>floorBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">floor</span><span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>floorFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> birdClicked<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_MOVE</span><span style="color: #000066; font-weight: bold;">,</span>birdMoved<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_UP</span><span style="color: #000066; font-weight: bold;">,</span>birdReleased<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_DOWN</span><span style="color: #000066; font-weight: bold;">,</span>birdClicked<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> birdMoved<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=<span style="color: #004993;">mouseX</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=<span style="color: #004993;">mouseY</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distanceX<span style="color: #000066; font-weight: bold;">*</span>distanceX<span style="color: #000066; font-weight: bold;">+</span>distanceY<span style="color: #000066; font-weight: bold;">*</span>distanceY<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight:bold;">10000</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> birdAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>distanceY<span style="color: #000066; font-weight: bold;">,</span>distanceX<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=<span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=<span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			fakeRelease<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> fakeRelease<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereShape<span style="color: #000066; font-weight: bold;">:</span>b2CircleShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2CircleShape<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">15</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">3</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.1</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>shape=sphereShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">type</span>=b2Body<span style="color: #000066; font-weight: bold;">.</span>b2_dynamicBody<span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span>userData=bird<span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>sphereBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>sphereFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sqrt</span><span style="color: #000000;">&#40;</span>distanceX<span style="color: #000066; font-weight: bold;">*</span>distanceX<span style="color: #000066; font-weight: bold;">+</span>distanceY<span style="color: #000066; font-weight: bold;">*</span>distanceY<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> birdAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>distanceY<span style="color: #000066; font-weight: bold;">,</span>distanceX<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere<span style="color: #000066; font-weight: bold;">.</span>SetLinearVelocity<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">-</span><span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">4</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">4</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			preview<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">clear</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			preview<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">lineStyle</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">,</span>0x000000<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			preview<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">beginFill</span><span style="color: #000000;">&#40;</span>0xff0000<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>=<span style="color: #000000; font-weight:bold;">150</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				world<span style="color: #000066; font-weight: bold;">.</span>Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				preview<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">drawCircle</span><span style="color: #000000;">&#40;</span>birdSphere<span style="color: #000066; font-weight: bold;">.</span>GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>birdSphere<span style="color: #000066; font-weight: bold;">.</span>GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				world<span style="color: #000066; font-weight: bold;">.</span>ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			preview<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">endFill</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>DestroyBody<span style="color: #000000;">&#40;</span>birdSphere<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> birdReleased<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">buttonMode</span>=<span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_MOVE</span><span style="color: #000066; font-weight: bold;">,</span>birdMoved<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_UP</span><span style="color: #000066; font-weight: bold;">,</span>birdReleased<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereShape<span style="color: #000066; font-weight: bold;">:</span>b2CircleShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2CircleShape<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">15</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">3</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.1</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>shape=sphereShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">type</span>=b2Body<span style="color: #000066; font-weight: bold;">.</span>b2_dynamicBody<span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span>userData=bird<span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>sphereBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>sphereFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sqrt</span><span style="color: #000000;">&#40;</span>distanceX<span style="color: #000066; font-weight: bold;">*</span>distanceX<span style="color: #000066; font-weight: bold;">+</span>distanceY<span style="color: #000066; font-weight: bold;">*</span>distanceY<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> birdAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>distanceY<span style="color: #000066; font-weight: bold;">,</span>distanceX<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere<span style="color: #000066; font-weight: bold;">.</span>SetLinearVelocity<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">-</span><span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">4</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">4</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> updateWorld<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> currentBody<span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>GetBodyList<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span> currentBody<span style="color: #000066; font-weight: bold;">;</span> currentBody=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetNext<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">;</span>
					currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">;</span>
					currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">rotation</span>=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetAngle<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">180</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>DrawDebugData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>When I drag the bird with <code>birdMoved</code> function (<strong>lines 49-60</strong>), at the end of such function I call another function called <code>fakeRelease</code> which will handle the trajectory line.</p>
<p><code>fakeRelease</code> just adds a &#8220;fake&#8221; bird to the world and give it the linear velocity as if the player fired it, and you can see <strong>lines 62-78</strong> are just a copy/paste of <strong>lines 95-111</strong>.</p>
<p>The difference is I simulate with a loop (<strong>line 82</strong>) a series of world steps and draw a circle in the position the bird <strong>would</strong> be at every step. The core of the function is at <strong>line 84</strong>.</p>
<p>And now you have the predictive trajectory line too. <a href="/wp-content/uploads/2011/11/index.zip">Download the source code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2011/11/03/develop-a-flash-game-like-angry-birds-using-box2d-predictive-trajectory-line/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Develop a Flash game like Angry Birds using Box2D &#8211; Following bird with the camera and skinning crates</title>
		<link>http://www.emanueleferonato.com/2011/10/27/develop-a-flash-game-like-angry-birds-using-box2d-following-bird-with-the-camera-and-skinning-crates/</link>
		<comments>http://www.emanueleferonato.com/2011/10/27/develop-a-flash-game-like-angry-birds-using-box2d-following-bird-with-the-camera-and-skinning-crates/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 17:24:25 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=4781</guid>
		<description><![CDATA[In the third part of the series, we'll see how to introduce scrolling and make the camera follow the bird. Also, all crates are properly skinned.]]></description>
			<content:encoded><![CDATA[<p>Here we go with another Angry Birds tutorial. Once you know <a href="http://www.emanueleferonato.com/2011/10/21/develop-a-flash-game-like-angry-birds-using-box2d-killing-the-pigs/">how to kill the pigs</a>, it&#8217;s time to make the camera follow the bird, so we can design levels wider than the stage.</p>
<p>The concept behind this feature is explained in the post <a href="http://www.emanueleferonato.com/2010/05/04/following-a-body-with-the-camera-in-box2d-the-smart-way/">following a body with the camera in Box2D – The smart way</a>. I also applied the theory explained there to the bird.</p>
<p>Also, I skinned the crates with a new sprite called <code>Rock</code>, that I remove each time a crate is broken.</p>
<p>There&#8217;s nothing much to say, that&#8217;s what you&#8217;ll get:</p>
<p><embed src="/wp-content/uploads/2011/10/angrybirds3.swf" menu="false" quality="high" width="640" height="480" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>and this is the script:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">package <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">MouseEvent</span>;
	<span style="color: #0066CC;">import</span> Box2D.<span style="color: #006600;">Dynamics</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> Box2D.<span style="color: #006600;">Collision</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> Box2D.<span style="color: #006600;">Collision</span>.<span style="color: #006600;">Shapes</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> Box2D.<span style="color: #006600;">Common</span>.<span style="color: #0066CC;">Math</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> Box2D.<span style="color: #006600;">Dynamics</span>.<span style="color: #006600;">Joints</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Main <span style="color: #0066CC;">extends</span> Sprite <span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> world:b2World=<span style="color: #000000; font-weight: bold;">new</span> b2World<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> b2Vec2<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>,<span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> worldScale:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">30</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> bird:birdMc=<span style="color: #000000; font-weight: bold;">new</span> birdMc<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> rock:Rock;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> birdSphere:b2Body;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> customContact=<span style="color: #000000; font-weight: bold;">new</span> customContactListener<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> following:<span style="color: #0066CC;">Boolean</span>=<span style="color: #000000; font-weight: bold;">false</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			world.<span style="color: #006600;">SetContactListener</span><span style="color: #66cc66;">&#40;</span>customContact<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> bg:backgroundMc=<span style="color: #000000; font-weight: bold;">new</span> backgroundMc<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			addChild<span style="color: #66cc66;">&#40;</span>bg<span style="color: #66cc66;">&#41;</span>;
			addChild<span style="color: #66cc66;">&#40;</span>bird<span style="color: #66cc66;">&#41;</span>;
			debugDraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			bird.<span style="color: #006600;">x</span>=<span style="color: #cc66cc;">170</span>;
			bird.<span style="color: #006600;">y</span>=<span style="color: #cc66cc;">270</span>;
			bird.<span style="color: #006600;">buttonMode</span>=<span style="color: #000000; font-weight: bold;">true</span>;
			addWall<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">640</span>,<span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">640</span>,<span style="color: #cc66cc;">395</span><span style="color: #66cc66;">&#41;</span>;
			addWall<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">640</span>,<span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">640</span>,-<span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span>;
			addWall<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">240</span>,-<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">240</span><span style="color: #66cc66;">&#41;</span>;
			addWall<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">240</span>,<span style="color: #cc66cc;">1275</span>,<span style="color: #cc66cc;">240</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">0</span>; i<span style="color: #66cc66;">&lt;</span>=<span style="color: #cc66cc;">4</span>; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				addBlock<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span>,<span style="color: #cc66cc;">20</span>,<span style="color: #cc66cc;">1050</span>,<span style="color: #cc66cc;">365</span>-i<span style="color: #66cc66;">*</span><span style="color: #cc66cc;">40</span><span style="color: #66cc66;">&#41;</span>;
				addBlock<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span>,<span style="color: #cc66cc;">20</span>,<span style="color: #cc66cc;">1150</span>,<span style="color: #cc66cc;">365</span>-i<span style="color: #66cc66;">*</span><span style="color: #cc66cc;">40</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
			addBlock<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">80</span>,<span style="color: #cc66cc;">20</span>,<span style="color: #cc66cc;">1100</span>,<span style="color: #cc66cc;">165</span><span style="color: #66cc66;">&#41;</span>;
			addPig<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span>,<span style="color: #cc66cc;">1100</span>,<span style="color: #cc66cc;">125</span><span style="color: #66cc66;">&#41;</span>;
			addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>,updateWorld<span style="color: #66cc66;">&#41;</span>;
			bird.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_DOWN</span>,birdClicked<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> addWall<span style="color: #66cc66;">&#40;</span>w,h,px,py<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> floorShape:b2PolygonShape = <span style="color: #000000; font-weight: bold;">new</span> b2PolygonShape<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			floorShape.<span style="color: #006600;">SetAsBox</span><span style="color: #66cc66;">&#40;</span>w<span style="color: #66cc66;">/</span>worldScale,h<span style="color: #66cc66;">/</span>worldScale<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> floorFixture:b2FixtureDef = <span style="color: #000000; font-weight: bold;">new</span> b2FixtureDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			floorFixture.<span style="color: #006600;">density</span>=<span style="color: #cc66cc;">0</span>;
			floorFixture.<span style="color: #006600;">friction</span>=<span style="color: #cc66cc;">10</span>;
			floorFixture.<span style="color: #006600;">restitution</span>=<span style="color: #cc66cc;">0.5</span>;
			floorFixture.<span style="color: #006600;">shape</span>=floorShape;
			<span style="color: #000000; font-weight: bold;">var</span> floorBodyDef:b2BodyDef = <span style="color: #000000; font-weight: bold;">new</span> b2BodyDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			floorBodyDef.<span style="color: #0066CC;">position</span>.<span style="color: #0066CC;">Set</span><span style="color: #66cc66;">&#40;</span>px<span style="color: #66cc66;">/</span>worldScale,py<span style="color: #66cc66;">/</span>worldScale<span style="color: #66cc66;">&#41;</span>;
			floorBodyDef.<span style="color: #006600;">userData</span>=<span style="color: #66cc66;">&#123;</span>assetName:<span style="color: #ff0000;">&quot;wall&quot;</span>,assetSprite:<span style="color: #000000; font-weight: bold;">null</span>,remove:<span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#125;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">floor</span>:b2Body=world.<span style="color: #006600;">CreateBody</span><span style="color: #66cc66;">&#40;</span>floorBodyDef<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #0066CC;">floor</span>.<span style="color: #006600;">CreateFixture</span><span style="color: #66cc66;">&#40;</span>floorFixture<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> addPig<span style="color: #66cc66;">&#40;</span>r,px,py<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> pigShape:b2CircleShape=<span style="color: #000000; font-weight: bold;">new</span> b2CircleShape<span style="color: #66cc66;">&#40;</span>r<span style="color: #66cc66;">/</span>worldScale<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> pigFixture:b2FixtureDef = <span style="color: #000000; font-weight: bold;">new</span> b2FixtureDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			pigFixture.<span style="color: #006600;">density</span>=<span style="color: #cc66cc;">1</span>;
			pigFixture.<span style="color: #006600;">friction</span>=<span style="color: #cc66cc;">3</span>;
			pigFixture.<span style="color: #006600;">restitution</span>=<span style="color: #cc66cc;">0.1</span>;
			pigFixture.<span style="color: #006600;">shape</span>=pigShape;
			<span style="color: #000000; font-weight: bold;">var</span> pigBodyDef:b2BodyDef = <span style="color: #000000; font-weight: bold;">new</span> b2BodyDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			pigBodyDef.<span style="color: #0066CC;">position</span>.<span style="color: #0066CC;">Set</span><span style="color: #66cc66;">&#40;</span>px<span style="color: #66cc66;">/</span>worldScale,py<span style="color: #66cc66;">/</span>worldScale<span style="color: #66cc66;">&#41;</span>;
			pigBodyDef.<span style="color: #0066CC;">type</span>=b2Body.<span style="color: #006600;">b2_dynamicBody</span>;
			pigBodyDef.<span style="color: #006600;">userData</span>=<span style="color: #66cc66;">&#123;</span>assetName:<span style="color: #ff0000;">&quot;pig&quot;</span>,assetSprite:<span style="color: #000000; font-weight: bold;">null</span>,remove:<span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#125;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> pigSphere:b2Body=world.<span style="color: #006600;">CreateBody</span><span style="color: #66cc66;">&#40;</span>pigBodyDef<span style="color: #66cc66;">&#41;</span>;
			pigSphere.<span style="color: #006600;">CreateFixture</span><span style="color: #66cc66;">&#40;</span>pigFixture<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> addBlock<span style="color: #66cc66;">&#40;</span>w,h,px,py<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> blockShape:b2PolygonShape = <span style="color: #000000; font-weight: bold;">new</span> b2PolygonShape<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			blockShape.<span style="color: #006600;">SetAsBox</span><span style="color: #66cc66;">&#40;</span>w<span style="color: #66cc66;">/</span>worldScale,h<span style="color: #66cc66;">/</span>worldScale<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> blockFixture:b2FixtureDef = <span style="color: #000000; font-weight: bold;">new</span> b2FixtureDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			blockFixture.<span style="color: #006600;">density</span>=<span style="color: #cc66cc;">0.5</span>;
			blockFixture.<span style="color: #006600;">friction</span>=<span style="color: #cc66cc;">10</span>;
			blockFixture.<span style="color: #006600;">restitution</span>=<span style="color: #cc66cc;">0.1</span>;
			blockFixture.<span style="color: #006600;">shape</span>=blockShape;
			<span style="color: #000000; font-weight: bold;">var</span> blockBodyDef:b2BodyDef = <span style="color: #000000; font-weight: bold;">new</span> b2BodyDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			blockBodyDef.<span style="color: #0066CC;">position</span>.<span style="color: #0066CC;">Set</span><span style="color: #66cc66;">&#40;</span>px<span style="color: #66cc66;">/</span>worldScale,py<span style="color: #66cc66;">/</span>worldScale<span style="color: #66cc66;">&#41;</span>;
			rock=<span style="color: #000000; font-weight: bold;">new</span> Rock<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			rock.<span style="color: #0066CC;">width</span>=w<span style="color: #66cc66;">*</span><span style="color: #cc66cc;">2</span>;
			rock.<span style="color: #0066CC;">height</span>=h<span style="color: #66cc66;">*</span><span style="color: #cc66cc;">2</span>;
			addChild<span style="color: #66cc66;">&#40;</span>rock<span style="color: #66cc66;">&#41;</span>;
			blockBodyDef.<span style="color: #006600;">userData</span>=<span style="color: #66cc66;">&#123;</span>assetName:<span style="color: #ff0000;">&quot;block&quot;</span>,assetSprite:rock,remove:<span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#125;</span>;
			blockBodyDef.<span style="color: #0066CC;">type</span>=b2Body.<span style="color: #006600;">b2_dynamicBody</span>;
			<span style="color: #000000; font-weight: bold;">var</span> block:b2Body=world.<span style="color: #006600;">CreateBody</span><span style="color: #66cc66;">&#40;</span>blockBodyDef<span style="color: #66cc66;">&#41;</span>;
			block.<span style="color: #006600;">CreateFixture</span><span style="color: #66cc66;">&#40;</span>blockFixture<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> birdClicked<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			addEventListener<span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_MOVE</span>,birdMoved<span style="color: #66cc66;">&#41;</span>;
			addEventListener<span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_UP</span>,birdReleased<span style="color: #66cc66;">&#41;</span>;
			bird.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_DOWN</span>,birdClicked<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> debugDraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> worldDebugDraw:b2DebugDraw=<span style="color: #000000; font-weight: bold;">new</span> b2DebugDraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> debugSprite:Sprite = <span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			addChild<span style="color: #66cc66;">&#40;</span>debugSprite<span style="color: #66cc66;">&#41;</span>;
			worldDebugDraw.<span style="color: #006600;">SetSprite</span><span style="color: #66cc66;">&#40;</span>debugSprite<span style="color: #66cc66;">&#41;</span>;
			worldDebugDraw.<span style="color: #006600;">SetDrawScale</span><span style="color: #66cc66;">&#40;</span>worldScale<span style="color: #66cc66;">&#41;</span>;
			worldDebugDraw.<span style="color: #006600;">SetFlags</span><span style="color: #66cc66;">&#40;</span>b2DebugDraw.<span style="color: #006600;">e_shapeBit</span><span style="color: #66cc66;">|</span>b2DebugDraw.<span style="color: #006600;">e_jointBit</span><span style="color: #66cc66;">&#41;</span>;
			worldDebugDraw.<span style="color: #006600;">SetFillAlpha</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.8</span><span style="color: #66cc66;">&#41;</span>;
			world.<span style="color: #006600;">SetDebugDraw</span><span style="color: #66cc66;">&#40;</span>worldDebugDraw<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> birdMoved<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			bird.<span style="color: #006600;">x</span>=mouseX;
			bird.<span style="color: #006600;">y</span>=mouseY;
			<span style="color: #000000; font-weight: bold;">var</span> distanceX:<span style="color: #0066CC;">Number</span>=bird.<span style="color: #006600;">x</span>-<span style="color: #cc66cc;">170</span>;
			<span style="color: #000000; font-weight: bold;">var</span> distanceY:<span style="color: #0066CC;">Number</span>=bird.<span style="color: #006600;">y</span>-<span style="color: #cc66cc;">270</span>;
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>distanceX<span style="color: #66cc66;">*</span>distanceX+distanceY<span style="color: #66cc66;">*</span>distanceY<span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">10000</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">var</span> birdAngle:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>distanceY,distanceX<span style="color: #66cc66;">&#41;</span>;
				bird.<span style="color: #006600;">x</span>=<span style="color: #cc66cc;">170</span>+<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">*</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">cos</span><span style="color: #66cc66;">&#40;</span>birdAngle<span style="color: #66cc66;">&#41;</span>;
				bird.<span style="color: #006600;">y</span>=<span style="color: #cc66cc;">270</span>+<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">*</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sin</span><span style="color: #66cc66;">&#40;</span>birdAngle<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> birdReleased<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			following=<span style="color: #000000; font-weight: bold;">true</span>;
			bird.<span style="color: #006600;">buttonMode</span>=<span style="color: #000000; font-weight: bold;">false</span>;
			removeEventListener<span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_MOVE</span>,birdMoved<span style="color: #66cc66;">&#41;</span>;
			removeEventListener<span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_UP</span>,birdReleased<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> sphereShape:b2CircleShape=<span style="color: #000000; font-weight: bold;">new</span> b2CircleShape<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">15</span><span style="color: #66cc66;">/</span>worldScale<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> sphereFixture:b2FixtureDef = <span style="color: #000000; font-weight: bold;">new</span> b2FixtureDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			sphereFixture.<span style="color: #006600;">density</span>=<span style="color: #cc66cc;">1</span>;
			sphereFixture.<span style="color: #006600;">friction</span>=<span style="color: #cc66cc;">3</span>;
			sphereFixture.<span style="color: #006600;">restitution</span>=<span style="color: #cc66cc;">0.1</span>;
			sphereFixture.<span style="color: #006600;">shape</span>=sphereShape;
			<span style="color: #000000; font-weight: bold;">var</span> sphereBodyDef:b2BodyDef = <span style="color: #000000; font-weight: bold;">new</span> b2BodyDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			sphereBodyDef.<span style="color: #0066CC;">type</span>=b2Body.<span style="color: #006600;">b2_dynamicBody</span>;
			sphereBodyDef.<span style="color: #006600;">userData</span>=<span style="color: #66cc66;">&#123;</span>assetName:<span style="color: #ff0000;">&quot;bird&quot;</span>,assetSprite:bird,remove:<span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#125;</span>;
			sphereBodyDef.<span style="color: #0066CC;">position</span>.<span style="color: #0066CC;">Set</span><span style="color: #66cc66;">&#40;</span>bird.<span style="color: #006600;">x</span><span style="color: #66cc66;">/</span>worldScale,bird.<span style="color: #006600;">y</span><span style="color: #66cc66;">/</span>worldScale<span style="color: #66cc66;">&#41;</span>;
			birdSphere=world.<span style="color: #006600;">CreateBody</span><span style="color: #66cc66;">&#40;</span>sphereBodyDef<span style="color: #66cc66;">&#41;</span>;
			birdSphere.<span style="color: #006600;">CreateFixture</span><span style="color: #66cc66;">&#40;</span>sphereFixture<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> distanceX:<span style="color: #0066CC;">Number</span>=bird.<span style="color: #006600;">x</span>-<span style="color: #cc66cc;">170</span>;
			<span style="color: #000000; font-weight: bold;">var</span> distanceY:<span style="color: #0066CC;">Number</span>=bird.<span style="color: #006600;">y</span>-<span style="color: #cc66cc;">270</span>;
			<span style="color: #000000; font-weight: bold;">var</span> distance:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sqrt</span><span style="color: #66cc66;">&#40;</span>distanceX<span style="color: #66cc66;">*</span>distanceX+distanceY<span style="color: #66cc66;">*</span>distanceY<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> birdAngle:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>distanceY,distanceX<span style="color: #66cc66;">&#41;</span>;
			birdSphere.<span style="color: #006600;">SetLinearVelocity</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> b2Vec2<span style="color: #66cc66;">&#40;</span>-distance<span style="color: #66cc66;">*</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">cos</span><span style="color: #66cc66;">&#40;</span>birdAngle<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">4</span>,-distance<span style="color: #66cc66;">*</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sin</span><span style="color: #66cc66;">&#40;</span>birdAngle<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> updateWorld<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			world.<span style="color: #006600;">Step</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> currentBody:b2Body=world.<span style="color: #006600;">GetBodyList</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; currentBody; currentBody=currentBody.<span style="color: #006600;">GetNext</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>currentBody.<span style="color: #006600;">GetUserData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
					<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>currentBody.<span style="color: #006600;">GetUserData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">assetSprite</span><span style="color: #66cc66;">!</span>=<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
						currentBody.<span style="color: #006600;">GetUserData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">assetSprite</span>.<span style="color: #006600;">x</span>=currentBody.<span style="color: #006600;">GetPosition</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">x</span><span style="color: #66cc66;">*</span>worldScale;
						currentBody.<span style="color: #006600;">GetUserData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">assetSprite</span>.<span style="color: #006600;">y</span>=currentBody.<span style="color: #006600;">GetPosition</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">y</span><span style="color: #66cc66;">*</span>worldScale;
						currentBody.<span style="color: #006600;">GetUserData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">assetSprite</span>.<span style="color: #006600;">rotation</span>=currentBody.<span style="color: #006600;">GetAngle</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">180</span><span style="color: #66cc66;">/</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span><span style="color: #66cc66;">&#41;</span>;
					<span style="color: #66cc66;">&#125;</span>
					<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>currentBody.<span style="color: #006600;">GetUserData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">remove</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
						<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>currentBody.<span style="color: #006600;">GetUserData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">assetSprite</span><span style="color: #66cc66;">!</span>=<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
							removeChild<span style="color: #66cc66;">&#40;</span>currentBody.<span style="color: #006600;">GetUserData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">assetSprite</span><span style="color: #66cc66;">&#41;</span>;
						<span style="color: #66cc66;">&#125;</span>
						world.<span style="color: #006600;">DestroyBody</span><span style="color: #66cc66;">&#40;</span>currentBody<span style="color: #66cc66;">&#41;</span>;
					<span style="color: #66cc66;">&#125;</span>
				<span style="color: #66cc66;">&#125;</span>
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>following<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">var</span> posX:<span style="color: #0066CC;">Number</span>=bird.<span style="color: #006600;">x</span>;
				posX=<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageWidth</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span>-posX;
				<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>posX<span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
					posX=<span style="color: #cc66cc;">0</span>;
				<span style="color: #66cc66;">&#125;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>posX<span style="color: #66cc66;">&lt;</span>-<span style="color: #cc66cc;">640</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
					posX=-<span style="color: #cc66cc;">640</span>;
				<span style="color: #66cc66;">&#125;</span>
				x=posX;
			<span style="color: #66cc66;">&#125;</span>
			world.<span style="color: #006600;">ClearForces</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			world.<span style="color: #006600;">DrawDebugData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>We are only one step away from creating a playable Angry Birds level, then I&#8217;ll explain everything line by line.</p>
<p>Meanwhile, <a href="/wp-content/uploads/2011/10/angrybirds3.zip">download the source code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2011/10/27/develop-a-flash-game-like-angry-birds-using-box2d-following-bird-with-the-camera-and-skinning-crates/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Develop a Flash game like Angry Birds using Box2D &#8211; Killing the pigs</title>
		<link>http://www.emanueleferonato.com/2011/10/21/develop-a-flash-game-like-angry-birds-using-box2d-killing-the-pigs/</link>
		<comments>http://www.emanueleferonato.com/2011/10/21/develop-a-flash-game-like-angry-birds-using-box2d-killing-the-pigs/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 17:07:40 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=4765</guid>
		<description><![CDATA[Second part of the Angry Birds tutorial. It's time to kill some pigs. You will also learn how to determine the strength of a Box2D collision]]></description>
			<content:encoded><![CDATA[<p>Do you know why Angry Birds had such as a worldwide success? Because people love to kill pigs in videogames.</p>
<p>I got sick when I saw <a href="http://www.imdb.com/title/tt0112431/" target = "_blank">Babe movie</a> and I want to kill pigs since then.</p>
<p>Today, you will learn how to do it thanks to the second part of the <a href="http://www.emanueleferonato.com/2011/10/10/develop-a-flash-game-like-angry-birds-using-box2d/">Angry Birds tutorial</a>.</p>
<p>Before we start, let me explain how we are going to kill them. A pig dies when something, including the bird, the objects in the game, and even the ground, hits it too hard.</p>
<p>Various objects in the game also break when they hit something too hard.</p>
<p>You are already able to see when two objects collide thanks to tutorials like <a href="http://www.emanueleferonato.com/2011/03/25/create-a-flash-prototype-of-the-moops-combos-of-joy-step-2/">Create a Flash prototype of The Moops &#8211; Combos of Joy</a>, but we&#8217;ve never seen how to determine the force of the collision.</p>
<p>You still have to create a custom contact listener class, but rather than using <code>BeginContact</code> function which just has an argument we can use to determine which objects collided, we will use <code>PostSolve</code>, which has another argument, a <code>b2ContactImpulse</code> variable.</p>
<p>With <code>b2ContactImpulse</code> we can know the amount of impulse Box2D has to give to bodies to avoid them from penetrating each other due to the collision. In other words, the collision force.</p>
<p>Once we know the strength of the collision, we can compare it with the maximum strength allowed before an object breaks (which can also be different according to the material, such as glass, wood, stone) and if the collision will break the object, we simply remove it from the Box2D world, and then we&#8217;ll show a cute animation.</p>
<p>This is what I made with this concept:</p>
<p><embed src="/wp-content/uploads/2011/10/angrybirds2.swf" menu="false" quality="high" width="640" height="480" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>Throw the pigeon to the castle on the right to see how all blocks (and the pig) which are hit hard get destroyed.</p>
<p>In this prototype, world boundaries and the bird itself can&#8217;t be destroyed.</p>
<p>This is the Main class:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Dynamics<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.</span>Shapes<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Common<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Dynamics<span style="color: #000066; font-weight: bold;">.</span>Joints<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Main <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> world<span style="color: #000066; font-weight: bold;">:</span>b2World=<span style="color: #0033ff; font-weight: bold;">new</span> b2World<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> worldScale<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> bird<span style="color: #000066; font-weight: bold;">:</span>birdMc=<span style="color: #0033ff; font-weight: bold;">new</span> birdMc<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> birdSphere<span style="color: #000066; font-weight: bold;">:</span>b2Body<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> customContact=<span style="color: #0033ff; font-weight: bold;">new</span> customContactListener<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>SetContactListener<span style="color: #000000;">&#40;</span>customContact<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> bg<span style="color: #000066; font-weight: bold;">:</span>backgroundMc=<span style="color: #0033ff; font-weight: bold;">new</span> backgroundMc<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>bg<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>bird<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			debugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=<span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=<span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">buttonMode</span>=<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">395</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #000000; font-weight:bold;">5</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #000000; font-weight:bold;">5</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">645</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">&lt;</span>=<span style="color: #000000; font-weight:bold;">4</span><span style="color: #000066; font-weight: bold;">;</span> i<span style="color: #000066; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				addBlock<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">450</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">365</span><span style="color: #000066; font-weight: bold;">-</span>i<span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">40</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				addBlock<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">550</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">365</span><span style="color: #000066; font-weight: bold;">-</span>i<span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">40</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
			addBlock<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">80</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">500</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">165</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addPig<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">500</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">125</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span>updateWorld<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_DOWN</span><span style="color: #000066; font-weight: bold;">,</span>birdClicked<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> addWall<span style="color: #000000;">&#40;</span>w<span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">,</span>px<span style="color: #000066; font-weight: bold;">,</span>py<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> floorShape<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			floorShape<span style="color: #000066; font-weight: bold;">.</span>SetAsBox<span style="color: #000000;">&#40;</span>w<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> floorFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>shape=floorShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> floorBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			floorBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>px<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>py<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			floorBodyDef<span style="color: #000066; font-weight: bold;">.</span>userData=<span style="color: #000000;">&#123;</span>assetName<span style="color: #000066; font-weight: bold;">:</span><span style="color: #990000;">&quot;wall&quot;</span><span style="color: #000066; font-weight: bold;">,</span>assetSprite<span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000066; font-weight: bold;">,</span>remove<span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">floor</span><span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>floorBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">floor</span><span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>floorFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> addPig<span style="color: #000000;">&#40;</span>r<span style="color: #000066; font-weight: bold;">,</span>px<span style="color: #000066; font-weight: bold;">,</span>py<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> pigShape<span style="color: #000066; font-weight: bold;">:</span>b2CircleShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2CircleShape<span style="color: #000000;">&#40;</span>r<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> pigFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			pigFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			pigFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">3</span><span style="color: #000066; font-weight: bold;">;</span>
			pigFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.1</span><span style="color: #000066; font-weight: bold;">;</span>
			pigFixture<span style="color: #000066; font-weight: bold;">.</span>shape=pigShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> pigBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			pigBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>px<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>py<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			pigBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">type</span>=b2Body<span style="color: #000066; font-weight: bold;">.</span>b2_dynamicBody<span style="color: #000066; font-weight: bold;">;</span>
			pigBodyDef<span style="color: #000066; font-weight: bold;">.</span>userData=<span style="color: #000000;">&#123;</span>assetName<span style="color: #000066; font-weight: bold;">:</span><span style="color: #990000;">&quot;pig&quot;</span><span style="color: #000066; font-weight: bold;">,</span>assetSprite<span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000066; font-weight: bold;">,</span>remove<span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> pigSphere<span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>pigBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			pigSphere<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>pigFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> addBlock<span style="color: #000000;">&#40;</span>w<span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">,</span>px<span style="color: #000066; font-weight: bold;">,</span>py<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> blockShape<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			blockShape<span style="color: #000066; font-weight: bold;">.</span>SetAsBox<span style="color: #000000;">&#40;</span>w<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> blockFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			blockFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">;</span>
			blockFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">;</span>
			blockFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.1</span><span style="color: #000066; font-weight: bold;">;</span>
			blockFixture<span style="color: #000066; font-weight: bold;">.</span>shape=blockShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> blockBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			blockBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>px<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>py<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			blockBodyDef<span style="color: #000066; font-weight: bold;">.</span>userData=<span style="color: #000000;">&#123;</span>assetName<span style="color: #000066; font-weight: bold;">:</span><span style="color: #990000;">&quot;block&quot;</span><span style="color: #000066; font-weight: bold;">,</span>assetSprite<span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000066; font-weight: bold;">,</span>remove<span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">;</span>
			blockBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">type</span>=b2Body<span style="color: #000066; font-weight: bold;">.</span>b2_dynamicBody<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> block<span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>blockBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			block<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>blockFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> birdClicked<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_MOVE</span><span style="color: #000066; font-weight: bold;">,</span>birdMoved<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_UP</span><span style="color: #000066; font-weight: bold;">,</span>birdReleased<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_DOWN</span><span style="color: #000066; font-weight: bold;">,</span>birdClicked<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> debugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> worldDebugDraw<span style="color: #000066; font-weight: bold;">:</span>b2DebugDraw=<span style="color: #0033ff; font-weight: bold;">new</span> b2DebugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> debugSprite<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>debugSprite<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			worldDebugDraw<span style="color: #000066; font-weight: bold;">.</span>SetSprite<span style="color: #000000;">&#40;</span>debugSprite<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			worldDebugDraw<span style="color: #000066; font-weight: bold;">.</span>SetDrawScale<span style="color: #000000;">&#40;</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			worldDebugDraw<span style="color: #000066; font-weight: bold;">.</span>SetFlags<span style="color: #000000;">&#40;</span>b2DebugDraw<span style="color: #000066; font-weight: bold;">.</span>e_shapeBit<span style="color: #000066; font-weight: bold;">|</span>b2DebugDraw<span style="color: #000066; font-weight: bold;">.</span>e_jointBit<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			worldDebugDraw<span style="color: #000066; font-weight: bold;">.</span>SetFillAlpha<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0.8</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>SetDebugDraw<span style="color: #000000;">&#40;</span>worldDebugDraw<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> birdMoved<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=<span style="color: #004993;">mouseX</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=<span style="color: #004993;">mouseY</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distanceX<span style="color: #000066; font-weight: bold;">*</span>distanceX<span style="color: #000066; font-weight: bold;">+</span>distanceY<span style="color: #000066; font-weight: bold;">*</span>distanceY<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight:bold;">10000</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> birdAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>distanceY<span style="color: #000066; font-weight: bold;">,</span>distanceX<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=<span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=<span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> birdReleased<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">buttonMode</span>=<span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_MOVE</span><span style="color: #000066; font-weight: bold;">,</span>birdMoved<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_UP</span><span style="color: #000066; font-weight: bold;">,</span>birdReleased<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereShape<span style="color: #000066; font-weight: bold;">:</span>b2CircleShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2CircleShape<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">15</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">3</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.1</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>shape=sphereShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">type</span>=b2Body<span style="color: #000066; font-weight: bold;">.</span>b2_dynamicBody<span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span>userData=<span style="color: #000000;">&#123;</span>assetName<span style="color: #000066; font-weight: bold;">:</span><span style="color: #990000;">&quot;bird&quot;</span><span style="color: #000066; font-weight: bold;">,</span>assetSprite<span style="color: #000066; font-weight: bold;">:</span>bird<span style="color: #000066; font-weight: bold;">,</span>remove<span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>sphereBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>sphereFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sqrt</span><span style="color: #000000;">&#40;</span>distanceX<span style="color: #000066; font-weight: bold;">*</span>distanceX<span style="color: #000066; font-weight: bold;">+</span>distanceY<span style="color: #000066; font-weight: bold;">*</span>distanceY<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> birdAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>distanceY<span style="color: #000066; font-weight: bold;">,</span>distanceX<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere<span style="color: #000066; font-weight: bold;">.</span>SetLinearVelocity<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">-</span><span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">4</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">4</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> updateWorld<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> currentBody<span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>GetBodyList<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span> currentBody<span style="color: #000066; font-weight: bold;">;</span> currentBody=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetNext<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>assetSprite<span style="color: #000066; font-weight: bold;">!</span>=<span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>assetSprite<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">;</span>
						currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>assetSprite<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">;</span>
						currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>assetSprite<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">rotation</span>=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetAngle<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">180</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>remove<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						world<span style="color: #000066; font-weight: bold;">.</span>DestroyBody<span style="color: #000000;">&#40;</span>currentBody<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>DrawDebugData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>and this is the custom contact listener:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Dynamics<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Dynamics<span style="color: #000066; font-weight: bold;">.</span>Contacts<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #9900cc; font-weight: bold;">class</span> customContactListener <span style="color: #0033ff; font-weight: bold;">extends</span> b2ContactListener <span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> MAX_IMPULSE<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">;</span>
		override <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> PostSolve<span style="color: #000000;">&#40;</span>contact<span style="color: #000066; font-weight: bold;">:</span>b2Contact<span style="color: #000066; font-weight: bold;">,</span> impulse<span style="color: #000066; font-weight: bold;">:</span>b2ContactImpulse<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>impulse<span style="color: #000066; font-weight: bold;">.</span>normalImpulses<span style="color: #000000;">&#91;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#93;</span><span style="color: #000066; font-weight: bold;">&gt;</span>MAX_IMPULSE<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> nameA<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span>=contact<span style="color: #000066; font-weight: bold;">.</span>GetFixtureA<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>assetName<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">toString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> nameB<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span>=contact<span style="color: #000066; font-weight: bold;">.</span>GetFixtureB<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>assetName<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">toString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>nameA<span style="color: #000066; font-weight: bold;">!</span>=<span style="color: #990000;">&quot;wall&quot;</span> <span style="color: #000066; font-weight: bold;">&amp;&amp;</span> nameA<span style="color: #000066; font-weight: bold;">!</span>=<span style="color: #990000;">&quot;bird&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					contact<span style="color: #000066; font-weight: bold;">.</span>GetFixtureA<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>remove=<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>nameB<span style="color: #000066; font-weight: bold;">!</span>=<span style="color: #990000;">&quot;wall&quot;</span> <span style="color: #000066; font-weight: bold;">&amp;&amp;</span> nameB<span style="color: #000066; font-weight: bold;">!</span>=<span style="color: #990000;">&quot;bird&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					contact<span style="color: #000066; font-weight: bold;">.</span>GetFixtureB<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span>remove=<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>Next time, I&#8217;ll add some scrolling, and you&#8217;ll see how you can have a working prototype of Angry Birds in a bunch of lines.</p>
<p><a href="/wp-content/uploads/2011/10/angrybirds2.zip">Download the source code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2011/10/21/develop-a-flash-game-like-angry-birds-using-box2d-killing-the-pigs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Develop a Flash game like Angry Birds using Box2D</title>
		<link>http://www.emanueleferonato.com/2011/10/10/develop-a-flash-game-like-angry-birds-using-box2d/</link>
		<comments>http://www.emanueleferonato.com/2011/10/10/develop-a-flash-game-like-angry-birds-using-box2d/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 17:15:02 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=4733</guid>
		<description><![CDATA[Use Box2D to simulate a sling like the one made famous by Angry Birds game.]]></description>
			<content:encoded><![CDATA[<p>Here we are with one of the most famous games running on your iPhone/iPad&#8230; <a href="http://rovio.com/" target="_blank">Rovio</a>&#8216;s <strong><a href="http://www.rovio.com/index.php?page=angry-birds" target="_blank">Angry Birds</a></strong>!</p>
<p><a href="http://www.rovio.com/index.php?page=angry-birds" target="_blank"><img src="/wp-content/uploads/2011/10/angrybirds2.jpg" /></a></p>
<p>A lot of developers criticize this title, saying it&#8217;s just a clone of &#8220;shoot something to destroy something using physics&#8221;, but what can I say? It&#8217;s fun.</p>
<p>So don&#8217;t be envy and let&#8217;s start understanding how does the sling work.</p>
<p>I wrote a quick and quite messy code just as a pre-release, I will probably adjust something and explain the code tomorrow, but for all you &#8220;gimme the code now, I can read it&#8221;, here it is the sling:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Dynamics<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Collision<span style="color: #000066; font-weight: bold;">.</span>Shapes<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Common<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D<span style="color: #000066; font-weight: bold;">.</span>Dynamics<span style="color: #000066; font-weight: bold;">.</span>Joints<span style="color: #000066; font-weight: bold;">.*;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Main <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> world<span style="color: #000066; font-weight: bold;">:</span>b2World=<span style="color: #0033ff; font-weight: bold;">new</span> b2World<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> worldScale<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> bird<span style="color: #000066; font-weight: bold;">:</span>birdMc=<span style="color: #0033ff; font-weight: bold;">new</span> birdMc<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> birdSphere<span style="color: #000066; font-weight: bold;">:</span>b2Body<span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> bg<span style="color: #000066; font-weight: bold;">:</span>backgroundMc=<span style="color: #0033ff; font-weight: bold;">new</span> backgroundMc<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>bg<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>bird<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=<span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=<span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">buttonMode</span>=<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">395</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #000000; font-weight:bold;">5</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #000000; font-weight:bold;">5</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			addWall<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">320</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">645</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">240</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span>updateWorld<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_DOWN</span><span style="color: #000066; font-weight: bold;">,</span>birdClicked<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> addWall<span style="color: #000000;">&#40;</span>w<span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">,</span>px<span style="color: #000066; font-weight: bold;">,</span>py<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> floorShape<span style="color: #000066; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			floorShape<span style="color: #000066; font-weight: bold;">.</span>SetAsBox<span style="color: #000000;">&#40;</span>w<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>h<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> floorFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">;</span>
			floorFixture<span style="color: #000066; font-weight: bold;">.</span>shape=floorShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> floorBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			floorBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>px<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>py<span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">floor</span><span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>floorBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">floor</span><span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>floorFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> birdClicked<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_MOVE</span><span style="color: #000066; font-weight: bold;">,</span>birdMoved<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_UP</span><span style="color: #000066; font-weight: bold;">,</span>birdReleased<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_DOWN</span><span style="color: #000066; font-weight: bold;">,</span>birdClicked<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> birdMoved<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=<span style="color: #004993;">mouseX</span><span style="color: #000066; font-weight: bold;">;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=<span style="color: #004993;">mouseY</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distanceX<span style="color: #000066; font-weight: bold;">*</span>distanceX<span style="color: #000066; font-weight: bold;">+</span>distanceY<span style="color: #000066; font-weight: bold;">*</span>distanceY<span style="color: #000066; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight:bold;">10000</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> birdAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>distanceY<span style="color: #000066; font-weight: bold;">,</span>distanceX<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=<span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=<span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">100</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> birdReleased<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">buttonMode</span>=<span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_MOVE</span><span style="color: #000066; font-weight: bold;">,</span>birdMoved<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MOUSE_UP</span><span style="color: #000066; font-weight: bold;">,</span>birdReleased<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereShape<span style="color: #000066; font-weight: bold;">:</span>b2CircleShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2CircleShape<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">15</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereFixture<span style="color: #000066; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>density=<span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>friction=<span style="color: #000000; font-weight:bold;">3</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>restitution=<span style="color: #000000; font-weight:bold;">0.1</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereFixture<span style="color: #000066; font-weight: bold;">.</span>shape=sphereShape<span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> sphereBodyDef<span style="color: #000066; font-weight: bold;">:</span>b2BodyDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">type</span>=b2Body<span style="color: #000066; font-weight: bold;">.</span>b2_dynamicBody<span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span>userData=bird<span style="color: #000066; font-weight: bold;">;</span>
			sphereBodyDef<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">position</span><span style="color: #000066; font-weight: bold;">.</span>Set<span style="color: #000000;">&#40;</span>bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000066; font-weight: bold;">,</span>bird<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">/</span>worldScale<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere=world<span style="color: #000066; font-weight: bold;">.</span>CreateBody<span style="color: #000000;">&#40;</span>sphereBodyDef<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere<span style="color: #000066; font-weight: bold;">.</span>CreateFixture<span style="color: #000000;">&#40;</span>sphereFixture<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceX<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>x<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">170</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> distanceY<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=bird<span style="color: #000066; font-weight: bold;">.</span>y<span style="color: #000066; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">270</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sqrt</span><span style="color: #000000;">&#40;</span>distanceX<span style="color: #000066; font-weight: bold;">*</span>distanceX<span style="color: #000066; font-weight: bold;">+</span>distanceY<span style="color: #000066; font-weight: bold;">*</span>distanceY<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> birdAngle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>distanceY<span style="color: #000066; font-weight: bold;">,</span>distanceX<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			birdSphere<span style="color: #000066; font-weight: bold;">.</span>SetLinearVelocity<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000066; font-weight: bold;">-</span><span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">4</span><span style="color: #000066; font-weight: bold;">,-</span><span style="color: #004993;">distance</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>birdAngle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">4</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> updateWorld<span style="color: #000000;">&#40;</span>e<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> currentBody<span style="color: #000066; font-weight: bold;">:</span>b2Body=world<span style="color: #000066; font-weight: bold;">.</span>GetBodyList<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span> currentBody<span style="color: #000066; font-weight: bold;">;</span> currentBody=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetNext<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span>=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">;</span>
					currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span>=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span><span style="color: #000066; font-weight: bold;">*</span>worldScale<span style="color: #000066; font-weight: bold;">;</span>
					currentBody<span style="color: #000066; font-weight: bold;">.</span>GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">rotation</span>=currentBody<span style="color: #000066; font-weight: bold;">.</span>GetAngle<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">180</span><span style="color: #000066; font-weight: bold;">/</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PI</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
			world<span style="color: #000066; font-weight: bold;">.</span>DrawDebugData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>And this is the result:</p>
<p><embed src="/wp-content/uploads/2011/10/angrybirds.swf" menu="false" quality="high" width="640" height="480" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>&#8230; you should know how to play&#8230; drag the bird to fire it with the sling.</p>
<p><a href="/wp-content/uploads/2011/10/angrybirds.zip">Download the source code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2011/10/10/develop-a-flash-game-like-angry-birds-using-box2d/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 10/18 queries in 0.159 seconds using disk: basic

Served from: www.emanueleferonato.com @ 2012-02-08 19:48:24 -->
