<?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>MikeCann.co.uk &#187; Experiment - MikeCann.co.uk - mikey see, mikey do!</title>
	<atom:link href="http://mikecann.co.uk/tag/experiment/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikecann.co.uk</link>
	<description>mikey see, mikey do!</description>
	<lastBuildDate>Sat, 28 Jan 2012 13:10:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Hxaria, Infinite Terrain [HaXe, WebGL,dat.GUI]</title>
		<link>http://mikecann.co.uk/personal-project/hxaria-infinite-terrain-haxe-webgldat-gui/</link>
		<comments>http://mikecann.co.uk/personal-project/hxaria-infinite-terrain-haxe-webgldat-gui/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 14:19:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[GLSL]]></category>
		<category><![CDATA[HaXe]]></category>
		<category><![CDATA[Hxaria]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Experiment]]></category>
		<category><![CDATA[haxe]]></category>
		<category><![CDATA[Particles]]></category>
		<category><![CDATA[terraria]]></category>
		<category><![CDATA[tilemaps]]></category>

		<guid isPermaLink="false">http://mikecann.co.uk/?p=1790</guid>
		<description><![CDATA[So I have been working on my &#8220;Terraria like Terrain&#8221; project &#8220;Hxaria&#8221; again. Following on from the last post, I have now made it so that each particle can have its texture changed. This completes the functionality required to render each tile as a point sprite, as talked about in my previous post. The way [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mikecann.co.uk/wp-content/uploads/2011/11/header.jpg"><img class="alignnone size-full wp-image-1792" title="header" src="http://mikecann.co.uk/wp-content/uploads/2011/11/header.jpg" alt="" width="700" height="416" /></a></p>
<p>So I have been working on my &#8220;<a href="http://mikecann.co.uk/personal-project/hxaria-terraria-like-terrain-in-haxe-and-webgl/">Terraria like Terrain</a>&#8221; project &#8220;Hxaria&#8221; again.</p>
<p>Following on from the last post, I have now made it so that each particle can have its texture changed. This completes the functionality required to render each tile as a point sprite, as talked about in my<a href="http://mikecann.co.uk/personal-project/hxaria-terraria-like-terrain-in-haxe-and-webgl/"> previous post</a>.</p>
<p>The way it works is that the entire world is recorded in a 2&#215;2 array Tilemap. This 2&#215;2 array holds a single Tile object for every single tile in the world:</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw4">class</span> Tile</div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw2">var</span> <span class="kw7">x</span> <span class="sy0">:</span> Int<span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw2">var</span> <span class="kw7">y</span> <span class="sy0">:</span> Int<span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw2">var</span> <span class="kw7">type</span> <span class="sy0">:</span> Int<span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> <span class="kw1">new</span><span class="br0">&#40;</span><span class="kw7">x</span><span class="sy0">:</span>Int<span class="sy0">,</span> <span class="kw7">y</span><span class="sy0">:</span>Int<span class="sy0">,</span> <span class="kw7">type</span><span class="sy0">:</span>Int<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">this</span><span class="sy0">.</span><span class="kw7">x</span> = <span class="kw7">x</span><span class="sy0">;</span> <span class="kw1">this</span><span class="sy0">.</span><span class="kw7">y</span> = <span class="kw7">y</span><span class="sy0">;</span> <span class="kw1">this</span><span class="sy0">.</span><span class="kw7">type</span> = <span class="kw7">type</span><span class="sy0">;</span> <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div></div>
<p>&nbsp;</p>
<p>When the TileRenderer needs to render it asks this Tilemap for a Tile that represents that screen coordinate, the Tilemap then offsets the position due to the camera movement and returns a tile. So it looks something like:</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2011/11/tm.png"><img class="alignnone size-full wp-image-1795" title="tm" src="http://mikecann.co.uk/wp-content/uploads/2011/11/tm.png" alt="" width="600" height="357" /></a></p>
<p>The tile type is then passed to the shader in attribute buffers per point sprite / tile along with all the tiles which are stored on a single texture:</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2011/11/tilescompressed.png"><img class="alignnone size-full wp-image-1803" title="tilescompressed" src="http://mikecann.co.uk/wp-content/uploads/2011/11/tilescompressed.png" alt="" width="256" height="352" /></a></p>
<p>The shader then performs the neccessary calculations to work out what the UV coordinate in the texture. The Vertex Shader:</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="glsl" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">uniform</span> <span class="kw3">float</span> amplitude<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">uniform</span> <span class="kw3">float</span> tileSize<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">uniform</span> <span class="kw3">float</span> texTilesWide<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">uniform</span> <span class="kw3">float</span> texTilesHigh<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">uniform</span> <span class="kw3">float</span> invTexTilesWide<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">uniform</span> <span class="kw3">float</span> invTexTilesHigh<span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="kw2">attribute</span> <span class="kw3">float</span> size<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">attribute</span> <span class="kw3">vec3</span> customColor<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">attribute</span> <span class="kw3">float</span> tileType<span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="kw2">varying</span> <span class="kw3">vec3</span> vColor<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">varying</span> <span class="kw3">vec2</span> vTilePos<span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="kw3">void</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">	vColor <span class="sy0">=</span> customColor<span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw3">float</span> t <span class="sy0">=</span> <span class="kw5">floor</span><span class="br0">&#40;</span>tileType<span class="sy0">/</span>texTilesWide<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">	vTilePos <span class="sy0">=</span> <span class="kw3">vec2</span><span class="br0">&#40;</span>tileType<span class="sy0">-</span><span class="br0">&#40;</span>t<span class="sy0">*</span>texTilesWide<span class="br0">&#41;</span><span class="sy0">,</span> t<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// +(.5/tileSize)</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw6">gl_PointSize</span> <span class="sy0">=</span> size<span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="kw6">gl_Position</span> <span class="sy0">=</span> projectionMatrix <span class="sy0">*</span> modelViewMatrix <span class="sy0">*</span> <span class="kw3">vec4</span><span class="br0">&#40;</span> position<span class="sy0">,</span> 1<span class="sy0">.</span>0 <span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div></div>
<p>&nbsp;</p>
<p>And the Fragment Shader:</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="glsl" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">uniform</span> <span class="kw3">vec3</span> color<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">uniform</span> <span class="kw3">sampler2D</span> texture<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">uniform</span> <span class="kw3">float</span> invTexTilesWide<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">uniform</span> <span class="kw3">float</span> invTexTilesHigh<span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="kw2">varying</span> <span class="kw3">vec3</span> vColor<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">varying</span> <span class="kw3">vec2</span> vTilePos<span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="kw3">void</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">	<span class="kw3">vec2</span> uv <span class="sy0">=</span> <span class="kw3">vec2</span><span class="br0">&#40;</span> <span class="kw6">gl_PointCoord</span><span class="sy0">.</span><span class="me1">x</span><span class="sy0">*</span>invTexTilesWide <span class="sy0">+</span> invTexTilesWide<span class="sy0">*</span>vTilePos<span class="sy0">.</span><span class="me1">x</span><span class="sy0">,</span> <span class="kw6">gl_PointCoord</span><span class="sy0">.</span><span class="me1">y</span><span class="sy0">*</span>invTexTilesHigh <span class="sy0">+</span> invTexTilesHigh<span class="sy0">*</span>vTilePos<span class="sy0">.</span><span class="me1">y</span><span class="br0">&#41;</span><span class="sy0">;</span>	</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw6">gl_FragColor</span> <span class="sy0">=</span> <span class="kw5">texture2D</span><span class="br0">&#40;</span> texture<span class="sy0">,</span> uv <span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div></div>
<p>So it works in a way very much like a raster engine. You only have to render as many particles as the screen can contain.</p>
<p>If the screen area moves beyond the extent of the Tilemap then more tiles are randomly generated:</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2011/11/22222.png"><img class="alignnone size-full wp-image-1796" title="22222" src="http://mikecann.co.uk/wp-content/uploads/2011/11/22222.png" alt="" width="515" height="335" /></a></p>
<p>The new tiles are randomly selected from 4 different types, Dirt, Gold, Diamonds and Rock. I have added some controls to the demo that allow you to tweak these values to demonstrate the random tile generation:</p>
<p><a href="http://mikecann.co.uk/wp-content/uploads/2011/11/Shot_041.png"><img class="alignnone size-full wp-image-1797" title="Shot_04" src="http://mikecann.co.uk/wp-content/uploads/2011/11/Shot_041.png" alt="" width="254" height="168" /></a></p>
<p>The UI may look familiar to people that have seen any experiments anyone who has worked with Three.js before, its the very popular <a href="http://code.google.com/p/dat-gui/">dat.GUI</a>. Its a really simple library written in javascript for creating controls that can be used to tweak experiments, perfect for me!</p>
<p>To get dat.GUI to work with haxe, I used the awesome <a href="http://www.google.co.uk/url?sa=t&amp;rct=j&amp;q=haxe%20externs&amp;source=web&amp;cd=1&amp;ved=0CBwQFjAA&amp;url=http%3A%2F%2Fhaxe.org%2Fdoc%2Fjs%2Fexterns&amp;ei=Gu_QTvK8IYP4sgbo15TzDA&amp;usg=AFQjCNEQvrXVfGjjQNO-yHhZ6HRTKlcmYw">Extern feature of HaXe</a>. This means that all I have to do is provide a stub interface to dat.GUI rather than a full implementation in haXe. This is great as it allows me to rapidly begin to use the library but also have the type safety of HaXe. It didnt take long to stub out the bits of the library I needed in an extern:</p>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw4">package</span> dat<span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">/**</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;* ...</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;* @author Mike Cann</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;*/</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">extern <span class="kw4">class</span> GUI</div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> <span class="kw1">new</span><span class="br0">&#40;</span>options<span class="sy0">:</span>Dynamic<span class="br0">&#41;</span> <span class="sy0">:</span> Void<span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> <span class="kw7">add</span><span class="br0">&#40;</span>options<span class="sy0">:</span>Dynamic<span class="sy0">,</span> <span class="kw7">name</span><span class="sy0">:</span><a href="http://www.google.com/search?q=string%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:string.html"><span class="kw5">String</span></a><span class="br0">&#41;</span> <span class="sy0">:</span> GUI<span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> <span class="kw7">name</span><span class="br0">&#40;</span><span class="kw7">value</span><span class="sy0">:</span><a href="http://www.google.com/search?q=string%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:string.html"><span class="kw5">String</span></a><span class="br0">&#41;</span> <span class="sy0">:</span> GUI<span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> <span class="kw7">min</span><span class="br0">&#40;</span><span class="kw7">value</span><span class="sy0">:</span>Float<span class="br0">&#41;</span> <span class="sy0">:</span> GUI<span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> <span class="kw7">max</span><span class="br0">&#40;</span><span class="kw7">value</span><span class="sy0">:</span>Float<span class="br0">&#41;</span> <span class="sy0">:</span> GUI<span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> step<span class="br0">&#40;</span><span class="kw7">value</span><span class="sy0">:</span>Float<span class="br0">&#41;</span> <span class="sy0">:</span> GUI<span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> onFinishChange<span class="br0">&#40;</span>f<span class="sy0">:</span>Void <span class="sy0">-&gt;</span> Void<span class="br0">&#41;</span> <span class="sy0">:</span> GUI<span class="sy0">;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">public</span> <span class="kw3">function</span> listen<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">:</span> GUI<span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div></div>
<p>Then I used it like:</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://mikecann.co.uk/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="actionscript3" style="font-family:monospace;"><span class="kw4">package</span> <span class="sy0">;</span>
<span class="kw1">import</span> dat<span class="sy0">.</span>GUI<span class="sy0">;</span>
&nbsp;
<span class="coMULTI">/**
 * ...
 * @author
 */</span>
&nbsp;
<span class="kw4">class</span> GUIManager
<span class="br0">&#123;</span>
	<span class="kw1">public</span> <span class="kw2">var</span> goldChance <span class="sy0">:</span> Float<span class="sy0">;</span>
	<span class="kw1">public</span> <span class="kw2">var</span> rockChance <span class="sy0">:</span> Float<span class="sy0">;</span>
	<span class="kw1">public</span> <span class="kw2">var</span> diamondsChance <span class="sy0">:</span> Float<span class="sy0">;</span>
	<span class="kw1">public</span> <span class="kw2">var</span> mapWidth <span class="sy0">:</span> Int<span class="sy0">;</span>
	<span class="kw1">public</span> <span class="kw2">var</span> mapHeight <span class="sy0">:</span> Int<span class="sy0">;</span>
&nbsp;
	<span class="kw1">private</span> <span class="kw2">var</span> gui <span class="sy0">:</span> GUI<span class="sy0">;</span>
	<span class="kw1">private</span> <span class="kw2">var</span> game <span class="sy0">:</span> Game<span class="sy0">;</span>
&nbsp;
	<span class="kw1">public</span> <span class="kw3">function</span> <span class="kw1">new</span><span class="br0">&#40;</span>game<span class="sy0">:</span>Game<span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span class="kw1">this</span><span class="sy0">.</span>game = game<span class="sy0">;</span>
&nbsp;
		gui = <span class="kw1">new</span> GUI<span class="br0">&#40;</span> <span class="br0">&#123;</span> <span class="kw7">height</span> <span class="sy0">:</span> 5 <span class="sy0">*</span> 32 <span class="sy0">-</span> 1 <span class="br0">&#125;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
		goldChance = game<span class="sy0">.</span>tilemap<span class="sy0">.</span>goldSpawnChance<span class="sy0">;</span>
		rockChance = game<span class="sy0">.</span>tilemap<span class="sy0">.</span>rockSpawnChance<span class="sy0">;</span>
		diamondsChance = game<span class="sy0">.</span>tilemap<span class="sy0">.</span>diamondsSpawnChance<span class="sy0">;</span>
		game<span class="sy0">.</span>tilemap<span class="sy0">.</span>mapResized = onTilemapResized<span class="sy0">;</span>
		mapWidth = <span class="nu0">0</span><span class="sy0">;</span>
		mapHeight = <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
		gui<span class="sy0">.</span><span class="kw7">add</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="sy0">,</span> <span class="st0">'goldChance'</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw7">name</span><span class="br0">&#40;</span><span class="st0">&quot;Gold&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw7">min</span><span class="br0">&#40;</span>0<span class="br0">&#41;</span><span class="sy0">.</span><span class="kw7">max</span><span class="br0">&#40;</span>1<span class="br0">&#41;</span><span class="sy0">.</span>step<span class="br0">&#40;</span>0<span class="sy0">.</span>001<span class="br0">&#41;</span><span class="sy0">.</span>onFinishChange<span class="br0">&#40;</span><span class="kw3">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> game<span class="sy0">.</span>tilemap<span class="sy0">.</span>goldSpawnChance = goldChance<span class="sy0">;</span> <span class="br0">&#125;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
		gui<span class="sy0">.</span><span class="kw7">add</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="sy0">,</span> <span class="st0">'rockChance'</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw7">name</span><span class="br0">&#40;</span><span class="st0">&quot;Rock&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw7">min</span><span class="br0">&#40;</span>0<span class="br0">&#41;</span><span class="sy0">.</span><span class="kw7">max</span><span class="br0">&#40;</span>1<span class="br0">&#41;</span><span class="sy0">.</span>step<span class="br0">&#40;</span>0<span class="sy0">.</span>001<span class="br0">&#41;</span><span class="sy0">.</span>onFinishChange<span class="br0">&#40;</span><span class="kw3">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> game<span class="sy0">.</span>tilemap<span class="sy0">.</span>rockSpawnChance = rockChance<span class="sy0">;</span> <span class="br0">&#125;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
		gui<span class="sy0">.</span><span class="kw7">add</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="sy0">,</span> <span class="st0">'diamondsChance'</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw7">name</span><span class="br0">&#40;</span><span class="st0">&quot;Diamond&quot;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw7">min</span><span class="br0">&#40;</span>0<span class="br0">&#41;</span><span class="sy0">.</span><span class="kw7">max</span><span class="br0">&#40;</span>1<span class="br0">&#41;</span><span class="sy0">.</span>step<span class="br0">&#40;</span>0<span class="sy0">.</span>001<span class="br0">&#41;</span><span class="sy0">.</span>onFinishChange<span class="br0">&#40;</span><span class="kw3">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> game<span class="sy0">.</span>tilemap<span class="sy0">.</span>diamondsSpawnChance = diamondsChance<span class="sy0">;</span> <span class="br0">&#125;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
		gui<span class="sy0">.</span><span class="kw7">add</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="sy0">,</span> <span class="st0">'mapWidth'</span><span class="br0">&#41;</span><span class="sy0">.</span>listen<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
		gui<span class="sy0">.</span><span class="kw7">add</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="sy0">,</span> <span class="st0">'mapHeight'</span><span class="br0">&#41;</span><span class="sy0">.</span>listen<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span>
&nbsp;
	<span class="kw1">private</span> <span class="kw3">function</span> onTilemapResized<span class="br0">&#40;</span>mapW<span class="sy0">:</span>Int<span class="sy0">,</span> mapH<span class="sy0">:</span>Int<span class="br0">&#41;</span><span class="sy0">:</span>Void
	<span class="br0">&#123;</span>
		mapWidth = mapW<span class="sy0">;</span>
		mapHeight = mapH<span class="sy0">;</span>
	<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Simples!</p>
<p>Anyways you can check the final result out on this page: <a href="http://mikecann.co.uk/projects/hxaria/02/">http://mikecann.co.uk/projects/hxaria/02/<br />
</a>(Click and drag to move the camera about)</p>
<p>I have also uploaded a quick video too:</p>
<p><iframe width="650" height="471" src="http://www.youtube.com/embed/Hw1bntVoNmU?hd=1" frameborder="0" allowfullscreen></iframe></p>
<p>I have also uploaded the source again to my github page: <a href="https://github.com/mikecann/Hxaria">https://github.com/mikecann/Hxaria</a><br />
(I have also created a tag, incase the source changes in the future)</p>
<p>Next up, lighting!</p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/personal-project/hxaria-infinite-terrain-haxe-webgldat-gui/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Scale of the Universe in Flash</title>
		<link>http://mikecann.co.uk/fun-videos/the-scale-of-the-universe-in-flash/</link>
		<comments>http://mikecann.co.uk/fun-videos/the-scale-of-the-universe-in-flash/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 11:46:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Fun & Videos]]></category>
		<category><![CDATA[Experiment]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Interesting]]></category>
		<category><![CDATA[Physics]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=892</guid>
		<description><![CDATA[Got sent this today by a friend who linked to Newgrounds upload. I think its actually quite genius: It reminds me old the old powers of 10 video:]]></description>
			<content:encoded><![CDATA[<p>Got sent this today by a friend who linked to Newgrounds <a href="http://www.newgrounds.com/portal/view/525347">upload</a>.</p>
<p>I think its actually quite genius:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="440" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://mikecann.co.uk/wp-content/uploads/2010/02/525347_scale_of_universe_ng.swf" /><embed type="application/x-shockwave-flash" width="640" height="440" src="http://mikecann.co.uk/wp-content/uploads/2010/02/525347_scale_of_universe_ng.swf"></embed></object></p>
<p>It reminds me old the old powers of 10 video:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="505" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/A2cmlhfdxuY&amp;hl=en_GB&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="505" src="http://www.youtube.com/v/A2cmlhfdxuY&amp;hl=en_GB&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/fun-videos/the-scale-of-the-universe-in-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quasimondo&#039;s Galactose</title>
		<link>http://mikecann.co.uk/programming/actionscript/quasimondos-galactose/</link>
		<comments>http://mikecann.co.uk/programming/actionscript/quasimondos-galactose/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 20:17:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Experiment]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Particles]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.mikecann.co.uk/?p=830</guid>
		<description><![CDATA[I have immense respect for some of the flash developers out there and Quasimondo is one of them. He has just released a little particle related experiment. Whenever I see these kind of things it inspires me to bash out my own little experiments. I wont talk too much about it but check it out [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mikecann.co.uk/wp-content/uploads/2010/01/ScreenHunter_02-Jan.-10-20.13.jpg"><img class="alignnone size-full wp-image-831" title="ScreenHunter_02 Jan. 10 20.13" src="http://mikecann.co.uk/wp-content/uploads/2010/01/ScreenHunter_02-Jan.-10-20.13.jpg" alt="ScreenHunter_02 Jan. 10 20.13" width="688" height="365" /></a></p>
<p>I have immense respect for some of the flash developers out there and Quasimondo is one of them. He has just released a little particle related experiment.</p>
<p>Whenever I see these kind of things it inspires me to bash out my own little experiments.</p>
<p>I wont talk too much about it but check it out on this lab page: <a href="http://incubator.quasimondo.com/flash/galactose.php">http://incubator.quasimondo.com/flash/galactose.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikecann.co.uk/programming/actionscript/quasimondos-galactose/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

