<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>sheetengine - Isometric HTML5 JavaScript Display Engine</title><link>http://sheetengine.codeplex.com/project/feeds/rss</link><description>Sheetengine is an HTML5 canvas based isometric display engine for JavaScript. It features textures, z-ordering, shadows, intersecting sheets, object movements.</description><item><title>Commented Unassigned: Moving around in a large scene with no character just asdw keys? [7]</title><link>http://sheetengine.codeplex.com/workitem/7</link><description>Hi, &lt;br /&gt;&lt;br /&gt;I&amp;#39;m new to sheetengine, and just having a few issues rendering large scenes. &lt;br /&gt;&lt;br /&gt;I am using the loadAndRemoveSheets&amp;#40;&amp;#41; function like in the example files. I would like to be able to move around inside the world but without a character. I have created some action listeners for the asdw keys, when I use the asdw keys to move around the correct tiles are being created and destroyed. But the new tile does not position in the center of the canvas. Is it possible to get this newly drawn center tile to be displayed in the center of the canvas&amp;#63; I have tried sheetengine.scene.setCenter&amp;#40;targetp, targetpuv&amp;#41;&amp;#59; but had little success. &lt;br /&gt;&lt;br /&gt;Thanks for any help&amp;#33;&lt;br /&gt;&lt;br /&gt;CODE&amp;#58; &lt;br /&gt;&lt;br /&gt;&amp;#36;&amp;#40;function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;        var canvasElement &amp;#61; document.getElementById&amp;#40;&amp;#39;maincanvas&amp;#39;&amp;#41;&amp;#59;&lt;br /&gt;        sheetengine.scene.init&amp;#40;canvasElement, &amp;#123;w&amp;#58;900,h&amp;#58;500&amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        var centertile &amp;#61; &amp;#123;x&amp;#58;0,y&amp;#58;0,z&amp;#58;0&amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;        &amp;#47;&amp;#47; define some basesheets&lt;br /&gt;        var map &amp;#61; &amp;#91;&amp;#93;&amp;#59;&lt;br /&gt;        for &amp;#40;var x&amp;#61;-3&amp;#59; x&amp;#60;&amp;#61;3&amp;#59; x&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;            for &amp;#40;var y&amp;#61;-3&amp;#59; y&amp;#60;&amp;#61;3&amp;#59; y&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;                map.push&amp;#40;&amp;#123;&lt;br /&gt;                    centerp&amp;#58; &amp;#123; x&amp;#58; x &amp;#42; 100, y&amp;#58; y &amp;#42; 100, z&amp;#58; 0 &amp;#125;,&lt;br /&gt;                    orientation&amp;#58; &amp;#123;alphaD&amp;#58; 90, betaD&amp;#58; 0, gammaD&amp;#58; 0&amp;#125;,&lt;br /&gt;                    size&amp;#58; &amp;#123;w&amp;#58;100,h&amp;#58;100&amp;#125;,&lt;br /&gt;                    init&amp;#58; function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;                        var basesheet &amp;#61; new sheetengine.BaseSheet&amp;#40;this.centerp, this.orientation, this.size&amp;#41;&amp;#59;&lt;br /&gt;                        basesheet.color &amp;#61; &amp;#39;&amp;#35;5D7E36&amp;#39;&amp;#59;&lt;br /&gt;                        return basesheet&amp;#59;&lt;br /&gt;                    &amp;#125;&lt;br /&gt;                &amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;        &amp;#47;&amp;#47; define some sheets&lt;br /&gt;        for &amp;#40;var i&amp;#61;0&amp;#59; i&amp;#60;50&amp;#59; i&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;            &amp;#40;function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;                var w &amp;#61; Math.random&amp;#40;&amp;#41;&amp;#42;10 &amp;#43; 30&amp;#59;&lt;br /&gt;                var z &amp;#61; w&amp;#59;&lt;br /&gt;                var c &amp;#61; Math.floor&amp;#40;Math.random&amp;#40;&amp;#41;&amp;#42;3&amp;#41;&amp;#59;&lt;br /&gt;                map.push&amp;#40;&amp;#123;&lt;br /&gt;                    centerp&amp;#58; &amp;#123;x&amp;#58;Math.random&amp;#40;&amp;#41;&amp;#42;1000 - 500, y&amp;#58;Math.random&amp;#40;&amp;#41;&amp;#42;1000 - 500, z&amp;#58;z&amp;#125;,&lt;br /&gt;                    orientation&amp;#58; &amp;#123;alphaD&amp;#58;c &amp;#61;&amp;#61; 0 &amp;#63; 90 &amp;#58; 0, betaD&amp;#58;c &amp;#61;&amp;#61; 1 &amp;#63; 90 &amp;#58; 0, gammaD&amp;#58;c &amp;#61;&amp;#61; 2 &amp;#63; 90 &amp;#58; 0&amp;#125;,&lt;br /&gt;                    size&amp;#58; &amp;#123;w&amp;#58;w,h&amp;#58;w&amp;#125;,&lt;br /&gt;                    init&amp;#58; function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;                        var sheet &amp;#61; new sheetengine.Sheet&amp;#40;this.centerp, this.orientation, this.size&amp;#41;&amp;#59;&lt;br /&gt;                        sheet.context.fillStyle &amp;#61; c &amp;#61;&amp;#61; 0 &amp;#63; &amp;#39;&amp;#35;006&amp;#39; &amp;#58; c &amp;#61;&amp;#61; 1 &amp;#63; &amp;#39;&amp;#35;600&amp;#39; &amp;#58; &amp;#39;&amp;#35;060&amp;#39;&amp;#59;&lt;br /&gt;                        sheet.context.fillRect&amp;#40;0,0,w,w&amp;#41;&amp;#59;&lt;br /&gt;                        return sheet&amp;#59;&lt;br /&gt;                    &amp;#125;&lt;br /&gt;                &amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&amp;#41;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;        sheetengine.scene.setCenter&amp;#40;centertile&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        loadAndRemoveSheets&amp;#40;&amp;#123;x&amp;#58;0,y&amp;#58;0&amp;#125;, centertile&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        &amp;#47;&amp;#47; draw initial scene&lt;br /&gt;        sheetengine.calc.calculateAllSheets&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        sheetengine.drawing.drawScene&amp;#40;true&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        window.onkeydown &amp;#61; function&amp;#40;e&amp;#41;&amp;#123;&lt;br /&gt;            move&amp;#40; e.keyCode &amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;        window.onkeyup &amp;#61; function&amp;#40;e&amp;#41;&amp;#123;&lt;br /&gt;            move&amp;#40; e.keyCode &amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;        function move&amp;#40;key&amp;#41; &amp;#123;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;var oldcentertile &amp;#61; &amp;#36;.extend&amp;#40; &amp;#123;&amp;#125;, centertile &amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            var newcentertile &amp;#61; &amp;#123;x&amp;#58;0,y&amp;#58;0,z&amp;#58;0&amp;#125;&lt;br /&gt;            if &amp;#40;key &amp;#61;&amp;#61; 87&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.y -&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125; else if &amp;#40;key &amp;#61;&amp;#61; 83&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.y &amp;#43;&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125; else if &amp;#40;key &amp;#61;&amp;#61; 65&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.x &amp;#43;&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125; else if &amp;#40;key &amp;#61;&amp;#61; 68&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.x -&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;            loadAndRemoveSheets&amp;#40; centertile, newcentertile &amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            sheetengine.scene.setCenter&amp;#40;newcentertile&amp;#41;&amp;#59;&lt;br /&gt;            sheetengine.calc.calculateChangedSheets&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;            sheetengine.drawing.drawScene&amp;#40;true&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;sheetengine.drawing.drawScene&amp;#40;true&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;        function loadAndRemoveSheets&amp;#40;oldcentertile, centertile&amp;#41; &amp;#123;&lt;br /&gt;            var boundary &amp;#61; &amp;#123; xmin&amp;#58; centertile.x &amp;#42; 100 - 300, xmax&amp;#58; centertile.x &amp;#42; 100 &amp;#43; 300, ymin&amp;#58; centertile.y &amp;#42; 100 - 300, ymax&amp;#58; centertile.y &amp;#42; 100 &amp;#43; 300 &amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;            console.log&amp;#40; boundary &amp;#41;&amp;#59;&lt;br /&gt;            console.log&amp;#40; oldcentertile &amp;#41;&amp;#59;&lt;br /&gt;            console.log&amp;#40; centertile &amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47; remove sheets that are far&lt;br /&gt;            for &amp;#40;var i&amp;#61;0&amp;#59;i&amp;#60;map.length&amp;#59;i&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;                var sheetinfo &amp;#61; map&amp;#91;i&amp;#93;&amp;#59;&lt;br /&gt;                if &amp;#40;sheetinfo.centerp.x &amp;#60; boundary.xmin &amp;#124;&amp;#124; sheetinfo.centerp.x &amp;#62; boundary.xmax &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#60; boundary.ymin &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#62; boundary.ymax&amp;#41; &amp;#123;&lt;br /&gt;                    if &amp;#40;sheetinfo.added&amp;#41; &amp;#123;&lt;br /&gt;                        sheetinfo.sheet.destroy&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                        sheetinfo.added &amp;#61; false&amp;#59;&lt;br /&gt;                    &amp;#125;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47; add new sheets&lt;br /&gt;            for &amp;#40;var i&amp;#61;0&amp;#59;i&amp;#60;map.length&amp;#59;i&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;                var sheetinfo &amp;#61; map&amp;#91;i&amp;#93;&amp;#59;&lt;br /&gt;                if &amp;#40;sheetinfo.centerp.x &amp;#60; boundary.xmin &amp;#124;&amp;#124; sheetinfo.centerp.x &amp;#62; boundary.xmax &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#60; boundary.ymin &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#62; boundary.ymax&amp;#41;&lt;br /&gt;                    continue&amp;#59;&lt;br /&gt;&lt;br /&gt;                if &amp;#40;&amp;#33;sheetinfo.added&amp;#41; &amp;#123;&lt;br /&gt;                    sheetinfo.sheet &amp;#61; sheetinfo.init&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                    sheetinfo.added &amp;#61; true&amp;#59;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47; translate background&lt;br /&gt;            sheetengine.scene.translateBackground&amp;#40;&lt;br /&gt;                &amp;#123;x&amp;#58;oldcentertile.x&amp;#42;100,y&amp;#58;oldcentertile.y&amp;#42;100&amp;#125;,&lt;br /&gt;                &amp;#123;x&amp;#58;centertile.x&amp;#42;100,y&amp;#58;centertile.y&amp;#42;100&amp;#125;&lt;br /&gt;            &amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;    &amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;Comments: move.png</description><author>Freid001</author><pubDate>Sun, 03 Jan 2016 15:47:05 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: Moving around in a large scene with no character just asdw keys? [7] 20160103034705P</guid></item><item><title>Commented Unassigned: Moving around in a large scene with no character just asdw keys? [7]</title><link>http://sheetengine.codeplex.com/workitem/7</link><description>Hi, &lt;br /&gt;&lt;br /&gt;I&amp;#39;m new to sheetengine, and just having a few issues rendering large scenes. &lt;br /&gt;&lt;br /&gt;I am using the loadAndRemoveSheets&amp;#40;&amp;#41; function like in the example files. I would like to be able to move around inside the world but without a character. I have created some action listeners for the asdw keys, when I use the asdw keys to move around the correct tiles are being created and destroyed. But the new tile does not position in the center of the canvas. Is it possible to get this newly drawn center tile to be displayed in the center of the canvas&amp;#63; I have tried sheetengine.scene.setCenter&amp;#40;targetp, targetpuv&amp;#41;&amp;#59; but had little success. &lt;br /&gt;&lt;br /&gt;Thanks for any help&amp;#33;&lt;br /&gt;&lt;br /&gt;CODE&amp;#58; &lt;br /&gt;&lt;br /&gt;&amp;#36;&amp;#40;function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;        var canvasElement &amp;#61; document.getElementById&amp;#40;&amp;#39;maincanvas&amp;#39;&amp;#41;&amp;#59;&lt;br /&gt;        sheetengine.scene.init&amp;#40;canvasElement, &amp;#123;w&amp;#58;900,h&amp;#58;500&amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        var centertile &amp;#61; &amp;#123;x&amp;#58;0,y&amp;#58;0,z&amp;#58;0&amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;        &amp;#47;&amp;#47; define some basesheets&lt;br /&gt;        var map &amp;#61; &amp;#91;&amp;#93;&amp;#59;&lt;br /&gt;        for &amp;#40;var x&amp;#61;-3&amp;#59; x&amp;#60;&amp;#61;3&amp;#59; x&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;            for &amp;#40;var y&amp;#61;-3&amp;#59; y&amp;#60;&amp;#61;3&amp;#59; y&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;                map.push&amp;#40;&amp;#123;&lt;br /&gt;                    centerp&amp;#58; &amp;#123; x&amp;#58; x &amp;#42; 100, y&amp;#58; y &amp;#42; 100, z&amp;#58; 0 &amp;#125;,&lt;br /&gt;                    orientation&amp;#58; &amp;#123;alphaD&amp;#58; 90, betaD&amp;#58; 0, gammaD&amp;#58; 0&amp;#125;,&lt;br /&gt;                    size&amp;#58; &amp;#123;w&amp;#58;100,h&amp;#58;100&amp;#125;,&lt;br /&gt;                    init&amp;#58; function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;                        var basesheet &amp;#61; new sheetengine.BaseSheet&amp;#40;this.centerp, this.orientation, this.size&amp;#41;&amp;#59;&lt;br /&gt;                        basesheet.color &amp;#61; &amp;#39;&amp;#35;5D7E36&amp;#39;&amp;#59;&lt;br /&gt;                        return basesheet&amp;#59;&lt;br /&gt;                    &amp;#125;&lt;br /&gt;                &amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;        &amp;#47;&amp;#47; define some sheets&lt;br /&gt;        for &amp;#40;var i&amp;#61;0&amp;#59; i&amp;#60;50&amp;#59; i&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;            &amp;#40;function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;                var w &amp;#61; Math.random&amp;#40;&amp;#41;&amp;#42;10 &amp;#43; 30&amp;#59;&lt;br /&gt;                var z &amp;#61; w&amp;#59;&lt;br /&gt;                var c &amp;#61; Math.floor&amp;#40;Math.random&amp;#40;&amp;#41;&amp;#42;3&amp;#41;&amp;#59;&lt;br /&gt;                map.push&amp;#40;&amp;#123;&lt;br /&gt;                    centerp&amp;#58; &amp;#123;x&amp;#58;Math.random&amp;#40;&amp;#41;&amp;#42;1000 - 500, y&amp;#58;Math.random&amp;#40;&amp;#41;&amp;#42;1000 - 500, z&amp;#58;z&amp;#125;,&lt;br /&gt;                    orientation&amp;#58; &amp;#123;alphaD&amp;#58;c &amp;#61;&amp;#61; 0 &amp;#63; 90 &amp;#58; 0, betaD&amp;#58;c &amp;#61;&amp;#61; 1 &amp;#63; 90 &amp;#58; 0, gammaD&amp;#58;c &amp;#61;&amp;#61; 2 &amp;#63; 90 &amp;#58; 0&amp;#125;,&lt;br /&gt;                    size&amp;#58; &amp;#123;w&amp;#58;w,h&amp;#58;w&amp;#125;,&lt;br /&gt;                    init&amp;#58; function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;                        var sheet &amp;#61; new sheetengine.Sheet&amp;#40;this.centerp, this.orientation, this.size&amp;#41;&amp;#59;&lt;br /&gt;                        sheet.context.fillStyle &amp;#61; c &amp;#61;&amp;#61; 0 &amp;#63; &amp;#39;&amp;#35;006&amp;#39; &amp;#58; c &amp;#61;&amp;#61; 1 &amp;#63; &amp;#39;&amp;#35;600&amp;#39; &amp;#58; &amp;#39;&amp;#35;060&amp;#39;&amp;#59;&lt;br /&gt;                        sheet.context.fillRect&amp;#40;0,0,w,w&amp;#41;&amp;#59;&lt;br /&gt;                        return sheet&amp;#59;&lt;br /&gt;                    &amp;#125;&lt;br /&gt;                &amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&amp;#41;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;        sheetengine.scene.setCenter&amp;#40;centertile&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        loadAndRemoveSheets&amp;#40;&amp;#123;x&amp;#58;0,y&amp;#58;0&amp;#125;, centertile&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        &amp;#47;&amp;#47; draw initial scene&lt;br /&gt;        sheetengine.calc.calculateAllSheets&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        sheetengine.drawing.drawScene&amp;#40;true&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        window.onkeydown &amp;#61; function&amp;#40;e&amp;#41;&amp;#123;&lt;br /&gt;            move&amp;#40; e.keyCode &amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;        window.onkeyup &amp;#61; function&amp;#40;e&amp;#41;&amp;#123;&lt;br /&gt;            move&amp;#40; e.keyCode &amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;        function move&amp;#40;key&amp;#41; &amp;#123;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;var oldcentertile &amp;#61; &amp;#36;.extend&amp;#40; &amp;#123;&amp;#125;, centertile &amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            var newcentertile &amp;#61; &amp;#123;x&amp;#58;0,y&amp;#58;0,z&amp;#58;0&amp;#125;&lt;br /&gt;            if &amp;#40;key &amp;#61;&amp;#61; 87&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.y -&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125; else if &amp;#40;key &amp;#61;&amp;#61; 83&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.y &amp;#43;&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125; else if &amp;#40;key &amp;#61;&amp;#61; 65&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.x &amp;#43;&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125; else if &amp;#40;key &amp;#61;&amp;#61; 68&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.x -&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;            loadAndRemoveSheets&amp;#40; centertile, newcentertile &amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            sheetengine.scene.setCenter&amp;#40;newcentertile&amp;#41;&amp;#59;&lt;br /&gt;            sheetengine.calc.calculateChangedSheets&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;            sheetengine.drawing.drawScene&amp;#40;true&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;sheetengine.drawing.drawScene&amp;#40;true&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;        function loadAndRemoveSheets&amp;#40;oldcentertile, centertile&amp;#41; &amp;#123;&lt;br /&gt;            var boundary &amp;#61; &amp;#123; xmin&amp;#58; centertile.x &amp;#42; 100 - 300, xmax&amp;#58; centertile.x &amp;#42; 100 &amp;#43; 300, ymin&amp;#58; centertile.y &amp;#42; 100 - 300, ymax&amp;#58; centertile.y &amp;#42; 100 &amp;#43; 300 &amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;            console.log&amp;#40; boundary &amp;#41;&amp;#59;&lt;br /&gt;            console.log&amp;#40; oldcentertile &amp;#41;&amp;#59;&lt;br /&gt;            console.log&amp;#40; centertile &amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47; remove sheets that are far&lt;br /&gt;            for &amp;#40;var i&amp;#61;0&amp;#59;i&amp;#60;map.length&amp;#59;i&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;                var sheetinfo &amp;#61; map&amp;#91;i&amp;#93;&amp;#59;&lt;br /&gt;                if &amp;#40;sheetinfo.centerp.x &amp;#60; boundary.xmin &amp;#124;&amp;#124; sheetinfo.centerp.x &amp;#62; boundary.xmax &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#60; boundary.ymin &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#62; boundary.ymax&amp;#41; &amp;#123;&lt;br /&gt;                    if &amp;#40;sheetinfo.added&amp;#41; &amp;#123;&lt;br /&gt;                        sheetinfo.sheet.destroy&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                        sheetinfo.added &amp;#61; false&amp;#59;&lt;br /&gt;                    &amp;#125;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47; add new sheets&lt;br /&gt;            for &amp;#40;var i&amp;#61;0&amp;#59;i&amp;#60;map.length&amp;#59;i&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;                var sheetinfo &amp;#61; map&amp;#91;i&amp;#93;&amp;#59;&lt;br /&gt;                if &amp;#40;sheetinfo.centerp.x &amp;#60; boundary.xmin &amp;#124;&amp;#124; sheetinfo.centerp.x &amp;#62; boundary.xmax &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#60; boundary.ymin &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#62; boundary.ymax&amp;#41;&lt;br /&gt;                    continue&amp;#59;&lt;br /&gt;&lt;br /&gt;                if &amp;#40;&amp;#33;sheetinfo.added&amp;#41; &amp;#123;&lt;br /&gt;                    sheetinfo.sheet &amp;#61; sheetinfo.init&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                    sheetinfo.added &amp;#61; true&amp;#59;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47; translate background&lt;br /&gt;            sheetengine.scene.translateBackground&amp;#40;&lt;br /&gt;                &amp;#123;x&amp;#58;oldcentertile.x&amp;#42;100,y&amp;#58;oldcentertile.y&amp;#42;100&amp;#125;,&lt;br /&gt;                &amp;#123;x&amp;#58;centertile.x&amp;#42;100,y&amp;#58;centertile.y&amp;#42;100&amp;#125;&lt;br /&gt;            &amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;    &amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;Comments: Load.png</description><author>Freid001</author><pubDate>Sun, 03 Jan 2016 15:46:39 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: Moving around in a large scene with no character just asdw keys? [7] 20160103034639P</guid></item><item><title>Created Unassigned: Moving around in a large scene with no character just asdw keys? [7]</title><link>http://sheetengine.codeplex.com/workitem/7</link><description>Hi, &lt;br /&gt;&lt;br /&gt;I&amp;#39;m new to sheetengine, and just having a few issues rendering large scenes. &lt;br /&gt;&lt;br /&gt;I am using the loadAndRemoveSheets&amp;#40;&amp;#41; function like in the example files. I would like to be able to move around inside the world but without a character. I have created some action listeners for the asdw keys, when I use the asdw keys to move around the correct tiles are being created and destroyed. But the new tile does not position in the center of the canvas. Is it possible to get this newly drawn center tile to be displayed in the center of the canvas&amp;#63; I have tried sheetengine.scene.setCenter&amp;#40;targetp, targetpuv&amp;#41;&amp;#59; but had little success. &lt;br /&gt;&lt;br /&gt;Thanks for any help&amp;#33;&lt;br /&gt;&lt;br /&gt;CODE&amp;#58; &lt;br /&gt;&lt;br /&gt;&amp;#36;&amp;#40;function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;        var canvasElement &amp;#61; document.getElementById&amp;#40;&amp;#39;maincanvas&amp;#39;&amp;#41;&amp;#59;&lt;br /&gt;        sheetengine.scene.init&amp;#40;canvasElement, &amp;#123;w&amp;#58;900,h&amp;#58;500&amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        var centertile &amp;#61; &amp;#123;x&amp;#58;0,y&amp;#58;0,z&amp;#58;0&amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;        &amp;#47;&amp;#47; define some basesheets&lt;br /&gt;        var map &amp;#61; &amp;#91;&amp;#93;&amp;#59;&lt;br /&gt;        for &amp;#40;var x&amp;#61;-3&amp;#59; x&amp;#60;&amp;#61;3&amp;#59; x&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;            for &amp;#40;var y&amp;#61;-3&amp;#59; y&amp;#60;&amp;#61;3&amp;#59; y&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;                map.push&amp;#40;&amp;#123;&lt;br /&gt;                    centerp&amp;#58; &amp;#123; x&amp;#58; x &amp;#42; 100, y&amp;#58; y &amp;#42; 100, z&amp;#58; 0 &amp;#125;,&lt;br /&gt;                    orientation&amp;#58; &amp;#123;alphaD&amp;#58; 90, betaD&amp;#58; 0, gammaD&amp;#58; 0&amp;#125;,&lt;br /&gt;                    size&amp;#58; &amp;#123;w&amp;#58;100,h&amp;#58;100&amp;#125;,&lt;br /&gt;                    init&amp;#58; function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;                        var basesheet &amp;#61; new sheetengine.BaseSheet&amp;#40;this.centerp, this.orientation, this.size&amp;#41;&amp;#59;&lt;br /&gt;                        basesheet.color &amp;#61; &amp;#39;&amp;#35;5D7E36&amp;#39;&amp;#59;&lt;br /&gt;                        return basesheet&amp;#59;&lt;br /&gt;                    &amp;#125;&lt;br /&gt;                &amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;        &amp;#47;&amp;#47; define some sheets&lt;br /&gt;        for &amp;#40;var i&amp;#61;0&amp;#59; i&amp;#60;50&amp;#59; i&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;            &amp;#40;function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;                var w &amp;#61; Math.random&amp;#40;&amp;#41;&amp;#42;10 &amp;#43; 30&amp;#59;&lt;br /&gt;                var z &amp;#61; w&amp;#59;&lt;br /&gt;                var c &amp;#61; Math.floor&amp;#40;Math.random&amp;#40;&amp;#41;&amp;#42;3&amp;#41;&amp;#59;&lt;br /&gt;                map.push&amp;#40;&amp;#123;&lt;br /&gt;                    centerp&amp;#58; &amp;#123;x&amp;#58;Math.random&amp;#40;&amp;#41;&amp;#42;1000 - 500, y&amp;#58;Math.random&amp;#40;&amp;#41;&amp;#42;1000 - 500, z&amp;#58;z&amp;#125;,&lt;br /&gt;                    orientation&amp;#58; &amp;#123;alphaD&amp;#58;c &amp;#61;&amp;#61; 0 &amp;#63; 90 &amp;#58; 0, betaD&amp;#58;c &amp;#61;&amp;#61; 1 &amp;#63; 90 &amp;#58; 0, gammaD&amp;#58;c &amp;#61;&amp;#61; 2 &amp;#63; 90 &amp;#58; 0&amp;#125;,&lt;br /&gt;                    size&amp;#58; &amp;#123;w&amp;#58;w,h&amp;#58;w&amp;#125;,&lt;br /&gt;                    init&amp;#58; function&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;                        var sheet &amp;#61; new sheetengine.Sheet&amp;#40;this.centerp, this.orientation, this.size&amp;#41;&amp;#59;&lt;br /&gt;                        sheet.context.fillStyle &amp;#61; c &amp;#61;&amp;#61; 0 &amp;#63; &amp;#39;&amp;#35;006&amp;#39; &amp;#58; c &amp;#61;&amp;#61; 1 &amp;#63; &amp;#39;&amp;#35;600&amp;#39; &amp;#58; &amp;#39;&amp;#35;060&amp;#39;&amp;#59;&lt;br /&gt;                        sheet.context.fillRect&amp;#40;0,0,w,w&amp;#41;&amp;#59;&lt;br /&gt;                        return sheet&amp;#59;&lt;br /&gt;                    &amp;#125;&lt;br /&gt;                &amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;            &amp;#125;&amp;#41;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;        sheetengine.scene.setCenter&amp;#40;centertile&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        loadAndRemoveSheets&amp;#40;&amp;#123;x&amp;#58;0,y&amp;#58;0&amp;#125;, centertile&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        &amp;#47;&amp;#47; draw initial scene&lt;br /&gt;        sheetengine.calc.calculateAllSheets&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;        sheetengine.drawing.drawScene&amp;#40;true&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        window.onkeydown &amp;#61; function&amp;#40;e&amp;#41;&amp;#123;&lt;br /&gt;            move&amp;#40; e.keyCode &amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;        window.onkeyup &amp;#61; function&amp;#40;e&amp;#41;&amp;#123;&lt;br /&gt;            move&amp;#40; e.keyCode &amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;        function move&amp;#40;key&amp;#41; &amp;#123;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;var oldcentertile &amp;#61; &amp;#36;.extend&amp;#40; &amp;#123;&amp;#125;, centertile &amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            var newcentertile &amp;#61; &amp;#123;x&amp;#58;0,y&amp;#58;0,z&amp;#58;0&amp;#125;&lt;br /&gt;            if &amp;#40;key &amp;#61;&amp;#61; 87&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.y -&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125; else if &amp;#40;key &amp;#61;&amp;#61; 83&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.y &amp;#43;&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125; else if &amp;#40;key &amp;#61;&amp;#61; 65&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.x &amp;#43;&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125; else if &amp;#40;key &amp;#61;&amp;#61; 68&amp;#41; &amp;#123;&lt;br /&gt;                newcentertile.x -&amp;#61; 1&amp;#59;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;            loadAndRemoveSheets&amp;#40; centertile, newcentertile &amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            sheetengine.scene.setCenter&amp;#40;newcentertile&amp;#41;&amp;#59;&lt;br /&gt;            sheetengine.calc.calculateChangedSheets&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;            sheetengine.drawing.drawScene&amp;#40;true&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47;sheetengine.drawing.drawScene&amp;#40;true&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;        function loadAndRemoveSheets&amp;#40;oldcentertile, centertile&amp;#41; &amp;#123;&lt;br /&gt;            var boundary &amp;#61; &amp;#123; xmin&amp;#58; centertile.x &amp;#42; 100 - 300, xmax&amp;#58; centertile.x &amp;#42; 100 &amp;#43; 300, ymin&amp;#58; centertile.y &amp;#42; 100 - 300, ymax&amp;#58; centertile.y &amp;#42; 100 &amp;#43; 300 &amp;#125;&amp;#59;&lt;br /&gt;&lt;br /&gt;            console.log&amp;#40; boundary &amp;#41;&amp;#59;&lt;br /&gt;            console.log&amp;#40; oldcentertile &amp;#41;&amp;#59;&lt;br /&gt;            console.log&amp;#40; centertile &amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47; remove sheets that are far&lt;br /&gt;            for &amp;#40;var i&amp;#61;0&amp;#59;i&amp;#60;map.length&amp;#59;i&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;                var sheetinfo &amp;#61; map&amp;#91;i&amp;#93;&amp;#59;&lt;br /&gt;                if &amp;#40;sheetinfo.centerp.x &amp;#60; boundary.xmin &amp;#124;&amp;#124; sheetinfo.centerp.x &amp;#62; boundary.xmax &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#60; boundary.ymin &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#62; boundary.ymax&amp;#41; &amp;#123;&lt;br /&gt;                    if &amp;#40;sheetinfo.added&amp;#41; &amp;#123;&lt;br /&gt;                        sheetinfo.sheet.destroy&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                        sheetinfo.added &amp;#61; false&amp;#59;&lt;br /&gt;                    &amp;#125;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47; add new sheets&lt;br /&gt;            for &amp;#40;var i&amp;#61;0&amp;#59;i&amp;#60;map.length&amp;#59;i&amp;#43;&amp;#43;&amp;#41; &amp;#123;&lt;br /&gt;                var sheetinfo &amp;#61; map&amp;#91;i&amp;#93;&amp;#59;&lt;br /&gt;                if &amp;#40;sheetinfo.centerp.x &amp;#60; boundary.xmin &amp;#124;&amp;#124; sheetinfo.centerp.x &amp;#62; boundary.xmax &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#60; boundary.ymin &amp;#124;&amp;#124; sheetinfo.centerp.y &amp;#62; boundary.ymax&amp;#41;&lt;br /&gt;                    continue&amp;#59;&lt;br /&gt;&lt;br /&gt;                if &amp;#40;&amp;#33;sheetinfo.added&amp;#41; &amp;#123;&lt;br /&gt;                    sheetinfo.sheet &amp;#61; sheetinfo.init&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;                    sheetinfo.added &amp;#61; true&amp;#59;&lt;br /&gt;                &amp;#125;&lt;br /&gt;            &amp;#125;&lt;br /&gt;&lt;br /&gt;            &amp;#47;&amp;#47; translate background&lt;br /&gt;            sheetengine.scene.translateBackground&amp;#40;&lt;br /&gt;                &amp;#123;x&amp;#58;oldcentertile.x&amp;#42;100,y&amp;#58;oldcentertile.y&amp;#42;100&amp;#125;,&lt;br /&gt;                &amp;#123;x&amp;#58;centertile.x&amp;#42;100,y&amp;#58;centertile.y&amp;#42;100&amp;#125;&lt;br /&gt;            &amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;&lt;br /&gt;    &amp;#125;&amp;#41;&amp;#59;&lt;br /&gt;</description><author>Freid001</author><pubDate>Sun, 03 Jan 2016 15:43:59 GMT</pubDate><guid isPermaLink="false">Created Unassigned: Moving around in a large scene with no character just asdw keys? [7] 20160103034359P</guid></item><item><title>New Comment on "Rendering large scenes"</title><link>https://sheetengine.codeplex.com/wikipage?title=Rendering large scenes&amp;ANCHOR#C32127</link><description>Hi,&amp;#10;&amp;#10;I&amp;#39;m having some problems moving the camera view around a large scene map I have created. &amp;#10;&amp;#10;I am creating and destroying tiles using the loadAndRemoveSheets&amp;#40;&amp;#41; as demonstrated in the demo files. &amp;#10;&amp;#10;When I use the around keys to move around the map the correct tiles are being destroyed and create but they no not get set to the center of the canvas. Thus I can see other tiles on the map but only for as far as the canvas&amp;#39;s height and width. Is it possible to position the newly selected center tile at the center of the canvas&amp;#63; &amp;#10;&amp;#10;Thanks</description><author>Freid001</author><pubDate>Sun, 03 Jan 2016 00:50:16 GMT</pubDate><guid isPermaLink="false">New Comment on "Rendering large scenes" 20160103125016A</guid></item><item><title>New Post: Setting an object's transparency</title><link>http://sheetengine.codeplex.com/discussions/585884</link><description>&lt;div style="line-height: normal;"&gt;Hello,&lt;br /&gt;
&lt;br /&gt;
In the game I'm working on, I want to have a building appear semi-transparent while the player chooses its location. Then when it's chosen, I want to change the transparency to 100%. To accomplish this I'm setting the transparency of the context of each sheet in my object to 0.2 when I create the object. However, each time I set the position of the object, the transparency seems to decrease until it becomes opaque.&lt;br /&gt;
&lt;br /&gt;
Any ideas would be much appreciated! To be clear, I want the transparency to remain at 0.2 as the position of the object changes. I'm sure I'm making a silly mistake or don't really understand how transparency works in sheetengine.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://youtu.be/mxdqHrSrtT8" rel="nofollow"&gt;YouTube Video Showing Problem&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Mouse hover code:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$(&amp;quot;#maincanvas&amp;quot;).mousemove(function(event) {    
// get the hover coordinates

