Search the Community
Showing results for tags 'Multiple'.
-
Hello guys, I'm new to this forum and to BabylonJS. The question about multiple scenes isn't new, I know. I already read some threads, but the answers didn't work for me. I need two scenes that act simultaneously. Only one scene should be visible at a time, the other should run in the background. I also want a button in each scene to switch to the other scene. For some reason I can't run my scenes with playground, so i just send you my html-files as an example. I'm sorry for the effort. 2engines.html is a modification of a version someone posted in one of the threads about two canvas and engines. It's nearly what I want, but the button to switch the scene is shown for just one scene (you can switch the scene without button by pressing '1'). I don't know if I have to use multiple canvas for my request. Multiview.html is an example how it could look like (also an experiment with multiviews). I call the createScene-function everytime to switch, so the scene will always start from the beginning. I want to switch to the other scene without restarting it, so you can see the progress of whatever happens there, while running in background. The main goal is to create a platform with a couple of minigames (solve a puzzle, realtime strategy, first-person-shooter etc.) via browser. Students can program their own agents and let them fight against pre-programmed agents. People or students that don't play should be able to watch one of those games and switch the camera (or scene) to watch another game. I'm trying to find out if it's possible to realize this concept (or rather the representation with scenes and cameras) with BabylonJS. I'm not the one creating this platform. It is part of my study project to find out, if BabylonJS is the right framework for this. Wow, that was a huge spam. I hope there wasn't too much unnecessary information and that I've made myself clear. Best regards. 2engines.html multiview.html
-
Hi there, I've stumbled across some very weird audio behavior and can't seem to avoid it. I'm trying to loop a marker of my audio file, which works well on itself. Whenever pausing and resuming the audio loop at least once however, as soon as the next loop point is reached it will not stop the currently running audio and play from the marker but just add a new layer of audio that plays from the marker instead, while the old one just continues to play. And it keeps doing that for every loop. //Create { this.sfx_music = this.sound.add("key); this.sfx_music.allowMultiple = false; this.sfx_music.addMarker('turbo', 116.8696, 7.3846, 1, true); this.sfx_music.play('turbo'); } unpauseGame: function() { if(this.game.paused) { this.game.paused = false; this.sfx_music.resume(); } }, pauseGame: function() { this.sfx_music.pause(); this.game.paused = true; } Pausing the game without pausing the music doesn't cause this problem, but It's mandatory for me to pause the music when pausing the game.. Could this be a bug in sound.pause() or sound.resume()? I'm using Chrome but I have the same behavior in firefox as well. Please help! Best Zampano
-
Loading OBJ files with several objects with unique ID's
genvvk posted a topic in Questions & Answers
Hi there, I have one single OBJ file with several objects within. Each element has its unique name. Is it possible to load each object as a single mesh? Tried to do this: var parts = []; obj.onSuccess = function (task) { for(var i = 0; i < task.loadedMeshes.length; i++){ parts.push(task.loadedMeshes[i]); parts[parts - 1].material = uniqueMat; ... } } But it seems that each next mesh / geometry has all previous ones like an avalanche. Loading OBJ with 5 similar spheres as a test Geometry {delayLoadState: 0, _totalVertices: 266, _isDisposed: false, id: "c0d23769-a422-47c5-8060-fabd67a55b1a", _engine: Engine…} main.js:254 Geometry {delayLoadState: 0, _totalVertices: 532, _isDisposed: false, id: "e83a4890-a107-425d-969c-eea1f356e200", _engine: Engine…} main.js:254 Geometry {delayLoadState: 0, _totalVertices: 798, _isDisposed: false, id: "19b85286-2066-4ef7-9e95-bba19d906e71", _engine: Engine…} main.js:254 Geometry {delayLoadState: 0, _totalVertices: 1064, _isDisposed: false, id: "22bc102d-1acc-4fa8-9576-77a9915e666f", _engine: Engine…} main.js:254 Geometry {delayLoadState: 0, _totalVertices: 1330, _isDisposed: false, id: "3eb8eab7-1871-4fed-b484-c18fc881cb23", _engine: Engine…} main.js:234 0 -
Hello, So I am working on my game: https://megabyterain.itch.io/firewall and it works pretty well, but I wanted to add some features to it. Mainly, I wanted to add powerups to help keep things interesting. Anyway, while I was doing so, all the sudden I noticed my code got super messed up. No console errors pop up, but my game will just stop spawning blocks after you get a power-up. In my original game, the only timer was the one that controlled when new blocks should be created. However, when I added another timer to stop the powerups (simply changing a variable back to its original state) it seems like the timer that controls the creation of new blocks stops working. Here is some sample code createPackets: function(){ //creating the square/packets... game.time.events.add(800-(this.score*1.15),function(){ this.createPackets(); //recursive function. Worked fine before },this); } //other code and stuff //on collision if(daBlock.type == "slow"){ //if the box is a slowing powerup this.speedModifier = currentSettings.powerups.slow.amount; //set speed mofifier game.time.events.add(currentSettings.powerups.slow.time, function(){ console.log("stop slow powerup"); this.speedModifier = 1; },this); } //when I remove the second timer everything works fine, but otherwise the packets/boxes/squares stop getting created after getting a powerup
-
Hi everyone! Is there any way in Babylon.js to combine multiple textures, or multiple materials on a single mesh? I know that it's possible to apply diffuseTexture and ambientTexture on a material at once, but if I have more than 2 textures? Like for example, it could be used for maps, having a satellite image as a base texture and then applying a layer with ambient pressure, and UV index, and wind direction, and whatnot
-
Hello, I have a problem with adding tile maps to my phaser game. I know how to add one tile map, but I can't add multiple tile maps. I want two things, which are that I want to add these tile maps, but I also want collision between the turtle and all of the four layers. I didn't add the tile maps already to my game, because of the fact that I can't display the tilemap on my screen. I don't know why.... I get a few error's, which you can see in the images below. Does anybody knows a solution for my problem(s)? My code: var road; var turtle; var controls = {}; var Background; var Finish; var Grass; var Cars; var playState = { preload: function(){ game.load.tilemap('map', 'assets/road.json',null, Phaser.Tilemap.TILED_JSON); game.load.image('tiles', 'assets/road.png'); this.load.image('turtle', 'assets/turtles.png'); }, create:function(){ this.physics.startSystem(Phaser.Physics.ARCADE); map = game.add.tilemap('map'); map.addTilesetImage('road','tiles'); Background = map.createLayer('Background'); Background.resizeWorld(); Background.setCollisionBetween(4, 325); game.physics.arcade.enable(Background); Finish = map.createLayer('Finish'); Finish.resizeWorld(); Finish.setCollisionBetween(4, 15); game.physics.arcade.enable(Finish); Grass = map.createLayer('Grass'); Grass.resizeWorld(); Grass.setCollisionBetween(0, 325); game.physics.arcade.enable(Grass); Cars = map.createLayer('Cars'); Cars.resizeWorld(); Cars.setCollisionBetween(18,309); game.physics.arcade.enable(Cars); //Turtle this.turtle = this.add.sprite(440,450,'turtle'); this.physics.arcade.enable(this.turtle); this.turtle.enableBody = true; this.turtle.anchor.setTo(0.5); this.turtle.scale.setTo(0.2); this.turtle.body.allowGravity = false; this.turtle.body.immovable = true; this.controls = { left: this.input.keyboard.addKey(Phaser.Keyboard.LEFT), right: this.input.keyboard.addKey(Phaser.Keyboard.RIGHT), }; }, update:function(){ this.turtle.body.collideWorldBounds = true; this.turtle.body.velocity.x = 0; if (this.controls.left.isDown){ this.turtle.body.velocity.x = -200; } if (this.controls.right.isDown){ this.turtle.body.velocity.x = 200; } }, gameover:function(){ game.state.start('over'); }, Finish:function(){ game.state.start('win'); } }; My JSON file { "height":326, "layers":[ { "compression":"zlib", "data":"eJy0+GXU1dX6Bmz\/Nynd3Snd3aB0d5d0d3d3d3e3dHephEoo3SAlIKCS78Gnd\/PbjOfT86zhMVznteac57rvtaaoIf7v\/\/4vJKEI\/X\/\/+0hLOtKTgYxkIjNZyEo2spODnOQiN3nISz7yU4CCFCIZyUlByi\/0lqI0ZShLOcpTgYpUojJVqEo1qlODmtSiNnWoSz3qU4SiFOObL\/S2oCWtaE0b2tKO9nSgI53oTBe60o3u9KAnvehNH\/rSkEY05rsv9A5nBCMZxWjGMJZxjGdCYM8UpjKN6cxgJrOYzRz6M4CBDGIRi1nCUpaxnBWsZBWrWcNa1rE+0Ps9m9nCVraxnR3sZBfzmM8CFnKAgxziMEc4yjGOc4KT\/MCP\/MSpQO\/P\/MKvnOM8F7jIb\/zOHvayj\/1c5wY3ucVt7nCXe9znAX\/wkEc8DvQ+4zkv+IuXvOI1f\/MPl7nCVa7xgY+fNv\/HX\/\/5v\/95hDELy1eEIzwRiEgkIhOFqEQjOjGISSxiE4c3znrLO96TyCwxSUj6hd5UZqn5mjSkJR3pyUBGMpGZLGQlG9nJQU5yEY\/4JCAhBShIIQp\/ofdbs+KUoCSlKE0ZylKO8lSgIpWoTBWqUo3q5CEv+chPXepRnwZf6G1i1pRmNKcFLWlFa9rQlna0pwMd6URnutCVmtSiNnXoTR\/60o\/+DGAggxjMEIYyjOGMYCSjGM0YxjKO8UxgIpOYzBS604Oe9GIWs5nDXOYxnwUsZBGLWcJSlrGcFaxkFatZw1rWsZ4NbGQT3zON6cxg5hd+r\/9vPU47+wxn+ZktbGUb2\/8\/7H3i7Kf8yTN+5RznufD\/YW\/EEO43kYnCC11\/8ZJXxDKLTRziEo\/4JCAhiUhMEpKSjOSkICWpSM3XpCEt6UhPBjKSiWhEJwYxyUFOcpGbPOQlH\/kpQEEKUZgiFKUY3\/AtxSlBSUpRmjKUpRzlyUJWspGdqlSjOjWoSS1qU4e6If73d9jIrDHf0YSmNKM5LWhJK1rThrZUpBKVqUJnutCVbnSnBz3pRe8v9A4wG8ggBjOEoQxjOCMYyShGM4b2dKAjnZjEZKYwlWlMZwYzmfWF3vlmC1jIIhazhKUsYzkrWMkqVjOO8UxgIhvZxPdsZkugZ8cXevea7WM\/BzjIIQ5zhKMc4zgnOMla1rGeDZzhLD\/zC78Gei7Kv\/E7l7jMFa5yjevc4Ca3uM0d7nKP+zzgR37iFKd5yp884zkvAr2v5b\/5h395w1ve8Z4PfPy0x78c\/4cQhCQUoQlDWB5a84jHPCGSWWSiEJVoIT\/vjSXHJg5xiUd8EpCQRCQmCUlJRnJSkJJUpCYc4YlARDKQkUxkJgtZyUZ2cpCTXOQmD3kD762gXIjCFKEoxfiGbylOGtKSjvSUpRzlqUBFKlGZKlSlGtWpQU1qBXrryfVpQEMa0ZjvaEJTSlKK0pShNW1oSzva04GOdKIzXehKN7rTI9DbR+5LP\/ozgIEMYjBDaE4LWtKKUYxmDGMZx3gmMJFJTGYKU5nG9EDvbHkOc5nHfBawkEUsZhjDGcFIVrKK1axhLetYzwY2sonv2cwWtrKN7exgJ7vYzR72so\/9HOAgS1nGclZwnBOc5IfAz\/HpccbsLD\/zC79yjvNc4CK\/8TuXuMwVrnKN69zgMEc4yjHucZ8H\/PGF3qdmf\/KM57zgL17yitf8zT\/8yxve8o73fOAjt7jNHe4S2n8IhyEsX4X6395IZpGJQlSiEZ0YxCQWsYlDXOIRnwQkJBGJ+Q8hCEkoUpKK1Hz9hd4MZhnJRGaykJVsZCcHOclFbvKQl3zkpwAFSUoykpOCb\/iW4pSg5H91l\/G8LOUoTwUqUonKVKEq1ahODWpSi9rUoS71KEwRilKM72hCU5rRnBa0pBWtaUNb2tGeDnSkE53pQle60Z0e9KQXvelDAxrSiMYMYjBDGMowhjOCkYwK\/O7HyeOZwEQmMZkpTGUa05nBTGYxm370ZwADWcgiFrOEpSxjOStYGehdK69jPRvYyCa+ZzNb2Mo2trODncxlHvNZwH4OcJBDHOYIRznG8UDvj\/JPnOI0ZzjLz4F15+ULXOQ3drOHvezjGte5wc3A3k+Pe4HZQ\/kRj3nCU\/7kWWDdS\/kVr\/mbS1zmCld5zwc+ftr3hf+hFTowCyeHJwIRiURkogTWxZBjEovY\/Ov8N7zlXeA9JvlCb0qzVKTma9KQlnSkJwMZyRTYm03OTg5yEpd4xCdBYG2hL\/R+Y\/YtxSlBSUpRmjKUpRzlA3sry1WoSjVyk4e85AusrS83+K9ZY8+\/owlNaUZzWtCSVrSmDW1pR3s60JFOdKYLNahJLWoHevvK\/ejPAAYyiMEMYSjDGM4IRjKK0YxhLOMYzwQmMonJdKM7PejJzP\/qnuP5XOYxnwUsZBGLWcJSlrGcFaxkFatZw1rWsZ4NbGQTU5nGdGawnR3sZBe72cNe9rGfAxzkEIc5wlGOcZwTnOQHfuQnTnGaM5xlM1vYyjYucJHf+J1LXOYKV7nGdW5wk1vc5g53ucd9HvAHD3nEY57wlD\/5hV85x3le8Zq\/+Yd\/ecNb3vGeD3z89HmE8ecoIQgZ5vPvRlj5K8IRnghEJBKReW7\/C\/7iJTHNYhGbOMQlHvFJQMLA+UnlZCQPzFPLX5OGtKQjPRnISFSiEZ0YZCcHOclFbvKQl3zkD5xfWC4SmAUfpbxemjKUpRyZyUJWslGFqlSjOjWoSS1qUyfQ0UBuSKP\/h+4WXmtJK1rThgpUpBKV6URnutCVbnSnBz3pFTi\/n9yfAQxkEIMDa4bLIxjJKEbTjvZ0oCMTmcRkpjCVaUxnBjOZxWzmMJd5zGcBC1kU6F0mL2cFK1nFWMYxnglsYCOb+J7NbGEr29jODnayi93sYS\/72M8BDnKIwxzhKMc4zgnWsJZ1rOc0ZzjLz\/zCr5zjPBe4yG\/8ziUuc4WrXOM6N7jJLW5zh7vc4z4\/8CM\/cYonPOVPnvGcF\/zFS17xmr\/5h395w1ve8Z4PfPz0uw7rfhOCkIQiNGH4w+sPecRjIppFIjJRiEo0ohODmMQiNnGISzzik4CEJCIxSUhKMpKTgpSk4ivCEZ4IpCcDGclEZrKQlWxkD\/u\/9ySPWV7ykZ8CFKQQhSlCUYrxDd\/yNWlISzrKUJZylKcCFalEZap8obemWS1qU4e61KM+DWhIIxrzHU0oQUlKUZpWtKYNbb\/Q0ekLs+5mPehJL3rTh770oz8DGMggBtOM5rSgZeDMMV\/omPiF2TSz6cxgJrOYzRzmMo\/5LGAhixjKMIYzInDm6i90bDDbyCa+ZzNb2Mo2trODnYG9e+V97OcAS1jKMpYH1p78Qu9pszOc5Wd+4VfOcZ4LXOS3wN4r8lWucZ1DHOYIRwNrH8h\/8JBHPOYJT\/mTZzznBX\/xkle85u\/AWW\/ld7znAze5xW3uEOord5swhOUrwhGeCEQkEpGJQlSiEZ0YxCQWsb\/6vDe+nICEJPr0Gv8hBCFJQUpSkZqvSUNa0pGeDGQkE5nJQlaykZ0c5CQXuclDXvKRnwIkISnJSE4xvuFbilOCkpSiNGUoSznKU4GKVKIyVahKNapTg5rUojZ1qEshClOEojTmO5rQlGY0pwUtaRX4\/X16tDfrQEc60ZkudKUb3elBT3rRm\/o0oCGNGMggBjOEoQxjOCMY+YXecWbjmcBEJjGZKUxlGtOZwUxm0Zd+9GcAC1jIIhazhKUsYzkrvtC71mwd69nARjbxPZvZwla2sZ0dzGEu85jPPvZzgIMc4jBHOMqxL\/T+aPYTpzjNGc7yM7\/wK+c4zwUusovd7GFv4Mwb8k1ucZs73OUe93nAHzzkEY95wlP+5BnPecFfvOQVr\/mdS1zmSqD346cczj0jBCEJRWjCEJavCEd4IhCRSEQmClGJRnRiEJNY\/OPsf3nD20BvYq8nISnJSE4KUpKK1HxNGtKSjvRkICOZyEwWspKN7OQgDnGJR\/xwn\/cWlAtRmCIUpRjf8C3FKUHJwL6ycjnKU4GKVKIyVahKLnKTh7zUpg51qUd9GtCQRjTmO5rQlGY0D\/S2ltvQlna0pwMd6URnqlODmtSiJ73oTR\/60o\/+DGAggxjMEIYyLNA7Sh7NGMYyjvFMYCKT6Eo3utODGcxkFrOZw1zmMZ8FLGQRi1nC0kDvSnkVq1nDWtaxng1sZApTmcZ0trGdHexkF7vZw172sZ8DHOQQhznCUY5xnBOc5Ad+5CdOcZozfM9mtrCV81zgIr\/xe+BnuSpf4zo3uMktbnOHu9zjPg\/4g4c84jFPeMrP\/MKvnOMlr3jN3\/wT6H0nv+cDHz+9Ft79JgQhCUVowhCWrwhHeCIQkUg8s\/c5L\/iLGGYxiUVs4oT\/vDdBICeRk5KM5KQgJalIzdekIS3pSE8GohCVaEQnG9nJQU5yBXryBXIhuTBFKEoxvuFbilOCkpSiNGUoSyYyk4WsVKYKValG9UBP7UCuLzegIY1ozHc0oSnNaE4LWtKK1pSnAhWpREc60ZkudKUb3elBz0BvX7kf\/RnAQAYx+L\/WDfN8OCMYySja0o72dGACE5nEZKYwlWlMZ0agd448l3nMZwELA2uWystYzgpWMoaxjGM869nARjbxPZvZwla2sZ0d7GQXu9nDXvaxP9B7WD7CUY5xnNWsYS3rOMVpznCWn\/mFXznHeS5wkd\/4nUtc5gpXuRbovSXf5g53ucdJfuBHfuIxT3jKnzzjOS\/4i5e84jV\/8w\/\/8oa3vON9oPc\/EdxvQhKK0Dyw5g8e8iiwPrLXoxCVaEQnBjGJRWziEJd4xCcBCUlEYpKQlGQkJwUpCctXhCN8hM97M8qZyEwWspKN7OQgJ7nITR7yko\/8FKAghShMEYpSjG9IzdekIW2gt5xcngpUpBKVqUJVqlGdGtSkFrWpQ13qUZ8GNKQRjfmO4pSgJKUCvW3ktrSjPR3oSCc604WudKM7PehJL3oHzuovD2Agg2hKM5rTghGMZBSjGcNYxjGeCUxkEpOZwlSmMZ0ZzGRWoHeePJ8FLGQIQxnGcJazgpWsYjVrWMs61rOBjWziezazha1sYzs7Ar175L3sYz+LWcJSlnGUYxznBCf5gR\/5iVOc5gxn+Zlf+JVznOcCFwO9l+UrXOUaBznEYY5wh7vc4z4P+IOHPOJx4Lxn8nNe8BcvecVr\/uYf\/uUNb3nHe25wk1vcJmREd5vQhCEsXxGO8ESI+HlvFDkq0YhODGISi9jEIS7xiE8CEvLx0\/v39\/8QguSkICWpSM3XpCEt6QK9meTMZCEr2chODnKSi9zkIS\/5yE9ikpCUZBSlGN\/wLcUpQUlKUTrQW16uQEUqUZkqVKUa1alBTWpRmzoUpBCFKUIjGvMdTWhKM5rTgpa0ojVtaEs72gfeT2e5C13pRnd60JNe1KM+DWjIAAYyiMEMYSjDGM4IRjKK0YxhLOMCvZPkyUxhKtOYzgxm0oe+9KM\/81nAQhaxmCUsZRnLWcFKVrGaNawN9G6UN\/E9m9nCVraxndnMYS7z2Ms+9nOAgxziMEc4yjGOc4KT\/MCPgd4z8ll+5hd+5RznucBOdrGbPVzhKte4zg1ucovb3OEu97jPA\/7gIY94zBOe8ifPeM4L\/uIlr\/iN37nEZd7yjvd84OOnnyOSe0YIQhKK0IQhLF8RjvBEICKRiEwUohKN6MQgJn879x\/+5Q3xzRKQkEQkJglJSUZyUpCSVKTma9KQlnSkJwMZyURmspCVbGQnNnGISzzyko\/8FKAghShMEYpG+vxzLC6XoCSlKE0ZylKO8lSgIpWoTBVykovc5KEWtalD3UDHp0ejwKyp3IzmtKAlrWhNG9rSjvZ0oCOdqEZ1alCTHvSkF72\/0DsgMBsiD2UYwxnBSEYxmjGMZRzjmcBEutCVbnQPnDnrC73zA7PF8hKWsozlrGAlq1jNGtayjvVsYDJTmMq0wJk75J3\/Ndvj+V72sZ8DHOQQhznCUY5xnBOc5Ad+5CdOcZpNfM9mtgR6L8q\/8TuXuMwVrnKN69zgJre4zR3uco\/7POAPHvKIxzzhLD\/zC78Gel\/Lf\/MP\/\/KGt7zjPR\/4+GlPZPebEIQkFKEJQ1i+IhzhiUBE\/rTvGc95QXSzGMQkFrGJQ1ziEZ8EJCQRiUlCUpKRnBSRP3\/\/X8tpSEs60hOZKEQlGlnJRnZykJNc5CYPeclHfgpQkEIUpghFKRboLSGXpBSlKUNGMpGZLFSiMlWoSjWqU4Oa1KI2dahLPerTgIY0onGgt5ncnBa0pBXlKE8FKtKBjnSiM13oSje604Oe9KI3fehLP\/ozgIGB3qHyMIYzgpG0oS3taM94JjCRSUxmClOZxnRmMJNZzGYOc5nHfBawkEUsZglLWcZyVjCaMYxlHOtYzwY2Bt73p8dWs21sZwc72cVu9rCXfeznAAc5xGGOcJRjrGI1a1jLT5ziNGe+0HvO7DwXuMhv\/M4lLnOFq1zjOje4yS1uc4e7nOAkP\/Ajj3jME55+ofcvs5e84jV\/809g3Tv5PR\/4+Om1KO43IQhJKO6bP+APHhLeLAIRiRTlf3ujm8UgJrGITZzAugRyQhKRmCQkJRnJSUEYwvIV4UhLOtKTgYxkIjNZyEo2spODnOQK9OaT81OAghSiMEUoSjFSkZqvSUMpSlOGspSjPBWoSCUqU4WqVKN6oLe2XIe61KM+DWhIIxrzLcUpQUla0JJWtKYNbWlHezrQkU50pgtdA7095V70pg996Ud\/BjCQJjSlGc0ZzghGMorRjGEs4xjPBCYyiclMYSrTmM4MZjKL2cxhLvOYzwIGM4ShDGMZy1nBSlaxmjWsZR3r2cBGNvE9m9nCVraxnR3sZBe72cNe9rGIxSxhKUc4yjGOc4KT\/MCP\/MQpTnOGs\/zML\/zKOc5zgYv8xu9c4jJXuMoBDnKIw9zmDne5x30e8AcPecRjnvCUP3nGc17wFy95xWv+5h\/+5Q1vecd1bnCTW4SI6m4TitCEISxfEY7wUf\/3Tkcxi0o0ohODmMQiNnGISzzik4APuj7yf57\/h2QkJwUpSUVqviYNab\/Qm8ksM1nISjayk4Oc5CI3echLPhKRmCQkpQhFKcY3fEtxSlCSUl\/oLW9WgYpUojJVqEo1qlODmtSiNgUoSCEK05BGNOY7mtCUZjSnxRd625q1oz0d6EgnOtOFrnSjOz3oSV3qUZ8G9GcAAxnE4EDPcHkEIxnFaMYwlnGMZwITmcRkpjCVaUxnBr3pQ1\/6MY\/5LGAhiwK9y+TlrGAlq1jNGtayjvVsYCOb+J7NbGEr25jFbOYwlz3sZR\/7ORDoPSIf5RjHOcHJwJpT8mnOcJaf+YVfOcd5drCTXezmMle4yjWuB868Ld\/hLve4z4PAmsfyk8DsufyCv3jJRX7jdy7xhre84z0f+PjpjGjuGSEISShCE4aw0T7viCBHDMyiytGITgxeO\/Nv\/uFf4pnFJwEJSURikpCUZCQnBSlJRepARzo5fWCWWc5CVrIRi9jEIS55yEs+8lOAghSiMEUoSjG+4VuKU4KSlKI0ZQK9FeSKVKIyOchJLnJTk1rUpg51qUd9GtCQRjTmO5rQlGY0pwUtaUVr2tCWdrSnAx2pSjWqU4Pu9KAnvehNH\/rSj\/4MYCCDGMwQhjKM4YxgJKMYzRjGMo7xTKAzXehKN6YxnRnMZBazmcNc5jGfBSxkEYtZwlKWsZwVrGQVq1nDWtaxnklMZgpT2cJWtrGdHexkF7vZw172sZ8DHOQQhznCUY5xnBOc5Ad+5CdOsZFNfM\/mwHfhgnwxMLssX+Eq17jOjcCaO\/Jd7nGfB\/zBQx7xmDOc5Wd+Cex\/Jb8OzN7Ib3nHez7wMbAmZHT3m9CEISxfEY7wROCpPX\/yjOeB\/TG9Hiv657N4cnwSkJBEJA6sSS6nICWpSM3XpCEt6YhEZKIQNbA\/u5wjMMsj5yUf+SlAwcCaonIxvuFbilOCkpSiNBnISCYyB\/ZXkasGZjXlWtSmDnWpF1jTSG7MdzShKc1oTgtaUpZylKcC7elARzrRmS50pRvd6UFPetGbPvSlH\/0ZwEAGMZghDGUYwxlBa9rQlnaMYzwTmMgkJjOFqUxjOjOYySxmM4e5zGM+C1jIIhazhKUsYzmjGM0YxrKWdaxnAxvZxPdsZgtb2cZ2drCTXexmD3vZx34OcJBDHOYIR1nJKlazhh\/5iVOc5gxn+Zlf+JVznOcCF\/mN37nEZa5wlWtc5wY3ucVt7nCcE5zkBx7yiMc84Sl\/8oznvIj++Xfotfw3\/\/Avb3jLO97zgY+f9sTw5zchCMk9s\/s84A\/CmYUnAhGJRGSiEJVoMT7vjSXHJg5xiUd8EpCQRCQmCUlJRnJCE4awfEUa0pKO9GQgI5nITJZAbw45J7nITR7yko\/8FKAghShMEYqSklSk5mtKUorSlKEs5ShPBSoGeqvK1ahODWpSi9rUoS71qE8DGtKIb\/iW4pSgOS1oSSta04a2tKN9oLez3CUw6yH3pBe96UNf+tGfAXxHE5rSjGEMZwQjGcVoxjCWcYxnAhOZxORA73R5BjOZxWzmMJd5zGcQgxnCUJayjOWsYCWrWM0a1rKO9WxgI5sCvVvlbWxnBzvZxW72sJeFLGIxSzjMEY5yjOP\/deYPnv\/IT5ziNGc4G+g9J5\/nAhf5jd+5xGWusJ8DHOQQt7jNHe5yL3DmQ\/kRj3nCU\/7kGc95wV+85BWv+Zt\/+Jc3vOUa17nBTf4T090mJKEIHfPz3nByeCIQkUhEJgpRiUZ0YhCTWMQmDnGJR3ze6\/rAx08\/l5yUZCQnRaDz0yONWVrSkZ4MZCQTmclCVrKRnRzkJBe5yUNeEpKIxCShMEUoSjG+CXSXlEtRmjKUpRzlqUBFKlGZKlSlGtWpQU1qkZ8CFKQQDWhIIxrzHU1oSjOa04KWtKI1bWhLO9rTgY50ojNd6Eo3utODOtSlHvXpR38GMJBBDGYIQxnGcEYwklGMZgxjGcd4JjCRSUxmClOZxnR60Zs+9GUu85jPAhayiMUsYSnLWM4KVrKK1axhLetYzwY2sonv2cwWtjKTWcxmDrvZw172sZ8DHOQQhwOf93H5RGD2k3yK05zhLD\/zC79yju3sYCe7uMRlrnCVa1znBje5Fei4J98PzB7Jj3nCU\/7kGc95wV9c4CK\/8Tv\/8oa3vOM9H\/j46exY7neszztCy2ECs\/ByBCISichEISrRiM4r573mb\/4hrlk84pOAhCQiMUlIGuhIKacKzNLK6UhPBjKSicxkISsxiUVs4pCbPOQlH\/kpQEEKUZgiFKUY3\/AtxSlBSUpRmjKUpRzlqUBFKpGdHOQkFzWoSS1qU4e61KM+DWhIIxrzHU1oSjOa04KWtKI1bWhLO9rTgSpUpRrV6UZ3etCTXvSmD33pR38GMJBBDGYIQxnGcEYwklGMZgxjGcd4OtGZLnRlKtOYzgxmMovZzGEu85jPAhayiMUsYSnLWM4KVrKK1axhLeuYyCQmM4XNbGEr29jODnayi93sYS\/72M8BDnKIwxzhKMc4zglO8gM\/8hMb2Mgmvo\/1+ffyvHwhMLskXw7Mrss3uMktbnOHu9zjPg\/4g4c84jRnOMvPgfNeyq8Cs3\/lN4HZB\/njp1ls95sQhCQUoQlDWL4iHOF5Yv1T\/uRZ4LwYXo8Z+\/NZXDleYJZITkwSkpKM5KQgJalIzdekIS0RiURkogTOyyZnD8xyy3kCswJyQQpRmCIUpRjf8C3FKUFJSpGeDGQkExWoSCUqU4WqVKM6NahJLWpTh7rUoz4NaEgjGvMdTWhKM5rTgjKUpRzlaUd7OtCRTnSmC13pRnd60JNe9KYPfelHfwYwkEEMZghDGcZwWtGaNrRlLOMYzwQmMonJTGEq05jODGYyi9nMYS7zmM8CFrKIxSxhKcsYyShGM4Y1rGUd69nARjbxPZvZwla2sZ0d7GQXu9nDXvaxnwMc5BCHOcIKVrKK1bE\/\/76ckk9zhrP8zC\/8yjnOc4GLgX2X5Stc5RrXucFNbnGbYxznBCcD+x\/LT3jKnzzjOS\/4i5e84nVg3xv5Le94zwc+floTx\/0mBHfle9znQWB\/BK9HJBKRiUJUohGdGMQkVpzP98WT45OAhCQiMUlISjJCEZowhA3sTyenJwMZyURmspCVbGQnR2BfHjkv+chPAQpSiMIUIQUpSUVqSlCSUpSmDGUpR3kqUJFKVKYKValGdWpQk1rUpg51qUd9GtCQYnzDtxSnGc1pQUta0Zo2tKUd7elARzrRmS50pRvd6UFPetGbPvSlH\/1pzHc0oSlDGcZwRjCSUYxmDGMZx3gmMJFJTGYKU5kW+L3Pkmczh7nMYyCDGMwQlrCUZSxnBStZxWrWsJZ1rGcDG9nE92xmS6B3h7yTXexmDwtYyCIWc4jDHOEoxzjOCU7yAz\/yE6c4zZlAz6+BfFH+jd+5xGX2sZ8DHOQmt7jNHe5yj\/s84A8e8ojHPOFpoOdFIL+W\/+Yf\/uUNV7nGdW58Wh\/X3SYEIQlFaMIQlq8IR3giEJFIcT\/viSZHJwYxiUVs4hCXeLzT9Z4PfCSJWVKSkZwUpCQVqfk60JFezhCYZZGzko3s5CAnuchNHhKQkEQkphCFKUJRivEN31KcEoGOMnJZylGeClSkEpWpQlWqUZ0a1CQf+SlAQerTgIY0ojHf0YSmNAv0tpJb04a2tKM9HehIJzrTha50ozu1qUNd6tGXfvRnAAMZxGCGMDTQO1IexWjGMJZxjGcCE5nEZKYwlWn0pBe96cMc5jKP+SxgIYtYzBKWsozlrGAlq1jNGtayjvVsYCOb+J7NbGEGM5nFbHaxmz3sZR\/7OcBBDnGYIxzlGMc5wUl+4Ed+4hSnOcNZfuYXfmUb29nBTn7nEpe5wlWucZ0b3OQWt7nDXe5xnwf8wUMe8ZgnPOVPnvGcF5znAhf5jX\/4lze85R3v+cDHT59tPPebEIQkFKEJQ1i+IhzhiUBEIhGZKEQlGi+d9YrX\/E0cs7jEIz4JSEgiEpOEpCQjOSlISSpS8zVpSEs60pOBjGQiM1mIQUxiEZtc5CYPeclHfgpQkEIUpghFKcY3fEtxSlCSUpSmDGUpR3kqUJFsZCcHOalODWpSi9rUoS71qE8DGtKIxnxHE5rSjOa0oCWtaE0b2tKO9lSmClWpFu\/zu9lD7hmY9ZX70Z8BDGRQYM0weTgjGMkoRjOGsYyjI53oTJfA\/unyjMBsjjyXecxnAQsDa5bKy1jOClayitWsYS0TmMgkJgf2b5W3BWa75N3sYS\/72B9Yc1g+wlGOcZwTnOQHfmQ9G9jIpsD+c\/L5wOx3+RKXucJVrgXW3JJvc4e73OM+D\/iDh5ziNGc4yzOe84K\/eMkrXvM3\/\/Avb3jLO97zgY+f+uO734QgJKEITRjC8hXheGztE57yJ1HMohKN6MSI\/\/nPEkeOSzzik4CEJCIxSUhKMpKTgpSkIjVfk4YIRCQSkclEZrKQlWyB3lxybvKQl3zkpwAFKURhilCUYnzDtxSnBCVJR3oykDHQUUmuHJhVl2tQk1rUpg51qUd9GtCQRjTmO5rQlGY0pzRlKEu5QEcHuWNg1lXuRnd60JNe9KYPfelHfwYwkEEMZghDGUZLWtGaNoGO8fIEJjKJyUxhKtOYzgxmBvbNlecxnwUsZBGLWcJSRjCSUYwO7F8nr2cDG9nE92xmC1vZxvbAvt3yHvayj\/0c4CCHOMxyVrCSVZzkB37kJ05xmjOc5Wd+4VfOcZ4Lgd5L8mWucJVrXOcGN7nFUY5xnBM84A8e8ojHPOEpf\/KM57zgL17yKtD7r\/yGt7zjPR\/4+GldAvebO57f5R73CWv2FeEITwQiEonIRCEq0YhODGISi9jEIS7xiE8CEpKIxCQhKSEJRWjCkJqvSUNa0pGeDGQkE5nJQlaykZ0c5CQXuclDXvKRnwIUpBCFSU4KUpKK4pSgJKUoTRnKUo7yVKAilahMFapSjerUoCa1qE0d6lKP+jSgKMX4hm9pSjOa04KWtKI1bWhLO9rTgY50ojNd6Eo3utODnvSiN33oSz8a0ZjvaMIQhjKM4YxgJKMYzRjGMo7xTGBigs+\/V1PlaUxnBjOZxWzmMJcBDGQQg1nMEpayjOWsYCWrWM0a1rKO9WwI9G6Wt7CVbWxnBzvZxW7ms4CFLOIghzjMEY5yjOOc4GSg45R8OjD7Rf6Vc5znAhf5jd+5xF72sZ8D3OAmt7jNHe5yj\/s8CHQ8lp8EZs\/lF\/zFS17xmr\/5h3+5wlWucZ2Pn85I6G4TgpAJ\/\/\/nhfE8bMLPOyLIEQOzqHI0ohODmMQiNnGIy1s973jPBxKbJSEpyUgeODN1IKeT05OBjGQiM1nISjayk4Oc5CI38UlAQhJRkEIUpghFAz3F5RKUpBSlKUNZylGeClSkEpWpQlWqUZ0a5CUf+SlAPerTgIaBzk+PpmbNaE4LWtKK1rShLe1oTwc60onOdKEr3ahFbepQlz70pR\/9GfBf3YM9H8JQhjGcEYxkFKMZw1jGMZ4JTGQSk5nCVHrQk170ZjZzmMs85rOAhSxiMUtYyjKWs4KVrGI1a1jLOtazgY1s4ns2M50ZzGQWO9nFbvawl33s5wAHOcRhjnCUYxznBCf5gR\/5iVOc5gxn+Zlf2Mo2trOD3\/idS1zmCle5xnVucJNb3OYOd7nHfR7wBw95xGOe8JQ\/ecZzznGeC1zkb\/7hX97wlne85wMfP33eidxvQhCSUIQmDGH5inCEJwIRiURkohCVv5zzkle8JrZZHOISj\/gkICGJSJzo8+93cjlFYPa1nIa0pCM9GchIJjITnRjEJBY5yUVu8pCXfOSnAAUDHUXlYoFZCbkkpShNGcpSjvJUICvZyE4OqlGdGtSkFrWpQ13qBToayY0Ds2Zyc1rQkla0pg1taUclKlOFqnShK93oTg960ove9Al0DJAHBmZD5WEMZwQjGcVoxjCWDnSkE52ZzBSmMo3pzGAms5jNHOYyj\/ksYCGLWMwSlrKM5axgJatYzRrGM4GJTGIT37OZLWxlG9vZwU52sZs97GUf+znAQQ5xmCMc5RjHOcFJfmAd69nARs7yM7\/wK+c4zwUu8hu\/c4nLXOEq17jODW5yi9vc4S73uM8D\/uAnTnGaM\/zJM57zgr94ySte8zf\/8C9veMs73vOBj58+68TuNyEISShCE4awfMUj6x7zhKdENotCVKIRnRjEJBaxiUNc4hGfBCQkEYlJQlKSkZwUpCQVqfma8EQgIpHISCYyk4WsiT\/\/ruaUc5GbPOQlH\/kpQEEKUZgiFKUY3\/AtxSlBWtKRngyUozwVqEilQG81uTo1qEktalOHutSjPg1oSCMa8x1NaEozSlGaMpSlDW1pR3s6BHq7BHIPuSe96E0f+tKP\/gxgIIMYzBCG0oKWtKI1oxnDWMYxPtAzOZCnyzOYySxmM4e5zGM+C1jIIhazhOGMYCSjWMVq1rCWdaxnAxvZFOjdKm9jOzvYyS52s4e97GM\/BzjIIZaxnBWs5AQn+YEf+YlTnOYMZwO95+Tzgdnv8iUuc4WrXOM6N7jJEY5yjOPc5wF\/8JBHPOYJT\/mTZzznBX\/xMtD7j\/wvb3jLO97zgY+f1ibxzxR\/v8Nd7hHGLCxfEY7wRCAikYhMFKISjejESPJ5bxw5LvGITwISkojEJCEEIQlFaFKRmq9JQ1rSkZ4MZCQTmclCVrIFenMFcj45PwUoSCGSkZwUpORbilOCkpSiNGUoSznKU4GKVKIyVahKNaoHemvLdahLPepThKIU4xua0JRmNKcFLWlFa9rQlna0pwMd6URnutA10NtT7kVv+tCXhjSiMd8xmCEMZRjDGcFIRjGaMYxlHOOZwEQmMZkpTP2v7hmez2QWs5lDfwYwkEEsYjFLWMoylrOClaxiNWtYyzrWs4GNbOJ7NrOFrWxjOzvYyS7mMZ8FLOQABznEYY5wlGMc5wQn+YEf+YlTgd\/rz\/Iv\/Mo5znOBi\/zG7+xhL\/vYz3VucJNb3OYOd7nHfR7wBw95xONA7zP5OS\/4i5e84jV\/8w+XucJVrvGBj5\/OSerPbkIQklCEJgxh+YpwhCdC0s97o8hRiUZ0YhCTWMQmDm90vOUd70lklpgkJCUZyUlBSlKRmq9JQ1rSBXozyZnJQlaykZ0c5CQX8YhPAhJSgIIUojBFAmd+KxenBCUpRWnKUJZylKcCFalEZapQlWpUJw95yUd+6lKP+jSgYaC3idyUZjSnBS1pRWva0JZ2tKcDHelEZ7rQlZrUojZ16E0f+tKP\/oHewfIQhjKM4YxgJKMYzRjGMo7xTGAik5jMFLrTg570YhazmcNc5gV6F8mLWcJSlrGcFaxkFatZw1rWsZ4NbGQT3zON6cxgJjvYyS52syfQe0A+yCEOc4SjHOM4JzjJD\/zIT5ziNGc4y89sYSvb2M5FfuN3LnGZK1zlGte5wU1ucZs73OUe93nAHzzkEY95wlP+5Bm\/co7zXAj8bP\/Kb3jLO97zgY+f1iVzvwlBSEIRmjCE5SvCEZ4IRCQSkYnCC2f8xUteBXrjej0e8UlAQhKRmCQkJRnJSUFKUpGar0lDWtKRngxkJBPRiE4MYib7vDe3nIe85CM\/BShIIQpThKIU4xu+pTglKEkpSlOGspSjPFnISjayB3pryDWpRW3qUJd61KcBDWlEY76jCU1pRnNa0JJWtKYNbalIJSpThc50oSvd6B54L73lPvSlH\/0ZwEAGMZghDGUYwxnBSEYxmjG0pwMd6cQkJjOFqUwL9M6SZzOHucxjfmDNYnkJS1nGclawklWsZhzjmcBENrKJ79nMlsCZO+Sd7GI3e9gbWHNQPsRhjnCUYxznBCdZyzrWs4EznOVnfuHXwJkX5d\/4nUtc5kpgzQ35Jre4zR3uco\/7POBHfuIUp3nKnzzjOS\/4i5e84jV\/8w\/\/8oa3gd6Pn3Jy95sQhCQUoQlDWB5a84jHPCGSWWSiEJVoRCcGMYlFbOIQl3jET\/55b+JATi6nICWpSE04whOBiGQgI5nITBayko3s5CAnuchNHvKSj\/wUoGCgt6hcjG\/4luKkIS3pSE9ZylGeClSkEpWpQlWqUZ0a1KQWtalDXeoFehvJjfmOJjSlJKUoTRla04a2tKM9HehIJzrTha50ozs96EkvetMn0DtAHsggBjOE5rSgJa0YxWjGMJZxjGcCE5nEZKYwlWlMD\/TMlucwl3nMZwELWcRihjGcEYxkJatYzRrWso71bGBjoGOLvDUw2ynvYjd72Ms+9nOAgyxlGctZwXFOcJIf+JGfOMVpzgQ6fpXPBWa\/yb9zictc4SrXuM4NDnOEoxzjHvd5wB885BGPecLTQMcL+a\/A7G\/5H\/7lDW95x3s+8JFb3OYOdwmdwt0mLF8RjvBEICKRUnzeEU2OTgxiEovYxCEu8YhPAhKSiMT8hxCEJBQpSUVqviYNaUlHejIEerPIWclGdnKQk1zkJg95yUd+ClCQpCQjOSn4hm8pTglKUorSlKEs5ShPBSpSicpUoSrVqE4NalKL2tShLvUoTBGKUozvaEJTmtGcFrSkFa1pQ1va0Z4OdKQTnelCV7rRnR70pBe96UMDGtKIxgxiMEMYyjCGM4KRjGI0YxjLOMYzgYlMYjJTmMo0pjODmcxiNv3ozwAGsvC\/Pr8lni9lGctZwUpWsZo1rGUd69nARjYFvgNb5W1sZwc7mcs85rMgsP6QfJgjHOUYxznBSX7gR37iFKc5w9nAOefk81zgIr+xmz3sZV9g\/U35Fre5w13uBdY8lB\/xmCc85c\/Amr\/kl7ziNX9zictc4Wpg\/f+ldM8IQUhCETrl50vCyeGJQEQiETmwJrocg5jEIjb\/6nrDW94FepN4PSnJSE4KUgbOTCOnJR3pyUBGMpGZLGQlG9nJQU7iEo\/4JCA\/BShIIQpThKIU45tAb0m5FKUpQ1nKUZ4KVKQSlalCVaqRmzzkJR91qEs96tOAhjSiMd\/RhKY0ozktaEkrWtOGtrSjPR3oSCc604Ua1KQWtelFb\/rQl370ZwADGcRghjCUYQxnBCMZxWjGMJZxjGcCE5nEZLrRnR70ZCazmM0c5jKP+SxgIYtYzBKWsozlrGAlq1jNGtayjvVsYCObmMo0pjOD7exgJ7vYzR72so\/9HOAghzjMEY5yjOOc4CQ\/8CM\/cYrTnOEsm9nCVrZxgYv8xu9c4jJXuMo1rnODm9ziNne4yz3u84A\/eMgjHvOEp\/zJL\/zKOc7zitf8zT8pP\/\/uvpPf84GPn15L5X4TgpCEIjRhCMtXhCM8EYhIJCLz3P4X\/MVLYprFIjZxUn3em0BOSCISk4SkJCM5KUhJKlLzNWlISzrSk4GMRCUa0YlBdnKQk1yB3nxyfgpQkEIUpkhg3bdycUpQklKUpgxlKUdmspCVbFShKtWoHjivtlyHutSjPg1oGFjXRG5KM5rTgpa0ojVtqEBFKlGZTnSmC13pRnd60JNe9KYPfelH\/0DvYHkIQxnGcEYwklGMph3t6UBHJjKJyUxhKtOYzgxmMovZzGEu8wK9i+TFLGEpy1jOClayirGMYzwT2MBGNvE9m9nCVraxnR3sZBe72cNe9rGfAxzkEIc58v+rmK6igyAAKIAq4KQbRspGjRjd3d1dAhvd3YISgw1GNyrhUelUUEKQQ3d3CiOku8vrx\/157++d89jNHvayjxWsZBWrOcJRjnGcE5zkFKc5w1nOcZ4LXOQSl7nCVf7hGteJ4QY3ucVtDnCQQxzmAQ95xGOe8JRnPOcFL3nFa97wlne85wMf+fT\/9tn9m1jEJg5fEMAd\/V3ucZ+EskQkJglJSUZyUpCSVKQmkDSkJR3pyUBGviITQQSTmSxkJRtxiUd8EpCbUPKQl3zkpwAFKURhilCUYhSnBCUpRWnKUJZylKcCFalEZULIQU5yUZNa1KYOdalHfRrQkEY0pglNaUZzWtCSVnxNa9rQljDCaUd7qlKN6tSgK93oTg960ove9KEv\/ejPAAYyiMEMYSjD+IbhjOBbvmMkoxhNRzrRmS5EMZ4JRDORSUxmClOZxnRmMJNZzGYOc5nH9\/zAj8xnAQtZxE9EMJZxRLKEpSxjOStYySpWs4a1rOM3fmc9G\/iDP9nIJjazhb\/Yyjb+Zjs\/8wu\/spg97GUf+znAQQ5xmCMc5RjHOcFJTnGaM5zlHOe5wEUucZkrXGUHO9nFbm5yi9v8yx3uco\/7POAhj3jME57yjOe84CWveM0b3vKO93zgI9e4Tgw3iBPi2wTwJXGJR3wSkJBEJCYJSUlGclKQklSkJpA0pCUd6clARj7jc2IRmyxkJRvZCSEHOclFbkLJQ17ykZ8CFKQQhSlCUYpRnBKUpBSlyUQQwWSmIpWoTBWqUo3q1KAmtahNHepSj\/o0oCGNaEwTmtKM5rSgJa0oSznKU4Fw2tGeDnSkE53pQle60Z0e9KQXvelDX\/rRnwEMZBCDGcJQhtGaNrQljJGMYjRjiGAs44gkivFMIJqJTGIyU5jKNKYzg5nMYjZzmMs8\/gMQtU6u", "encoding":"base64", "height":326, "name":"Background", "opacity":1, "type":"tilelayer", "visible":true, "width":30, "x":0, "y":0 }, { "compression":"zlib", "data":"eJzt0UlOVQEQQNH3P73sfy9IK4pI51ilk05QcayIDVwWQDRhek5yZ5WqQQ0DADxuYTQMz2uxlmq5Vmq11upFrdfLelUb9bo2601t1Xbt1G7t1dvRv+++a+Z9faj9OqjDOqrj+lgndVpndV4X9aku66o+15f6Wtf17T\/ufm\/mR93Uz7qtX\/W7\/tTfunvYMx6GUY1roiZrqqZrpmZrrp7V\/PjJbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjuAY9jLnI=", "encoding":"base64", "height":326, "name":"Finish", "opacity":1, "type":"tilelayer", "visible":true, "width":30, "x":0, "y":0 }, { "compression":"zlib", "data":"eJztlwl0Duceh8ceQTZZScgqsVWVCKWWJPau9msLoaU7LVqCInRBF7Ul0dbW3hbdxL7cFu1tCUUWEdpa20u4BBFraZ8cc4+5vcnk+77M\/Ou48zvnOe+bed\/398x8mZycT1H+O2FQB8IhQpFLLLSHDtBR0DsEhsLj8ISgdwokwlSYZse5d2AWvGvGTenkC\/gSVgp7d8Me2CvsPQNnIc+gvrJlFKUclIcKZQwqtSFBuIIhBEIFvW1xtYNoiBH0xuEaBIMhXtBrxYoVc9K\/rKIMgIEQV1bOm4BrPEyAiYLeFFwL4D1430TvGrrXwjrVsYFxI2yCzSZ6s+jeB9mCn2lh8vFdhAJhr0c5RakOnuVkvbbkfu6pJbQSvre\/4esL\/YS9L+MbC+OEvfPxJUHyHfgO2JOd3P8u+AF2Cz7LKVyn4d9wRtBbubyiOEMVqFpezhuBqy7Ug\/qC3o64OkFn6CLovZMyneeeATOFn38ZvuWwQti7Hd8OSCvBm8F6JmQ5cH\/HOHMcfoFf1fMnGE9Cbgl951m\/APkOeMtU4Ls3lIPyFW5dq8hYCZwq6J91Y90dPErYVxh\/9gRALXVvIGMQBEOIDee1acT+e6GxDedasqcVPKDubcPYFtpBtJ3eh9n\/CDxqw7m+7OkH\/TV745gPstNpb8bSPw4STPYUlWScKX+B10rJKVeRv2+oABUrmuMIoLcW1Nb0BzMPgVAIM8nbit4HoLWmvx3zaIiBWGgPHaAjdDLoPvrR0x8GaPoGMR8M8TAEhsLj8AQMM8g7jp4EGK\/Tl8jaVJgGr5r0uReVJbiWwofwkaB3K65t8A18K+i1Uvo0raQokdAMoirJebvj6gE9oZdJ3mfpfQ6ehxGq4wXGF2EUjDbI+zo9b8B0tW8m45vwFrytXpvF+C7MhjkGeT+m5xNYpvatYPwUPoPP7XRsZP8m2GzDue\/Y8z1sV\/emMe6EXfCDnd4D7D8IP9pw7lf2\/AtOGPD5XaHjKlwTfOcL4+OkKL7g5yTrvVvyFJ\/b0\/AMPCv4Gb6BazrMgJmC3k9wLYPlsELQ+z2u7bAD0gzy\/kzPITgs\/O7\/hu8G3BT21qzMd28IqCzrvR9fS2hlp7cT+ztDF+H7HYZvODwp7H0V32vwurD3I3x\/h4+FvWbkIM\/wI\/wk\/CxX8V2D68JeX2f+d0MN51s\/+zMGQC1nc71R9DeHFqqnJWMreMBkby\/6e0Mf1dOXsR\/0N9n754zFNw4SSvAmsj7VwHtLoisZUnQ6F7O2BJYKfyZb8G2FbcLew\/iOwFFh7018vxc6q9i2vwr7qkI1G\/cblXr46kMDYW9nfF2gq7B3OL4n4SkDvAl0jIcJws+Qgm8BvCfs3YBvI2wS9ubgOwAHDfKeoecs5Ak\/R9Wq\/H2DS1VZb318DaChsLcLvq7woLC3uDzPfYyAkcL38xa+t+EdYe9n+D6HL4S9u\/D9ALvvkN+7FccSXU1RYiC2mnmO\/nQPgIEQp3oGM8bDEBO9CXSPhwkwUfVMYpwMUwz0zqNrPiSpnSmMC+A9eF+9tpBxESw20LuGrrWwTu3cwLgRNsFmEz\/XLLr3QbaJjqKSj+8iFAh7jUqoi6KEQR0XWW8MvlhoL+yNxzcEhgp7J+ObAonC3tJmJfebCqtgteC978WVDhmQKejNw3UOzsMFHe9V1q7BdYPuzcVVUVzBDdxdi9\/ny5of1NDZY0ai8DWHFsLeXvh6Qx9h72h8Y+AlYa+VuydV3PjuDdXAxU3OWw9XfWgADQW9nXF1ga7woKB3OK4n4Sl42kRvIt1TYZrgsxVmCb6l8KGwdyu+bfCNjjeNtZ2wy8B7O0LXUTim05nL2ik4rdlzlnkenDPxc3JyV5TK4Ox++1o15i7g6l78udImnO4IqKtxNGDeEO4x0VtUuuJ7EB4S9lq585LJO5AF+zTvQg7zA3BQ5\/04ytoxOO7gO3SBc\/lwUXP+MvMrcFWv00NRykBZD8e87pzzgOqa897MfcBXp7M2a4EQ5KD3Xs41hvs05yOZN4Monc7WrLWBtg56H+Hco\/CY5nwP5j2hl07nANYGQpyDXitW8nl3LkKB8DvkUZ2\/b\/CsLuttjO8+aCLsfRTfY9BN2Ps8vhEwUuMdxXw0jBG+l9n45sBcYW8qvlWw2kDvdrp2lNCXznoGZBroPUHXScgV\/gwreipKJXDylHOG4gqDOhAu6C1MLL720EHYa+Wvybf8nv8J32l+3zuYp8FOE9+B43T\/Ar9qHCeZ58IpE71lvRSlHJT3un2tEnMnqOxV\/LnSJojuYAjROOowD4cIE71WrNibDN7HTMhS38tsxv2QAwfUaz8y\/gQ\/wyGD3t\/z9FyAfLWvgPESXIYr6rVrjNfhN7hhkNfNm+\/e4OF962dPRi\/wBh\/1mh9jDagJ\/t7GeBvRcy80VvuaMDaFSGimXmvO2ALuh5YGea3c3UnjPdkJu+x8X3LYfwAOOvie5XLuFJy28\/xl9l+Bqw56nXz43w3OPvad82a\/D\/jaee4\/CedcBNS183wk+5tBlINeK45lHp\/3fEiCZMHPfg2utbAO1pvo3Ut3OmSojizGfZAN+0305tF9Ds6rjnzGi1AAl0z0uvgqiiu4+d762YOxOniCl68xjgh66kI9TV9D5vdAI4McRaUj3Z2gs4mOovIEvmEwXNg7Dd+r8Jqw14oVK\/oZ5acoo2GM3+1rY5mPgwS\/4s9NYS0Rpurs0ctszs2BuZrzScyTIUWnczFrS2Cpg95Uzq2C1Zrz65ivhw06nVtY2wrbHPSmcy4DMjXns5nvhxydzsOsHYGjDnrvpHjW4H83eNeQ9TbB1xQiTfQ+RPfD8IjG0Y15d+hhovcZup+F5zSOkcxfgBdN9M6geya8aacjmf0psMDBe1vOuRXwqZ3n17N\/A2wUfvf248uBA8LeS\/guwxVhr5W7O7NqKsq7MLumrPdLfCsh1URvGt07YZfGsYf5Xkg30ZtL9yk4rXGcZZ4H5wz0lvdXlAr+t392Yl4ZnDXXqjF3AVf\/\/z3vSILpCYFQCFM7wxkjoK5BjqLSju5oiIFYEz1\/ziBcgyEehgh6CzMJ32Rhp5X\/v9QOUJRACAq4fS2UeRjUCSj+XGnTmu420FbjiGEeC+1N9A6geyDEaRzxzIfAUBO94+meABM1jsnMp0CiiV4rVozIfbX47g1Na8l6H8PXDboLe0fgGwkvqN5RjKNhjMn38Tb978As1TObcQ7MFX7+VHyrYLWwNx1fBmRqvNnM90OO8L0U4LsEl4W9nrUVxQu8a8t6m+BrCpGqN4qxObQQuI\/uGkcv5r2hj\/Dzj8Y3Bl4S9hZmLs55f4FXIrt5rj2wV\/j5zuA7C3nC3qqBfPcGl0BZb318DaChgd52dEVDjIGdtmQQvsEQL+x9Bd8kmCzs\/QDfQlgk7P0Hvq\/ga2GvRC4F8r8brgTKer2C+N8NPkGy3qb4IqGZsLc7vh7QU9hbVF7iHl6GscL3Mg\/ffEjS8S5kbREsNvDe1tC1FtbpdH7F2tewxUBvFl37IFun82fWDsFh4d\/Fb\/huwE1hb81gRfGHgOBbP9dmDISgYNn7aI2vDbQV9g7ANxDihL3j8U2AiSZ759OfBMkmelbSnQqrNI61zNfBehO9e+lOhwyNYx\/zbNhvojeP7nNwXuO4yLwALpnodQlRFFdwCzHPUVQa4rsHGgl7rRiTxfzelpTyd5fK+VWw2saer9m3BbaW0pvO+QzItLHnEPsOwxGd\/SdYOwm5OnvOsXYeLtjovcG+m\/C7zv6KoYpSCZxCi9\/jypobuOvs0caffQFQS2d\/GGt1INzGTqMSi689dBD2WrFS2lzlnb0G14XfXd8wRfGDGmGy3ih8zaFFCd52rEdDjEH314ue3tCnhL5BrA+GeOHP5RV8k2CysPcDfAthkbDXihUrVqxYsWJ7\/gDSn25K", "encoding":"base64", "height":326, "name":"Cars", "opacity":1, "type":"tilelayer", "visible":true, "width":30, "x":0, "y":0 }, { "compression":"zlib", "data":"eJzt3UXU0FW3wOH3EwETRLobVMIALEoEDMAiVFJJKQMwSJFSygCDUklJlTAIlVJSJQzAoiQNwCBU4j5Ozx2fcwf322s9C5js3+Rd8OdM9sYcGRmb2MwXxJr2F2dkdOABOnJI6zBH+C1id7DWEJ7mGS4kG9m56OJ43al2T+MNplOeClTk8ojdlXZ\/zCesoj4NuI3bI3Z32b2bH9lDZ7rQlQcjdjNyZmT8h7PIxDCt4YxgZMRuUa1iFKcEM7VmMZs5Ebs1tGpyA7VYo7WWdayP2G2p1Yr7uJ99Wvs5wMGI3b5a\/XiS\/mQmC1k5J2e87gS7X+U1XqcUpSlD2YjdJXZ\/wId8RG3qUJebIna\/sftbvuN72tCWdrSP2D1h91\/8zT8MYCCDGByxmzdXRkY+8lOASVqTmcLUiN2rta7hWq5jmdZyVrAyYreJ1t3cw71s19rBTnZF7D6q9RiP8wSntE5z5t9mrnjdF+1+iZd5hUIUpghFI3YX2P0O7\/IeValGdWpE7G62+wu+5Cua0ZwWtIzYPWL3b\/zOH\/SiN33oG7GbPbfvN3JwMWO1xjGeCRG7FbUu5wquZKHWIhazJGL3Nq3buYM72aK1lW18E7HbVetBHuJhjmod4zgnInZHaI3kWZ4jF7nJQ97c8bqz7Z7Dm7xFJSpThasjdtfZvZ5P+YyGNKIxTSJ2D9h9kJ\/4mW50pwePRuxmzeP7jXM5jxe0RjGaFyN2y2iV5RIuZa7WPOazIGK3rtZN3MwtbNDayCY2R+y202pPBx7gV61DHOZIxO4grcEM4Wku4EKykT1PvO4Uu6cyjTcoR3kqUDFid4XdK\/mYT6hHfRpwW8TuTrt3sZsf6URnutA1YvfMv7vz+r83ZzHUn4cxnBERu0W0ilKM4szQmsksZkfsVteqQU1uYLXWGtayLmK3hVZLWnEfe7X2sZ8DEbt9tPrSjyc5m8xkIWveeN3xdk\/gVV6jJKUoTZmI3cV2L+EDPuRGalOHuhG72+z+hm\/5jta0oS3tInaP232Cv\/ibpxjAQAZF7ObJ568N8pGfiVqTmMyUiN0qWldzDdeyVGsZy1kRsdtYqwl3cw8\/aG1nBzsjdntoPcpjPM5JrVOc5kzE7mitF3mJlylIIQpTJF+87ny7F\/AO73I9ValG9YjdTXZv5gu+pCnNaE6LiN3Ddh\/hN36nJ73oTZ+I3Wz5fb9xETkYozWWcYyP2K2gVZHLuYL3tRayiMURuw20buN27uBrrS1sZVvEbhetrjzIQ\/ypdZRjHI\/YHa41gpE8S05ykZs8+eN1Z9k9mzm8yVVUojJVInbX2r2O9XzKXTSkEY0jdvfbfYCD\/MQjdKM7PSJ2sxTw\/cY5nMvzWi8witERu6W1ylCWS3hbay7zmB+xW0erLjdxM59rbWAjmyJ222q1oz0d+EXrVw5xOGJ3oNYgBjOE87mAC8lWIF53st1TmMo0LqMc5akQsbvc7hWs5GNupR71aRCxu8PunexiNx3pRGe6ROyetvvMv\/sL+r83z\/j9UIYxPGK3sFYRilKM6VozmMmsiN1qWtWpQU1Waa1mDWsjdptrtaAlrdijtZd97I\/Y7a3Vh770IxNnk5ksBeN1x9k9ngm8SglKUorSEbuL7F7MEj6gFjdSmzoRu1vt3sY3fMv9tKYNbSN2j9l9nBP8RX+eYgADI3ZzF\/L9Rl7y8brWRCYxOWK3slYVruYaPtJayjKWR+w20mpME+7me60f2M6OiN3uWj14lMf4R+skpzgdsTtKazQv8hIFKEghCheK151n93wW8A7XcT1VqRaxu9HuTWzmC+6lKc1oHrF7yO7DHOE3nqAnvegdsXthYd9vZOciXtEaw1jGReyW16pARS7nPa33WciiiN36Wg24jdv5SutrtrA1YrezVhe68iB\/aP3JUY5F7A7TGs4IRnIxOclF7sLxujPtnsVs5nAlV1GJyhG7a+xeyzrWcyd30ZBGEbv77N7PAQ7yMI\/Qje4Ru5mL+H4jK+fwnNbzvMCoiN1SWqUpQ1ne0nqbucyL2K2tVYe63MRnWp+zgY0Ru2202tKO9vys9Qu\/cihid4DWQAYxmPM4nwu4sEi87iS7JzOFqVzKZZSjfMTuMruXs4KV3MKt1KN+xO52u3ewk108QEc60Tli95Tdpznzb6NoRsbTfn2GoQyL2C2kVZgiFOUNrenMYGbEblWtalSnBp9orWI1ayJ2m2k1pwUt+VFrD3vZF7HbS6s3fejLWWTibDIXjdcda\/c4xjOB4pSgJKUidhfavYjFLOEGanEjtSN2t9i9lW18w33cT2vaROwetfsYxznBk\/TnKQZE7OYq5vuNPOTlNa3XmcikiN1KWpWpwtV8qPURS1kWsdtQqxGNacJ3Wt\/zA9sjdrtpdacHj\/K31j+c5FTE7gtaoxjNi+SnAAUpVCxed67d85jPAq7lOq6nasTuBrs3sonN3MO9NKVZxO6vdh\/iMEd4nCfoSa+I3QuK+34jG9l5WesVxjA2YrecVnkqUJF3td7jfRZG7NbTqk8DbuNLra\/4mi0Ru520OtOFrvyu9Qd\/cjRid6jWMIYzghxcTE5yFY\/XnWH3TGYxmyu4kquoFLG72u41rGUdd3And9EwYnev3fvYzwEe4mEeoVvE7tklfL+Rhaw8q\/Ucz\/NCxG5JrVKUpgxvar3F28yN2L1RqzZ1qMunWp\/xORsidltrtaEt7fhJ62d+4deI3ae0BjCQQZzLeZzPBSXidSfaPYnJTOESLuUyykXsLrV7GctZwc3cwq3Ui9j9we7t7GAnHXiAjnSK2D1p9ylOc4YhPM0zDI3YLVjS9xuFKcI0rTeYzoyI3eu1qlKN6nys9QmrWB2x21SrGc1pwW6tH9nD3ojdnlq96E0f\/sNZZOLskvG6Y+weyzjGU4zilKBkxO77di9kEYupyQ3U4saI3a\/t3sJWttGK+7if1hG7f9p9lGMcpx9P0p+nInZzlvL9Rm7y8KrWa7zOxIjdq7QqUZkqfKD1IR+xNGL3Lq2GNKIx32p9x\/f8ELH7iFY3utODv7T+5h9ORuw+r\/UCoxhNPvJTgIKl4nXftnsu85jPNVzLdVwfsfu53RvYyCbu5h7upWnE7i92\/8ohDvMYj\/MEPSN2zy\/t+40LycZLWi\/zCmMidi\/TKkd5KvCO1ru8x\/sRu7dq1aM+DfhC60u+4uuI3Y5anehMF37T+p0\/+DNi9xmtoQxjOBeRg4vJWTped7rdM5jJLC7nCq7kqojdVXavZg1ruZ07uJO7Inb32L2XfeznQR7iYR6J2M1UxvcbmcnCSK1neY7nI3ZLaJWkFKWZo\/Umb\/F2xG4trRupTR3Wa33KZ3wesXu\/Vmva0JaDWj\/xM79E7PbXeooBDOQczuU8zi8Tr\/u63ROZxGTKcgmXclnE7kd2L2UZy7mJm7mFWyN2v7f7B7azg\/Z04AE6Ruz+Y\/dJTnGawQzhaZ6J2C1Q1vcbhSjMVK1pvMH0iN3rtK6nKtVYqfUxn7AqYvderaY0ozm7tHbzI3sidp\/Q6kkvepPBfziLTGXjdV+xewxjGUdRilGcEhG74dTQqskN1ErYbanVivu4P2G3r1Y\/nqR\/wm6qn6tw\/vtzlWb+r36uUr17h5Pq3TucVO\/e4aR69w4n1bt3OKnevcNJ9e4dTqp373BSvXuHk+rdO5xU797hpHr3DifVu3c4qd69w0n17h1OqnfvcFK9e4eT6t07nFTv3uGkevcOJ9W7dzip3r3DSfXuHU6qd+9wUr17h5Pq3TucVO\/e4aR69w4n1bt3OKnevcNJ9e4dTqp373BSvXuHk+rdO5xU797hpHr3DifVu3c4qd69w0n17v2\/5r\/vk0nm\/9v75PBsGRkjGMmz2dJ1Z2nNZg5vJuyu1VrHej5N2N2vdYCD\/JSwmyV7RkZWzuHc7Om6pbXKUJZLEnbraNXlJm5O2G2r1Y72dEjYHag1iMEMSdidrDWFqUxL2F2utYKVfJywu0NrJ7vYnbB7WuvMv72L\/Pt\/UbpuYa0iFKVYwm41rerUoGbCbnOtFrSkVcJub60+9KVfwu44rfFM4NWE3UVai1nCBwm7W7W28Q3fJuwe0zrOCf5K2M2dIyMjD3nJF\/FuaTiVtapwNdck7DbSakwT7k7Y7a7Vg0d5LGF3lNZoXuSlhN15WvNZwDsJuxsT3f8NJ9X933BS3f8NJ9X933BS3f8NJ9n932BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933BS3f8NJ9X933D+B6JRuJs=", "encoding":"base64", "height":326, "name":"Grass", "opacity":1, "type":"tilelayer", "visible":true, "width":30, "x":0, "y":0 }], "nextobjectid":1, "orientation":"orthogonal", "renderorder":"right-down", "tileheight":50, "tilesets":[ { "columns":31, "firstgid":1, "image":"..\/..\/..\/..\/Users\/Merel\/Desktop\/road.png", "imageheight":17008, "imagewidth":1000, "margin":2, "name":"road", "spacing":2, "tilecount":10137, "tileheight":50, "tilewidth":30 }], "tilewidth":30, "version":1, "width":30 }
-
He guys, I am trying to do following: var frameNames = Phaser.Animation.generateFrameNames(this.getColorById(this.gemId) + '_zap_explode_', 1, 13, '.png', 2); this.gem.animations.add('zapExplode', frameNames, this.fps, false); if the gem is from the same atlas, the other animations are playing correctly, but this one throws Uncaught TypeError: Cannot read property 'index' of undefined. Any ideas?
-
Hi. I have a problem with multiple levels (game states). What can I do when, I don't want to write the same piece of code in each level over and over? I've tried to create a function in separate js file which e.g. will set player sprite, gravity, animations or will create necessary variables etc. And I failed this. Everything what I have got are errors.
-
Hello guys, I would like to make a debugger such one of these: -http://www.paulallenrenton.com/individual-projects/webgl-deferred-renderer -http://codeflow.org/entries/2012/aug/25/webgl-deferred-irradiance-volumes/#debugging I am trying to use multiple rendering target with this webgl extension => (https://www.khronos.org/registry/webgl/extensions/WEBGL_draw_buffers/), so when I am rendering my scene I would like in my fragment shader to write something like this: #extension GL_EXT_draw_buffers : require precision highp float; uniform sampler2D positionSampler; uniform sampler2D normalSampler; uniform sampler2D depthSampler; uniform sampler2D stuffSampler; varying vec2 vUV2; void main(void) { gl_FragData[0] = texture2D(positionSampler, vUV2); gl_FragData[1] = texture2D(normalSampler, vUV2); gl_FragData[2] = texture2D(depthSampler, vUV2); gl_FragData[3] = texture2D(stuffSampler, vUV2); } with each gl_FragData writing in a webgl texture associated. I didn't find a lots resources about it on the internet... I am working with babylon.js, any example or help would be great. Thanks !
- 19 replies
-
- webgl_draw_buffers
- multiple
-
(and 2 more)
Tagged with:
-
I'm building web-pages which contain multiple iframes of Babylon.js sites. At most I've had 6 iframes on the same page with 3D content. (this one http://www.aarontyler.com.au/blog/strayashrapnel) I'm doing this because I want to sprinkle 3D elements throughout the website and it can't be done with one canvas. Is there any problem that this could cause? If so, is there a better way to do this? I previously had an issue with multiple audio engines being created but that was fixed by using the core js file without the audio engine.
-
Hi, I'm currently working on a tile base RPG game using Phaser. function create(): controls = { up: game.input.keyboard.addKey(Phaser.Keyboard.Z), (...), shift: game.input.keyboard.addKey(Phaser.Keyboard.SHIFT) }; } If I press Z, my character needs to move and if I press SHIFT + Z, my character has to rotate towards the Z direction. function update() : if (controls.shift.isDown) { if (controls.up.isDown){ rotateCharacter(); } } else { if (controls.up.isDown){ moveCharacter(); } } Right now, when try to rotate my character using SHIFT + Z, it triggers the rotation AND the movement. If I press Z alone, the character moves as expected. I've tried checking if my SHIFT key was up but it didn't change anything. How can I achieve that? Thanks, in advance.
-
Hi there, I'm having a bit of a problem with camera controls and multiple scenes, I'm developping a web solution with multiple scenes (allowing me to lower memory and ressources usage and "removing" the dynamic light limit ). The only issue I'm having is that when switching from a scene to an other and locking the controls of the "old" scene with "old_scene.detachControl(renderCanvas, false);" the camera controls are still applied to the camera in the "old_scene". So, when I click and drag on the renderCanvas in a scene, the cameras in all scenes are rotating, even if the controls are supposed to be detached. I guess it's related to the way BabylonJS handles eventListeners... Any suggestion ? I can't really make a demo to show the issue for now, but I hope I was clear enough...
-
I have a problem: I can't figure out how to move a sprite with multiple keys pressed at once. A little more explanation: Button W moves the sprite Up Button S moves the sprite Down When pressed separately, it works just fine. The problems begin when I try to press several buttons at once. Problems: 1. Player presses W, and then S. What happens: W is ignored, S is processed. Sprite moves down. What is supposed to happen: Both W and S are processed. Sprite remains stationary (because both "UP" and "DOWN" buttons are pressed at once). 2. Player presses W, and then S, and then releases W. What happens: After the button is released, all the movement stops. What is supposed to happen: After W is released, sprite should move down as long as S is still held down. I tried to solve this using my own keypress handlers, but end up with either "infinite speedup while pressed" or the problem described above. I managed to do in with Python and Python - to - Javascript converter (basically a JS library that converts Python code into JS), but can't figure out how to do this using Phaser. Any help will be appreciated. The code I currently have (complicated): keyUP = this.input.keyboard.addKey(Phaser.Keyboard.W); keyUP.onDown.add(function() { this.movePlayer("left", "up", "pressed") }, this); keyUP.onUp.add(function() { this.movePlayer("left", "up", "released") }, this); keyDN = this.input.keyboard.addKey(Phaser.Keyboard.S); keyDN.onDown.add(function() { this.movePlayer("left", "down", "pressed") }, this); keyDN.onUp.add(function() { this.movePlayer("left", "down", "released") }, this);and movePlayer: function(player, direction, state) { var speedX = 0; var speedY = 0; if(player == "left") { if(direction == "up") { if(state == "pressed") { speedY = -175; } else if(state == "released") { //speedY -= -175; } } else if(direction == "down") { if(state == "pressed") { speedY = 175; } else if(state == "released") { //speedY -= 175; } } } else if(player == "right") { var addLater; } //this.playerLeft.body.velocity.y += -175; this.playerLeft.body.velocity.y = speedY; //console.log("total x:",speedX,"y:",speedY); }But it works absolutely the same as explained in tutorials - when W is pressed, set velocity to a fixed value, when W is released, set velocity to zero. I tried directly adding positive and negative values to velocity when a corresponding to key is pressed, but this leads to acceleration of the sprite (it goes faster and faster). And when I release the key, the sprite keeps moving in opposite direction (console.log made me realize there were more keyUp events than keyDown events, which is weird). What I'm trying to do: When W is pressed, increase velocity ONCE by a fixed value. When W is released, decrease velocity ONCE by same fixed value, thus stopping sprite. When both W and S are pressed, the total speed of sprite is 0 (because both add velocity in opposite directions but of same value). When one key is released and the other stays pressed, sprite is moving in that respective direction. And I can't figure out how to make this happen. I am using "onDown" because it was recommended here: http://www.html5gamedevs.com/topic/3803-question-about-keys-pressed-vs-isdown/ as the "happens once" solution. This post: http://www.html5gamedevs.com/topic/1922-justpressed-only-once/#entry35563 Makes me thing I'm making a horrible mistake here by using "movePlayer: function" instead of "function movePlayer(param){}" syntax somewhere else... but I haven't been able to figure out where the function goes. Outside of state curly brackets, maybe? When I add console.log to this function, it gets executed first 30+ times per second while button is pressed for a short period, and then thousands of times per second... does this mean that using "add" I keep adding more and more and more functions to be executed every time I press a button, leading to thousands of functions executed instead of one? If so, how do I solve this? I'm new to programming on Phaser, so any help is much appreciated. Trying to figure out how stuff works. My old code: if(this.keyboard.isDown(Phaser.Keyboard.W)) { this.playerLeft.body.velocity.y += -175; } else if(this.keyboard.isDown(Phaser.Keyboard.S)) { this.playerLeft.body.velocity.y += 175; } else { this.playerLeft.body.velocity.y = 0; }This leads to acceleration, not constant speed, and old problem with simultaneous presses remains. Using equals instead of incrementing fixes acceleration, but doesn't fix my main problem with simultaneous presses.
-
I am currently working on a space game (my first game ever with Pixi) and I am sure there is a good chance this has been clarified before. However I am unable to understand some of the replies to other posts without wording this to my specific situation. I have an array that is storing the locations of space "lasers" (Dr Evil reference intended). I want to draw these laser beams as they move across the screen. With rapid fire enabled there might be around 20 lots of beams shooting around the screen at once. What is the best way to go about this.. I have 3 unfinished guess: 1) Create a sprite for each and when they fade off, destroy the sprite somehow 2) Create 40 or so instances of these lasers and only reposition the 20 that are actually currently on the screen 3) Create another array that stores a new sprite for each laser. As the lasers fade off, delete that array entry specifically Any advice/help would be much appreciated.
-
I want two arcade physics bodies to single sprite, one is for horizontal collision and one is for vertical. can we do this? Advance thank you.
-
Hi there! I'm having an issue with trying to figure out best practices with creating multiple sprites on a screen. I've been using this blog post as a reference for how to structure my game into classes: http://toastedware.com/?p=258 and so far it's been great. I like how neat it leaves my code. However, I've been trying to create multiple instances of a class and whenever a new instance appears, the previous one loses all of its properties and just drops into the ether. Any advice on how to move forward? I've tried creating a group, but I'm not sure how to pass the class into it. For reference, here is my game so far: https://github.com/JLevstein/tigertail/tree/master/js
-
Hi all, I have a group and want to reuse it in multiple states because the content inside this group will be the same, but currently it won't work in the second state, the group content is existed in this second state but it just never show up. Here is my codes: I have two variables in my main.js as below: (function (DaoMai) { var width = 640, height = width/(16/9); DaoMai.sceneBg; DaoMai.timeLeft = 60; DaoMai.countDownTimer = null; DaoMai.gameTime = 60; DaoMai.totalItem = 10; // all Tet items, including incorrect items DaoMai.selectedTree = null; DaoMai.mobileWidth = 0; DaoMai.mobileHeight = 0; DaoMai.gameRatio = 16/9; DaoMai.items = []; DaoMai.effectWrongItem; DaoMai.countDownTimer = null; DaoMai.timerInterval = null; DaoMai.bloomingTree; DaoMai.finalTree; DaoMai.finalTreeGroup; DaoMai.chosenTree = null; // 0 is cay Dao, 1 is cay Mai DaoMai.correctItem = 0; DaoMai.checkIcon; // the check icon at state choose tree DaoMai.checkIconTween; DaoMai.game = new Phaser.Game(width, height, Phaser.CANVAS, 'game'); DaoMai.game.state.add('Boot', DaoMai.Boot, true); DaoMai.game.state.add('Preloader', DaoMai.Preloader); DaoMai.game.state.add('MainMenu', DaoMai.MainMenu); DaoMai.game.state.add('StateChooseTree', DaoMai.StateChooseTree); DaoMai.game.state.add('StateTreeBlooming', DaoMai.StateTreeBlooming); DaoMai.game.state.add('StateMain', DaoMai.StateMain); // Now start the Boot state. DaoMai.game.state.start('Boot');}(window.DaoMai = window.DaoMai || {}));Then I create a group and a sprite in my state_tree_blooming.js. DaoMai.finalTreeGroup = this.game.add.group();DaoMai.finalTree = DaoMai.finalTreeGroup.create(0, 0, 'cayDaoBlooming');And then I want to re-use this group in another state, in this case state_I just want to re-locate this group in main.js as below: DaoMai.finalTreeGroup.x = 285;DaoMai.finalTreeGroup.y = 5;And nothing shows up. So I don't know whether a group can be used in multiple state or not, any help would be greatly appreciate. Thanks, Jody