spriteMap.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648
  1. var createScene = function () {
  2. var scene = new BABYLON.Scene(engine);
  3. // Create camera and light
  4. var light = new BABYLON.PointLight("Point", new BABYLON.Vector3(5, 10, 5), scene);
  5. var camera = new BABYLON.FreeCamera("Camera", new BABYLON.Vector3(0, 0, -30), scene);
  6. // Attach the Controls to the canvas
  7. camera.attachControl(canvas, true);
  8. // Load the JSON file, for simplicity in this demonstration it is included inline.
  9. let atlasJSON = getJSONFile();
  10. // Load the SpriteSheet Associated with the JSON Atlas.
  11. let spriteSheet = new BABYLON.Texture('./textures/spriteMap/none_trimmed/Legends_Level_A.png', scene,
  12. false, //NoMipMaps
  13. false, //InvertY usuaslly false if exported from TexturePacker
  14. 0, //Sampling Mode
  15. null, //Onload, you could spin up the sprite map in a function nested here
  16. null, //OnError
  17. null, //CustomBuffer
  18. false, //DeleteBuffer
  19. 5 //ImageFormageType RGBA
  20. );
  21. spriteSheet.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
  22. spriteSheet.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE; //Or Wrap, its up to you...
  23. let backgroundSize = new BABYLON.Vector2(200,60);
  24. let background = new BABYLON.SpriteMap('background', atlasJSON, spriteSheet,
  25. {
  26. stageSize: backgroundSize,
  27. maxAnimationFrames:8,
  28. baseTile : 42,
  29. layerCount: 2,
  30. flipU: true, //Sometimes you gotta flip the depending on the sprite format.
  31. colorMultiply : new BABYLON.Vector3(0.3,0.3,0.3)
  32. },
  33. scene);
  34. //Set all the available tiles to the top left corner of the background for Visual debugging, and refrence.
  35. for(var i = 0; i<background.spriteCount; i++){
  36. background.changeTiles(0, new BABYLON.Vector2(i+1, backgroundSize.y-1), i)
  37. }
  38. //TILE, FRAME, NEXT TILE, Timing, Speed
  39. //See documentation for Animation Map Information. - TODO
  40. let eighth = 1/8
  41. let speed = 0.5
  42. background.addAnimationToTile(1, 0, 2, eighth*1, speed)
  43. background.addAnimationToTile(1, 1, 3, eighth*2, speed)
  44. background.addAnimationToTile(1, 2, 4, eighth*3, speed)
  45. background.addAnimationToTile(1, 3, 5, eighth*4, speed)
  46. background.addAnimationToTile(1, 4, 6, eighth*5, speed)
  47. background.addAnimationToTile(1, 5, 7, eighth*6, speed)
  48. background.addAnimationToTile(1, 6, 8, eighth*7, speed)
  49. background.addAnimationToTile(1, 7, 1, 1 , speed)
  50. background.addAnimationToTile(25, 0, 26, eighth*1, speed)
  51. background.addAnimationToTile(25, 1, 27, eighth*2, speed)
  52. background.addAnimationToTile(25, 2, 28, eighth*3, speed)
  53. background.addAnimationToTile(25, 3, 29, eighth*4, speed)
  54. background.addAnimationToTile(25, 4, 30, eighth*5, speed)
  55. background.addAnimationToTile(25, 5, 31, eighth*6, speed)
  56. background.addAnimationToTile(25, 6, 29, eighth*7, speed)
  57. background.addAnimationToTile(25, 7, 25, 1 , speed)
  58. background.addAnimationToTile(48, 0, 49, 0.25, speed)
  59. background.addAnimationToTile(48, 1, 50, 0.5, speed)
  60. background.addAnimationToTile(48, 2, 51, 0.75, speed)
  61. background.addAnimationToTile(48, 4, 48, 1, speed)
  62. background.addAnimationToTile(49, 0, 50, 0.25, speed*0.5)
  63. background.addAnimationToTile(49, 1, 51, 0.5, speed*0.5)
  64. background.addAnimationToTile(49, 2, 48, 0.75, speed*0.5)
  65. background.addAnimationToTile(49, 4, 49, 1, speed*0.5)
  66. background.addAnimationToTile(50, 0, 51, 0.25, speed*0.3)
  67. background.addAnimationToTile(50, 1, 48, 0.5, speed*0.3)
  68. background.addAnimationToTile(50, 2, 49, 0.75, speed*0.3)
  69. background.addAnimationToTile(50, 4, 50, 1, speed*0.3)
  70. background.position.z = 5;
  71. //Procedurally Editing the Tiles
  72. //Adding Water to BG
  73. let tilePositions = []
  74. for(let x=15; x<backgroundSize.x-15; x++){
  75. for(let y=backgroundSize.y-26; y>0; y--){
  76. if(x%12 == 0){
  77. tilePositions.push(new BABYLON.Vector2(x, y))
  78. }
  79. }
  80. }
  81. background.changeTiles(1, tilePositions, 1)
  82. //Adding Sewer Drains to BG
  83. tilePositions = []
  84. for(let x=15; x<backgroundSize.x-15; x++){
  85. if(x%12 == 0){
  86. tilePositions.push(new BABYLON.Vector2(x, backgroundSize.y-26))
  87. }
  88. }
  89. background.changeTiles(1, tilePositions, 25)
  90. //More Water!
  91. tilePositions = []
  92. for(let x=15; x<backgroundSize.x-15; x++){
  93. for(let y=backgroundSize.y-12; y>0; y--){
  94. if((x+6)%12 == 0){
  95. tilePositions.push(new BABYLON.Vector2(x, y))
  96. }
  97. }
  98. }
  99. background.changeTiles(1, tilePositions, 1);
  100. tilePositions = [];
  101. //Random Array for placing variations of the torches animation.
  102. let pTiles = [48, 49, 50, 48, 49, 50, 48];
  103. //Making the Base of the level
  104. let levelSize = new BABYLON.Vector2(80,40);
  105. let levelBase = new BABYLON.SpriteMap('base', atlasJSON, spriteSheet,
  106. {
  107. stageSize: levelSize,
  108. maxAnimationFrames:8,
  109. baseTile : 42,
  110. layerCount: 2,
  111. flipU: true,
  112. colorMultiply : new BABYLON.Vector3(0.6,0.6,0.6)
  113. },
  114. scene);
  115. //Duplicating over the animation map from the background system.
  116. levelBase.animationMap = background.animationMap
  117. //Making a hole.
  118. tilePositions = []
  119. for(let x=15; x<levelSize.x-15; x++){
  120. for(let y=levelSize.y-15; y>15; y--){
  121. tilePositions.push(new BABYLON.Vector2(x, y))
  122. }
  123. }
  124. levelBase.changeTiles(0, tilePositions, 0)
  125. //Adding Columns
  126. tilePositions = []
  127. for(let x=15; x<levelSize.x-15; x++){
  128. for(let y=levelSize.y-16; y>16; y--){
  129. if(x%6 == 0){
  130. tilePositions.push(new BABYLON.Vector2(x, y))
  131. }
  132. }
  133. }
  134. levelBase.changeTiles(0, tilePositions, 23)
  135. //Adding Torches
  136. for(let x=15; x<levelSize.x-15; x++){
  137. if((x+6)%12 == 0){
  138. levelBase.changeTiles(1, new BABYLON.Vector2(x, 18),
  139. pTiles[Math.floor(Math.random()*pTiles.length)])
  140. }
  141. }
  142. //Adding Caps
  143. tilePositions = []
  144. for(let x=15; x<levelSize.x-15; x++){
  145. if(x%6 == 0){
  146. tilePositions.push(new BABYLON.Vector2(x, 16))
  147. }
  148. }
  149. levelBase.changeTiles(0, tilePositions, 24)
  150. //Adding Bases
  151. tilePositions = []
  152. for(let x=15; x<levelSize.x-15; x++){
  153. if(x%6 == 0){
  154. tilePositions.push(new BABYLON.Vector2(x, 25))
  155. }
  156. }
  157. levelBase.changeTiles(0, tilePositions, 22)
  158. //Now this last section was created like all the last two, except it was later exported from the browser and saved.
  159. //This shows how to load from the .tilemaps file
  160. //Additonally if you uncomment the editable argument and hit play
  161. //You will go into editor mode for that spritemap allowing you to paint tiles.
  162. // - and + to change tile number
  163. // [ and ] to change layer number
  164. //Make sure you right click on the canvas to get focus before trying to edit.
  165. //Left click to paint, right click to pan camera.
  166. levelStage = new BABYLON.SpriteMap('levelStage', atlasJSON, spriteSheet,
  167. {
  168. stageSize: levelSize,
  169. maxAnimationFrames:8,
  170. baseTile : 42,
  171. layerCount: 2,
  172. flipU: true,
  173. //editable : true
  174. },
  175. scene);
  176. levelStage.loadTileMaps('./textures/spriteMap/none_trimmed/levelStage.tilemaps')
  177. levelStage.animationMap = background.animationMap
  178. levelStage.position.z = -5
  179. //To download .tilemaps file for this SpriteMap uncomment the below line.
  180. //levelStage.saveTileMaps();
  181. return scene;
  182. }
  183. const getJSONFile = ()=>{
  184. return {"frames": [
  185. {
  186. "filename": "blank.png",
  187. "frame": {"x":221,"y":221,"w":1,"h":1},
  188. "rotated": false,
  189. "trimmed": false,
  190. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  191. "sourceSize": {"w":32,"h":32}
  192. },
  193. {
  194. "filename": "Falling-Water-0.png",
  195. "frame": {"x":1,"y":1,"w":32,"h":32},
  196. "rotated": false,
  197. "trimmed": false,
  198. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  199. "sourceSize": {"w":32,"h":32}
  200. },
  201. {
  202. "filename": "Falling-Water-1.png",
  203. "frame": {"x":1,"y":36,"w":32,"h":32},
  204. "rotated": false,
  205. "trimmed": false,
  206. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  207. "sourceSize": {"w":32,"h":32}
  208. },
  209. {
  210. "filename": "Falling-Water-2.png",
  211. "frame": {"x":1,"y":71,"w":32,"h":32},
  212. "rotated": false,
  213. "trimmed": false,
  214. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  215. "sourceSize": {"w":32,"h":32}
  216. },
  217. {
  218. "filename": "Falling-Water-3.png",
  219. "frame": {"x":1,"y":106,"w":32,"h":32},
  220. "rotated": false,
  221. "trimmed": false,
  222. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  223. "sourceSize": {"w":32,"h":32}
  224. },
  225. {
  226. "filename": "Falling-Water-4.png",
  227. "frame": {"x":1,"y":141,"w":32,"h":32},
  228. "rotated": false,
  229. "trimmed": false,
  230. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  231. "sourceSize": {"w":32,"h":32}
  232. },
  233. {
  234. "filename": "Falling-Water-5.png",
  235. "frame": {"x":1,"y":176,"w":32,"h":32},
  236. "rotated": false,
  237. "trimmed": false,
  238. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  239. "sourceSize": {"w":32,"h":32}
  240. },
  241. {
  242. "filename": "Falling-Water-6.png",
  243. "frame": {"x":1,"y":211,"w":32,"h":32},
  244. "rotated": false,
  245. "trimmed": false,
  246. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  247. "sourceSize": {"w":32,"h":32}
  248. },
  249. {
  250. "filename": "Falling-Water-7.png",
  251. "frame": {"x":1,"y":246,"w":32,"h":32},
  252. "rotated": false,
  253. "trimmed": false,
  254. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  255. "sourceSize": {"w":32,"h":32}
  256. },
  257. {
  258. "filename": "Large-Column-Light-0.png",
  259. "frame": {"x":36,"y":1,"w":32,"h":32},
  260. "rotated": false,
  261. "trimmed": false,
  262. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  263. "sourceSize": {"w":32,"h":32}
  264. },
  265. {
  266. "filename": "Large-Column-Light-1.png",
  267. "frame": {"x":71,"y":1,"w":32,"h":32},
  268. "rotated": false,
  269. "trimmed": false,
  270. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  271. "sourceSize": {"w":32,"h":32}
  272. },
  273. {
  274. "filename": "Large-Column-Light-2.png",
  275. "frame": {"x":106,"y":1,"w":32,"h":32},
  276. "rotated": false,
  277. "trimmed": false,
  278. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  279. "sourceSize": {"w":32,"h":32}
  280. },
  281. {
  282. "filename": "Large-Column-Light-3.png",
  283. "frame": {"x":141,"y":1,"w":32,"h":32},
  284. "rotated": false,
  285. "trimmed": false,
  286. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  287. "sourceSize": {"w":32,"h":32}
  288. },
  289. {
  290. "filename": "Large_Column-0.png",
  291. "frame": {"x":176,"y":1,"w":32,"h":32},
  292. "rotated": false,
  293. "trimmed": false,
  294. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  295. "sourceSize": {"w":32,"h":32}
  296. },
  297. {
  298. "filename": "Large_Column-1.png",
  299. "frame": {"x":211,"y":1,"w":32,"h":32},
  300. "rotated": false,
  301. "trimmed": false,
  302. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  303. "sourceSize": {"w":32,"h":32}
  304. },
  305. {
  306. "filename": "Large_Column-2.png",
  307. "frame": {"x":246,"y":1,"w":32,"h":32},
  308. "rotated": false,
  309. "trimmed": false,
  310. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  311. "sourceSize": {"w":32,"h":32}
  312. },
  313. {
  314. "filename": "Large_Column-3.png",
  315. "frame": {"x":36,"y":36,"w":32,"h":32},
  316. "rotated": false,
  317. "trimmed": false,
  318. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  319. "sourceSize": {"w":32,"h":32}
  320. },
  321. {
  322. "filename": "Roman-Column-0.png",
  323. "frame": {"x":36,"y":71,"w":32,"h":32},
  324. "rotated": false,
  325. "trimmed": false,
  326. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  327. "sourceSize": {"w":32,"h":32}
  328. },
  329. {
  330. "filename": "Roman-Column-1.png",
  331. "frame": {"x":36,"y":106,"w":32,"h":32},
  332. "rotated": false,
  333. "trimmed": false,
  334. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  335. "sourceSize": {"w":32,"h":32}
  336. },
  337. {
  338. "filename": "Roman-Column-2.png",
  339. "frame": {"x":36,"y":141,"w":32,"h":32},
  340. "rotated": false,
  341. "trimmed": false,
  342. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  343. "sourceSize": {"w":32,"h":32}
  344. },
  345. {
  346. "filename": "Roman-Column-3.png",
  347. "frame": {"x":36,"y":176,"w":32,"h":32},
  348. "rotated": false,
  349. "trimmed": false,
  350. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  351. "sourceSize": {"w":32,"h":32}
  352. },
  353. {
  354. "filename": "Roman_Column_Light-0.png",
  355. "frame": {"x":36,"y":211,"w":32,"h":32},
  356. "rotated": false,
  357. "trimmed": false,
  358. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  359. "sourceSize": {"w":32,"h":32}
  360. },
  361. {
  362. "filename": "Roman_Column_Light-1.png",
  363. "frame": {"x":36,"y":246,"w":32,"h":32},
  364. "rotated": false,
  365. "trimmed": false,
  366. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  367. "sourceSize": {"w":32,"h":32}
  368. },
  369. {
  370. "filename": "Roman_Column_Light-2.png",
  371. "frame": {"x":71,"y":36,"w":32,"h":32},
  372. "rotated": false,
  373. "trimmed": false,
  374. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  375. "sourceSize": {"w":32,"h":32}
  376. },
  377. {
  378. "filename": "Roman_Column_Light-3.png",
  379. "frame": {"x":106,"y":36,"w":32,"h":32},
  380. "rotated": false,
  381. "trimmed": false,
  382. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  383. "sourceSize": {"w":32,"h":32}
  384. },
  385. {
  386. "filename": "Sewer-Drain-0.png",
  387. "frame": {"x":141,"y":36,"w":32,"h":32},
  388. "rotated": false,
  389. "trimmed": false,
  390. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  391. "sourceSize": {"w":32,"h":32}
  392. },
  393. {
  394. "filename": "Sewer-Drain-1.png",
  395. "frame": {"x":176,"y":36,"w":32,"h":32},
  396. "rotated": false,
  397. "trimmed": false,
  398. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  399. "sourceSize": {"w":32,"h":32}
  400. },
  401. {
  402. "filename": "Sewer-Drain-2.png",
  403. "frame": {"x":211,"y":36,"w":32,"h":32},
  404. "rotated": false,
  405. "trimmed": false,
  406. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  407. "sourceSize": {"w":32,"h":32}
  408. },
  409. {
  410. "filename": "Sewer-Drain-3.png",
  411. "frame": {"x":246,"y":36,"w":32,"h":32},
  412. "rotated": false,
  413. "trimmed": false,
  414. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  415. "sourceSize": {"w":32,"h":32}
  416. },
  417. {
  418. "filename": "Sewer-Drain-4.png",
  419. "frame": {"x":71,"y":71,"w":32,"h":32},
  420. "rotated": false,
  421. "trimmed": false,
  422. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  423. "sourceSize": {"w":32,"h":32}
  424. },
  425. {
  426. "filename": "Sewer-Drain-5.png",
  427. "frame": {"x":71,"y":106,"w":32,"h":32},
  428. "rotated": false,
  429. "trimmed": false,
  430. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  431. "sourceSize": {"w":32,"h":32}
  432. },
  433. {
  434. "filename": "Sewer-Drain-6.png",
  435. "frame": {"x":71,"y":141,"w":32,"h":32},
  436. "rotated": false,
  437. "trimmed": false,
  438. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  439. "sourceSize": {"w":32,"h":32}
  440. },
  441. {
  442. "filename": "Sewer-Drain-7.png",
  443. "frame": {"x":71,"y":176,"w":32,"h":32},
  444. "rotated": false,
  445. "trimmed": false,
  446. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  447. "sourceSize": {"w":32,"h":32}
  448. },
  449. {
  450. "filename": "Stone-Platform-0.png",
  451. "frame": {"x":71,"y":211,"w":32,"h":32},
  452. "rotated": false,
  453. "trimmed": false,
  454. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  455. "sourceSize": {"w":32,"h":32}
  456. },
  457. {
  458. "filename": "Stone-Platform-1.png",
  459. "frame": {"x":71,"y":246,"w":32,"h":32},
  460. "rotated": false,
  461. "trimmed": false,
  462. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  463. "sourceSize": {"w":32,"h":32}
  464. },
  465. {
  466. "filename": "Stone-Platform-2.png",
  467. "frame": {"x":106,"y":106,"w":32,"h":32},
  468. "rotated": false,
  469. "trimmed": false,
  470. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  471. "sourceSize": {"w":32,"h":32}
  472. },
  473. {
  474. "filename": "Stone-Platform-3.png",
  475. "frame": {"x":106,"y":141,"w":32,"h":32},
  476. "rotated": false,
  477. "trimmed": false,
  478. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  479. "sourceSize": {"w":32,"h":32}
  480. },
  481. {
  482. "filename": "Stone-Platform-4.png",
  483. "frame": {"x":106,"y":176,"w":32,"h":32},
  484. "rotated": false,
  485. "trimmed": false,
  486. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  487. "sourceSize": {"w":32,"h":32}
  488. },
  489. {
  490. "filename": "Stone-Platform-5.png",
  491. "frame": {"x":106,"y":211,"w":32,"h":32},
  492. "rotated": false,
  493. "trimmed": false,
  494. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  495. "sourceSize": {"w":32,"h":32}
  496. },
  497. {
  498. "filename": "Stone-Platform-6.png",
  499. "frame": {"x":106,"y":246,"w":32,"h":32},
  500. "rotated": false,
  501. "trimmed": false,
  502. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  503. "sourceSize": {"w":32,"h":32}
  504. },
  505. {
  506. "filename": "Stone-Platform-7.png",
  507. "frame": {"x":141,"y":106,"w":32,"h":32},
  508. "rotated": false,
  509. "trimmed": false,
  510. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  511. "sourceSize": {"w":32,"h":32}
  512. },
  513. {
  514. "filename": "Stone-Platform-8.png",
  515. "frame": {"x":176,"y":106,"w":32,"h":32},
  516. "rotated": false,
  517. "trimmed": false,
  518. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  519. "sourceSize": {"w":32,"h":32}
  520. },
  521. {
  522. "filename": "Stone-Platform-9.png",
  523. "frame": {"x":211,"y":106,"w":32,"h":32},
  524. "rotated": false,
  525. "trimmed": false,
  526. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  527. "sourceSize": {"w":32,"h":32}
  528. },
  529. {
  530. "filename": "Stone-Platform-10.png",
  531. "frame": {"x":106,"y":71,"w":32,"h":32},
  532. "rotated": false,
  533. "trimmed": false,
  534. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  535. "sourceSize": {"w":32,"h":32}
  536. },
  537. {
  538. "filename": "Stone-Platform-11.png",
  539. "frame": {"x":141,"y":71,"w":32,"h":32},
  540. "rotated": false,
  541. "trimmed": false,
  542. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  543. "sourceSize": {"w":32,"h":32}
  544. },
  545. {
  546. "filename": "Stone-Platform-12.png",
  547. "frame": {"x":176,"y":71,"w":32,"h":32},
  548. "rotated": false,
  549. "trimmed": false,
  550. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  551. "sourceSize": {"w":32,"h":32}
  552. },
  553. {
  554. "filename": "Stone-Platform-13.png",
  555. "frame": {"x":211,"y":71,"w":32,"h":32},
  556. "rotated": false,
  557. "trimmed": false,
  558. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  559. "sourceSize": {"w":32,"h":32}
  560. },
  561. {
  562. "filename": "Stone-Platform-14.png",
  563. "frame": {"x":246,"y":71,"w":32,"h":32},
  564. "rotated": false,
  565. "trimmed": false,
  566. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  567. "sourceSize": {"w":32,"h":32}
  568. },
  569. {
  570. "filename": "Torch-A-0.png",
  571. "frame": {"x":246,"y":106,"w":32,"h":32},
  572. "rotated": false,
  573. "trimmed": false,
  574. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  575. "sourceSize": {"w":32,"h":32}
  576. },
  577. {
  578. "filename": "Torch-A-1.png",
  579. "frame": {"x":141,"y":141,"w":32,"h":32},
  580. "rotated": false,
  581. "trimmed": false,
  582. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  583. "sourceSize": {"w":32,"h":32}
  584. },
  585. {
  586. "filename": "Torch-A-2.png",
  587. "frame": {"x":141,"y":176,"w":32,"h":32},
  588. "rotated": false,
  589. "trimmed": false,
  590. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  591. "sourceSize": {"w":32,"h":32}
  592. },
  593. {
  594. "filename": "Torch-A-3.png",
  595. "frame": {"x":141,"y":211,"w":32,"h":32},
  596. "rotated": false,
  597. "trimmed": false,
  598. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  599. "sourceSize": {"w":32,"h":32}
  600. }],
  601. "meta": {
  602. "app": "https://www.codeandweb.com/texturepacker",
  603. "version": "1.0",
  604. "image": "Legends_Level_A.png",
  605. "format": "RGBA8888",
  606. "size": {"w":279,"h":279},
  607. "scale": "1",
  608. "smartupdate": "$TexturePacker:SmartUpdate:a755ec93daaec56d1c8bcd801e167677:2e759c84cbaf9134b80c1a34b50e5c9c:9f820b9412efc8199e0407f80b8c0011$"
  609. }
  610. }
  611. }