var offsetTop = $('#maincanvas').offset().top;
var offsetLeft = $('#maincanvas').offset().left;

var P1puv = {
    u:event.clientX - offsetLeft, 
    v:event.clientY - offsetTop
};
var P1pxy = sheetengine.transforms.inverseTransformPoint({
    u:P1puv.u + sheetengine.scene.center.u, 
    v:P1puv.v + sheetengine.scene.center.v
});

if(buildingGhost === &amp;quot;buildingE&amp;quot;){
    var tmpX = P1pxy.x + 35;
    var tmpY = P1pxy.y + 25;
    var tileX = Math.round(tmpX / 100)
    var tileY = Math.round(tmpY / 100);
    console.log(&amp;quot;P1pxy.x=&amp;quot; + P1pxy.x + &amp;quot; P1pxy.y=&amp;quot; + P1pxy.y + &amp;quot; tileX=&amp;quot; + tileX + &amp;quot; tileY=&amp;quot; + tileY);
    
    if(ghostBuilding == null){
        ghostBuildingOldP = {x:tileX,y:tileY};
        ghostBuilding = createBuilding({x:tileX * 100,y:tileY * 100,z:0}, 1, '#4a3a47', '#4a3a47', 0.2);
    } else {
        if(tileX != ghostBuildingOldP.x || tileY != ghostBuildingOldP.y) {
            ghostBuildingOldP = {x:tileX,y:tileY};
            ghostBuilding.setPosition({x:tileX * 100,y:tileY * 100,z:0});
            sheetengine.calc.calculateAllSheets();
            sheetengine.drawing.drawScene(true);
        }
    }
} else {
    ghostBuilding = null;
}
});&lt;/code&gt;&lt;/pre&gt;

House creation code:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;function createBuilding(centerP, stories, colour, roofColour, alpha){

var frontWall = new sheetengine.Sheet({x:0,y:50,z:25}, {alphaD:0,betaD:0,gammaD:0}, {w:100,h:50});
frontWall.context.globalAlpha = alpha;
frontWall.context.fillStyle = colour;
frontWall.context.fillRect(0,0,100,50);
frontWall.context.clearRect(30,15,70,20);

var frontLedgeBottom = new sheetengine.Sheet({x:13,y:48,z:15}, {alphaD:90,betaD:0,gammaD:0}, {w:75,h:4});
frontLedgeBottom.context.globalAlpha = alpha;
frontLedgeBottom.context.fillStyle = colour;
frontLedgeBottom.context.fillRect(0,0,75,4);

var frontLedgeLeft = new sheetengine.Sheet({x:-19,y:48,z:20}, {alphaD:90,betaD:0,gammaD:90}, {w:30,h:4});
frontLedgeLeft.context.globalAlpha = alpha;
frontLedgeLeft.context.fillStyle = colour;
frontLedgeLeft.context.fillRect(0,0,30,4);

var sideLedgeRight = new sheetengine.Sheet({x:50,y:11,z:26}, {alphaD:0,betaD:0,gammaD:0}, {w:4,h:20});
sideLedgeRight.context.globalAlpha = alpha;
sideLedgeRight.context.fillStyle = colour;
sideLedgeRight.context.fillRect(0,0,4,20);

var sideLedgeBottom = new sheetengine.Sheet({x:48,y:28,z:15}, {alphaD:0,betaD:90,gammaD:90}, {w:40,h:4});
sideLedgeBottom.context.globalAlpha = alpha;
sideLedgeBottom.context.fillStyle = colour;
sideLedgeBottom.context.fillRect(0,0,75,4);

var windowFront = new sheetengine.Sheet({x:10,y:48,z:24}, {alphaD:0,betaD:0,gammaD:0}, {w:75,h:30});
windowFront.context.globalAlpha = alpha;
windowFront.context.fillStyle = '#b6b8ff';
windowFront.context.fillRect(0,0,75,30);

var windowSide = new sheetengine.Sheet({x:47,y:28,z:24}, {alphaD:0,betaD:0,gammaD:90}, {w:40,h:19});
windowSide.context.globalAlpha = alpha;
windowSide.context.fillStyle = '#b6b8ff';
windowSide.context.fillRect(0,0,75,19);

var doorWindow1 = new sheetengine.Sheet({x:47,y:-20,z:25}, {alphaD:0,betaD:0,gammaD:90}, {w:20,h:35});
doorWindow1.context.globalAlpha = alpha;
doorWindow1.context.fillStyle = '#b6b8ff';
doorWindow1.context.fillRect(0,0,20,35);

var sideWall1 = new sheetengine.Sheet({x:50,y:0,z:25}, {alphaD:0,betaD:0,gammaD:90}, {w:101,h:50});
sideWall1.context.globalAlpha = alpha;
sideWall1.context.fillStyle = colour;
sideWall1.context.fillRect(0,0,101,50);
sideWall1.context.clearRect(0,15,40,20);
sideWall1.context.clearRect(55,13,20,35);

var door = new sheetengine.Sheet({x:55,y:-10,z:25}, {alphaD:0,betaD:0,gammaD:90}, {w:20,h:35});
door.context.globalAlpha = alpha;
door.context.fillStyle = '#5d3500';
door.context.fillRect(0,0,20,35);
door.context.clearRect(2,2,15,12);
door.context.clearRect(2,22,15,8);

var sideWall2 = new sheetengine.Sheet({x:-50,y:0,z:25}, {alphaD:0,betaD:0,gammaD:90}, {w:101,h:50});
sideWall2.context.globalAlpha = alpha;
sideWall2.context.fillStyle = colour;
sideWall2.context.fillRect(0,0,101,50);

var frontRoofLedge1 = new sheetengine.Sheet({x:0,y:52,z:50}, {alphaD:90,betaD:0,gammaD:0}, {w:100,h:6});
frontRoofLedge1.context.globalAlpha = alpha;
frontRoofLedge1.context.fillStyle = colour;
frontRoofLedge1.context.fillRect(0,0,100,6);

var frontRoofLedge2 = new sheetengine.Sheet({x:2,y:55,z:53}, {alphaD:0,betaD:0,gammaD:0}, {w:105,h:6});
frontRoofLedge2.context.globalAlpha = alpha;
frontRoofLedge2.context.fillStyle = colour;
frontRoofLedge2.context.fillRect(0,0,105,6);


var sideRoofLedge1 = new sheetengine.Sheet({x:50,y:2,z:50}, {alphaD:0,betaD:90,gammaD:90}, {w:105,h:6});
sideRoofLedge1.context.globalAlpha = alpha;
sideRoofLedge1.context.fillStyle = colour;
sideRoofLedge1.context.fillRect(0,0,105,6);


var sideRoofLedge2 = new sheetengine.Sheet({x:55,y:2,z:53}, {alphaD:0,betaD:0,gammaD:90}, {w:105,h:6});
sideRoofLedge2.context.globalAlpha = alpha;
sideRoofLedge2.context.fillStyle = colour;
sideRoofLedge2.context.fillRect(0,0,105,6);


var backWall = new sheetengine.Sheet({x:0,y:-50,z:25}, {alphaD:0,betaD:0,gammaD:0}, {w:100,h:50});
backWall.context.globalAlpha = alpha;
backWall.context.fillStyle = colour;
backWall.context.fillRect(0,0,100,50);


var roof1 = new sheetengine.Sheet({x:1,y:1,z:55}, {alphaD:90,betaD:0,gammaD:0}, {w:107,h:107});
roof1.context.globalAlpha = alpha;
roof1.context.fillStyle = colour;
roof1.context.fillRect(0,0,107,107);
roof1.context.clearRect(20,20,68,68);


var roof2 = new sheetengine.Sheet({x:1,y:1,z:48}, {alphaD:90,betaD:0,gammaD:0}, {w:68,h:68});
roof2.context.globalAlpha = alpha;
roof2.context.fillStyle = roofColour;
roof2.context.fillRect(0,0,68,68);


var roofLedgeBack = new sheetengine.Sheet({x:0,y:-33,z:52}, {alphaD:0,betaD:0,gammaD:0}, {w:68,h:7});
roofLedgeBack.context.globalAlpha = alpha;
roofLedgeBack.context.fillStyle = colour;
roofLedgeBack.context.fillRect(0,0,68,7);


var roofLedgeSide = new sheetengine.Sheet({x:-32,y:0,z:52}, {alphaD:0,betaD:0,gammaD:90}, {w:68,h:7});
roofLedgeSide.context.globalAlpha = alpha;
roofLedgeSide.context.fillStyle = colour;
roofLedgeSide.context.fillRect(0,0,68,7);

 
var building1 = new sheetengine.SheetObject(centerP, {alpha:0,beta:0,gamma:0}, [doorWindow1,door,roofLedgeSide, roofLedgeBack, roof2,roof1,sideRoofLedge2, frontRoofLedge2, sideRoofLedge1, frontRoofLedge1, sideLedgeRight, windowFront, windowSide, frontLedgeBottom, frontLedgeLeft, frontWall, sideWall1, sideWall2, backWall, sideLedgeBottom], {w:150,h:100,relu:20,relv:30});

sheetengine.calc.calculateChangedSheets();
sheetengine.drawing.drawScene(true);

return building1;
}&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;</description><author>riotgrrrl</author><pubDate>Tue, 10 Mar 2015 12:37:49 GMT</pubDate><guid isPermaLink="false">New Post: Setting an object's transparency 20150310123749P</guid></item><item><title>New Post: How to manipulate z-ordering of sheets</title><link>http://sheetengine.codeplex.com/discussions/438198</link><description>&lt;div style="line-height: normal;"&gt;I've checked it out, it's pretty cool! I like it :) Nice work!&lt;br /&gt;
&lt;/div&gt;</description><author>dobsonl</author><pubDate>Tue, 10 Feb 2015 15:48:46 GMT</pubDate><guid isPermaLink="false">New Post: How to manipulate z-ordering of sheets 20150210034846P</guid></item><item><title>New Post: How to manipulate z-ordering of sheets</title><link>http://sheetengine.codeplex.com/discussions/438198</link><description>&lt;div style="line-height: normal;"&gt;It took a while but finally we went online. I am proud to present you the configurator we worked on the last month. &lt;br /&gt;
The part of the 3D visualization is managed by the sheet engine.&lt;br /&gt;
Please use the “View in 3D” button to see the sheet engine working: &lt;a href="http://www.cubit-shop.com/en-uk/sofa/configurator" rel="nofollow"&gt;www.cubit-shop.com/en-uk/sofa/configurator&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Thanks again!&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://work.mach-parat.de/test/sheetengine/z_ordering/topview.jpg" alt="Image" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://work.mach-parat.de/test/sheetengine/z_ordering/frontview.jpg" alt="Image" /&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pilleman</author><pubDate>Tue, 10 Feb 2015 15:32:44 GMT</pubDate><guid isPermaLink="false">New Post: How to manipulate z-ordering of sheets 20150210033244P</guid></item><item><title>New Post: Sheetengine dead?</title><link>http://sheetengine.codeplex.com/discussions/578704</link><description>&lt;div style="line-height: normal;"&gt;Sorry, I've been busy lately with other stuff and couldn't get a new release out. No major modifications are planned as of now. For the time being I can recommend you try Three.js, it has some sort of isometric support, and it can also rely on WebGL. Shadows might be a bit more tricky to implement to work globally but not that difficult either. Also it probably has the biggest community among js game engines so that can also be a plus.&lt;br /&gt;
&lt;/div&gt;</description><author>dobsonl</author><pubDate>Tue, 27 Jan 2015 20:47:18 GMT</pubDate><guid isPermaLink="false">New Post: Sheetengine dead? 20150127084718P</guid></item><item><title>New Post: Sheetengine dead?</title><link>http://sheetengine.codeplex.com/discussions/578704</link><description>&lt;div style="line-height: normal;"&gt;The last posts to this forum are from September 2014, and the last source code update was in 2012. Is this thing in active development anymore??&lt;br /&gt;
&lt;br /&gt;
Can anyone recommend a good alternative to build isometric javascript games?&lt;br /&gt;
&lt;/div&gt;</description><author>chearner</author><pubDate>Tue, 27 Jan 2015 18:12:30 GMT</pubDate><guid isPermaLink="false">New Post: Sheetengine dead? 20150127061230P</guid></item><item><title>New Post: manipulate xyz and size of simple Sheets</title><link>http://sheetengine.codeplex.com/discussions/567402</link><description>&lt;div style="line-height: normal;"&gt;I see,&lt;br /&gt;
&lt;br /&gt;
ok, i will try to handle the zoom issue - this is the biggest problem here I think&lt;br /&gt;
&lt;br /&gt;
Thanks again!&lt;br /&gt;
&lt;/div&gt;</description><author>Mishap</author><pubDate>Mon, 15 Sep 2014 16:41:27 GMT</pubDate><guid isPermaLink="false">New Post: manipulate xyz and size of simple Sheets 20140915044127P</guid></item><item><title>New Post: manipulate xyz and size of simple Sheets</title><link>http://sheetengine.codeplex.com/discussions/567402</link><description>&lt;div style="line-height: normal;"&gt;Well, intersection calculation for objects are automatically switched off, so by switching shadows off I think you have pretty much optimized what you can.&lt;br /&gt;
&lt;/div&gt;</description><author>dobsonl</author><pubDate>Mon, 15 Sep 2014 16:21:11 GMT</pubDate><guid isPermaLink="false">New Post: manipulate xyz and size of simple Sheets 20140915042111P</guid></item><item><title>New Post: manipulate xyz and size of simple Sheets</title><link>http://sheetengine.codeplex.com/discussions/567402</link><description>&lt;div style="line-height: normal;"&gt;I have seen the example with large sceene handling and it looks very nice.&lt;br /&gt;
But unfortunately I do have to zoom out - maybe i can limit the zoom out factor a little bit.&lt;br /&gt;
The Crossyard version is really not a solution exactly because of the reasons that you have yourself. &lt;br /&gt;
&lt;br /&gt;
The Images that i place (sheet textures) might as well be higher then the actual basesheet, so the z-ordering is indeed needed. but I don't care about interceptions or shadows (I have disabled all the shadows). &lt;br /&gt;
Is there any other calculation I can disable to make it faster?&lt;br /&gt;
&lt;br /&gt;
thanks a lot!!!&lt;br /&gt;
&lt;/div&gt;</description><author>Mishap</author><pubDate>Mon, 15 Sep 2014 15:30:07 GMT</pubDate><guid isPermaLink="false">New Post: manipulate xyz and size of simple Sheets 20140915033007P</guid></item><item><title>New Post: manipulate xyz and size of simple Sheets</title><link>http://sheetengine.codeplex.com/discussions/567402</link><description>&lt;div style="line-height: normal;"&gt;Hi,&lt;br /&gt;
&lt;br /&gt;
for sheetengine to work with big scenes I have created an example that uses dynamic loading and unloading sheets. This means that you can have as many sheets as you want, but the canvas will display only a limited number of sheets at a given time. When the camera moves, more sheets are loaded and some that fall out of the viewport are unloaded. Unfortunately I don't have a solution for zooming out. I have solved this problem in Crossyards by drawing the static scenes onto separate images and then creating image pyramids from them: this way the information you show on every stage is the same amount so you get the same performance, however this approach only works for strictly static scenes, there is no &amp;quot;augmented&amp;quot; gameplay possible when you zoom out. It would be too much information to handle.&lt;br /&gt;
&lt;br /&gt;
You might get good results with basesheets because they don't count in calculations: no intersections, no shadows, no z-ordering, etc. They are simply drawn to the canvas as a first step, but sheets are different, because they do cast shadows, they may intersect other sheets and the order of drawing is arbitrary so it needs to be calculated. It could possibly be faster with WebGL support, but it is not implemented yet.&lt;br /&gt;
&lt;br /&gt;
I cannot give advice on what engine to use, search for them on the internet, maybe you'll find some useful. If you don't need shadows cast by sheets that are reflected on other sheets/objects, you don't need sophisticated z-ordering because your sheets/objects are positioned on the same level and always in set orientations, and your sheets/objects never intersect, then your problem is a lot smaller than what sheetengine is capable of solving, and can be solved with simpler engines with better performance. Sheetengine was designed to render &amp;quot;difficult&amp;quot; scenes, with aribtrary sheet positions and orientations.&lt;br /&gt;
&lt;/div&gt;</description><author>dobsonl</author><pubDate>Mon, 15 Sep 2014 15:10:48 GMT</pubDate><guid isPermaLink="false">New Post: manipulate xyz and size of simple Sheets 20140915031048P</guid></item><item><title>New Post: manipulate xyz and size of simple Sheets</title><link>http://sheetengine.codeplex.com/discussions/567402</link><description>&lt;div style="line-height: normal;"&gt;Hi dobsonl and thanks for the answer!&lt;br /&gt;
&lt;br /&gt;
Wow - so you mean sheetengine is not made to work with such big scenes?&lt;br /&gt;
Using sheetengine I've already created the world that has the new perspective (2.5D), it can be moved and zoomed, it redraws everything after moving or zooming, since the dynamic scene has limited width and height... And with 3500 basesheets I can moove and zoom it without a problem.&lt;br /&gt;
But when I just place around 200 simple sheets and the move/zoom or just redraw the world - it gets very very slow...&lt;br /&gt;
So if 3500 sheets is too much for the sheetengine, could you please give me a suggestion what could I do or which framework to use for this task:&lt;br /&gt;
&lt;br /&gt;
I have a small game (in 2.5D, so 100x68px each tile) that will have 3500 basesheets and can also have up to 3500 sheets (these are only images, so no objects will be created using poligons or what so ever) placed on the basesheets.&lt;br /&gt;
People place the objects on the basesheets, move the map, zoom in/out (preferably the zoom out goes until one sees the whole scene).... &lt;br /&gt;
It must be fast... &lt;br /&gt;
&lt;br /&gt;
So I've already build this using normal html and js, but it's too slow on old PCs, so I'm trying to create a canvas version.&lt;br /&gt;
&lt;br /&gt;
Thanks a lot for your help!&lt;br /&gt;
&lt;/div&gt;</description><author>Mishap</author><pubDate>Mon, 15 Sep 2014 12:58:13 GMT</pubDate><guid isPermaLink="false">New Post: manipulate xyz and size of simple Sheets 20140915125813P</guid></item><item><title>New Post: manipulate xyz and size of simple Sheets</title><link>http://sheetengine.codeplex.com/discussions/567402</link><description>&lt;div style="line-height: normal;"&gt;Hi,&lt;br /&gt;
&lt;br /&gt;
how is performance with static sheets instead of objects? Unfortunately only objects implement partial redrawing of areas in case if they move/change, so if you choose to work with static sheets, you will need to redraw the whole scene, which would be quite slow in your case as I can imagine. Showing 3500 sheets anyway sounds to me a lot more than what is reasonable with html5 and sheetengine, but you need to test it.&lt;br /&gt;
&lt;br /&gt;
Image preloading: what I usually do is define a counter with the number of images to load (var counter = 100;) and at every image onload I decrease the counter and check if it has reached 0 - in which case I also call drawScene once. Not the best and most sophisticated approach, and you might also want to watch out for image loading errors. Alternatively you could use some sort of promise technology, or async library like &lt;a href="https://github.com/caolan/async" rel="nofollow"&gt;https://github.com/caolan/async&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>dobsonl</author><pubDate>Mon, 15 Sep 2014 06:09:41 GMT</pubDate><guid isPermaLink="false">New Post: manipulate xyz and size of simple Sheets 20140915060941A</guid></item><item><title>New Post: manipulate xyz and size of simple Sheets</title><link>http://sheetengine.codeplex.com/discussions/567402</link><description>&lt;div style="line-height: normal;"&gt;Hi,&lt;br /&gt;
&lt;br /&gt;
I've read that after placing a normal sheet it becomes a static part of the scene.&lt;br /&gt;
Is there a way to change the x/y and width/height properties after placing them?&lt;br /&gt;
I don't want to use SheetObject since it is much heavier for the processor. On the scene I have about 3500 objects - if one zooms out, it is possible to see all of them at once - and that gets really heavy if I use sheetObject.&lt;br /&gt;
&lt;br /&gt;
Another question is how to handle the image preloading of many objects?&lt;br /&gt;
I am using this code to preload and append the image to a sheet:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;var sheet = new sheetengine.Sheet(...);
var img = new Image();
img.onload = function() {
    sheet.context.drawImage(img,0,0,wid,height);    
    sheetengine.calc.calculateChangedSheets();
    sheetengine.drawing.drawScene(true);
};
img.src = mySRC; &lt;/code&gt;&lt;/pre&gt;

If I place at least 100 objects with imgages, I have to call the drawScene method 100 times - this doesn't seem right. What can I do to call it only once?&lt;br /&gt;
&lt;br /&gt;
thanks&lt;br /&gt;
Mishap&lt;br /&gt;
&lt;/div&gt;</description><author>Mishap</author><pubDate>Sun, 14 Sep 2014 22:26:52 GMT</pubDate><guid isPermaLink="false">New Post: manipulate xyz and size of simple Sheets 20140914102652P</guid></item><item><title>New Post: move object with drag</title><link>http://sheetengine.codeplex.com/discussions/565561</link><description>&lt;div style="line-height: normal;"&gt;Hi,&lt;br /&gt;
you can download examples from the download page. You can also check the documentation tab here on codeplex. There is no such example that presents dragging objects, however whatever info you need to achieve it is written in the following examples:&lt;br /&gt;
&lt;br /&gt;
Moving / rotating objects - &lt;a href="https://sheetengine.codeplex.com/wikipage?title=Moving%20%2f%20rotating%20objects&amp;amp;referringTitle=Documentation" rel="nofollow"&gt;https://sheetengine.codeplex.com/wikipage?title=Moving%20%2f%20rotating%20objects&amp;referringTitle=Documentation&lt;/a&gt;&lt;br /&gt;
Selecting locations and objects - &lt;a href="https://sheetengine.codeplex.com/wikipage?title=Selecting%20locations%20and%20objects&amp;amp;referringTitle=Documentation" rel="nofollow"&gt;https://sheetengine.codeplex.com/wikipage?title=Selecting%20locations%20and%20objects&amp;referringTitle=Documentation&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>dobsonl</author><pubDate>Fri, 05 Sep 2014 12:47:54 GMT</pubDate><guid isPermaLink="false">New Post: move object with drag 20140905124754P</guid></item><item><title>New Post: move object with drag</title><link>http://sheetengine.codeplex.com/discussions/565561</link><description>&lt;div style="line-height: normal;"&gt;Hi, my question: is it possible drag the objects with mouse? i can't find examples.&lt;br /&gt;
&lt;br /&gt;
best regards&lt;br /&gt;
&lt;/div&gt;</description><author>Pirosoftit</author><pubDate>Fri, 05 Sep 2014 12:29:18 GMT</pubDate><guid isPermaLink="false">New Post: move object with drag 20140905122918P</guid></item><item><title>New Post: How to: Move SheetObject textured</title><link>http://sheetengine.codeplex.com/discussions/542155</link><description>&lt;div style="line-height: normal;"&gt;Keten, Levente has given me a solution that might help your problem, it helped mine. &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;Try changin lines 609-610 to this:

    targetContext.clearRect(0, 0, viewPort.w, viewPort.h);

instead of this:

    targetContext.fillStyle = sheetengine.backgroundColor;
    targetContext.fillRect(0, 0, viewPort.w, viewPort.h);&lt;/code&gt;&lt;/pre&gt;

This fixed the issue for me. I can now simply set whatever background I like on the canvas itself, and there are no issues so far that arise from moving the camera or SheetObjects interacting with the edges of the scene. I'm not noticing the bug which you've shown above, are you calling drawScene() each time a sheet moves?&lt;br /&gt;
&lt;br /&gt;
Btw, I'm interested in how you've achieved 'non square' maps. Did you modify the BaseSheet render loop somehow? Currently my idea is to put an 'inactive' property on a BaseSheet and simply not render it if the BaseSheet has that property. &lt;br /&gt;
&lt;/div&gt;</description><author>RohanDeshpande</author><pubDate>Thu, 04 Sep 2014 06:48:06 GMT</pubDate><guid isPermaLink="false">New Post: How to: Move SheetObject textured 20140904064806A</guid></item><item><title>Commented Unassigned: Bug? at calculateChangedSheets - currentsheet.intersectors is undefined [6]</title><link>http://sheetengine.codeplex.com/workitem/6</link><description>Hello&lt;br /&gt;&lt;br /&gt;sometimes I get this rrror&lt;br /&gt;&amp;#62; TypeError&amp;#58; currentsheet.intersectors is undefined&lt;br /&gt;&lt;br /&gt;after I performed a change at a sheet and now want to redraw. Of course I call calculateChangedSheets&amp;#40;&amp;#41; before I call the redraw method.&lt;br /&gt;&lt;br /&gt;I don&amp;#39;t yet know when and how it exactly occurs. I can&amp;#39;t reproduce this error intetionally. It just sometimes occur and sometimes not at likely changes..&lt;br /&gt;&lt;br /&gt;Is ist a bug or am I doing something wrong&amp;#63;&lt;br /&gt;&lt;br /&gt;PS&amp;#58; A complete refresh works by the way..&lt;br /&gt;Comments: Sorry, I really don&amp;#39;t understand how this is possible. If currentsheet is undefined then it should throw an error already before that line. If intersectors is undefined it should simply skip to the next line. Try changing line 1418 to this&amp;#10;if &amp;#40;currentsheet.intersectors&amp;#41; &amp;#123;&amp;#10;instead of this&amp;#10;if &amp;#40;currentsheet.intersectors &amp;#33;&amp;#61; null&amp;#41; &amp;#123;</description><author>dobsonl</author><pubDate>Thu, 04 Sep 2014 05:52:34 GMT</pubDate><guid isPermaLink="false">Commented Unassigned: Bug? at calculateChangedSheets - currentsheet.intersectors is undefined [6] 20140904055234A</guid></item></channel></rss>