spriteMap.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639
  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 in-line.
  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 usually false if exported from TexturePacker
  14. BABYLON.Texture.NEAREST_NEAREST, //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. BABYLON.Engine.TEXTURETYPE_RGBA //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 reference.
  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.005
  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 =1 5; 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. levelStage = new BABYLON.SpriteMap('levelStage', atlasJSON, spriteSheet,
  161. {
  162. stageSize: levelSize,
  163. maxAnimationFrames:8,
  164. baseTile : 42,
  165. layerCount: 2,
  166. flipU: true
  167. },
  168. scene);
  169. levelStage.loadTileMaps('./textures/spriteMap/none_trimmed/levelStage.tilemaps')
  170. levelStage.animationMap = background.animationMap
  171. levelStage.position.z = -5
  172. //To download .tilemaps file for this SpriteMap uncomment the below line.
  173. //levelStage.saveTileMaps();
  174. return scene;
  175. }
  176. const getJSONFile = ()=>{
  177. return {"frames": [
  178. {
  179. "filename": "blank.png",
  180. "frame": {"x":221,"y":221,"w":1,"h":1},
  181. "rotated": false,
  182. "trimmed": false,
  183. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  184. "sourceSize": {"w":32,"h":32}
  185. },
  186. {
  187. "filename": "Falling-Water-0.png",
  188. "frame": {"x":1,"y":1,"w":32,"h":32},
  189. "rotated": false,
  190. "trimmed": false,
  191. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  192. "sourceSize": {"w":32,"h":32}
  193. },
  194. {
  195. "filename": "Falling-Water-1.png",
  196. "frame": {"x":1,"y":36,"w":32,"h":32},
  197. "rotated": false,
  198. "trimmed": false,
  199. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  200. "sourceSize": {"w":32,"h":32}
  201. },
  202. {
  203. "filename": "Falling-Water-2.png",
  204. "frame": {"x":1,"y":71,"w":32,"h":32},
  205. "rotated": false,
  206. "trimmed": false,
  207. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  208. "sourceSize": {"w":32,"h":32}
  209. },
  210. {
  211. "filename": "Falling-Water-3.png",
  212. "frame": {"x":1,"y":106,"w":32,"h":32},
  213. "rotated": false,
  214. "trimmed": false,
  215. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  216. "sourceSize": {"w":32,"h":32}
  217. },
  218. {
  219. "filename": "Falling-Water-4.png",
  220. "frame": {"x":1,"y":141,"w":32,"h":32},
  221. "rotated": false,
  222. "trimmed": false,
  223. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  224. "sourceSize": {"w":32,"h":32}
  225. },
  226. {
  227. "filename": "Falling-Water-5.png",
  228. "frame": {"x":1,"y":176,"w":32,"h":32},
  229. "rotated": false,
  230. "trimmed": false,
  231. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  232. "sourceSize": {"w":32,"h":32}
  233. },
  234. {
  235. "filename": "Falling-Water-6.png",
  236. "frame": {"x":1,"y":211,"w":32,"h":32},
  237. "rotated": false,
  238. "trimmed": false,
  239. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  240. "sourceSize": {"w":32,"h":32}
  241. },
  242. {
  243. "filename": "Falling-Water-7.png",
  244. "frame": {"x":1,"y":246,"w":32,"h":32},
  245. "rotated": false,
  246. "trimmed": false,
  247. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  248. "sourceSize": {"w":32,"h":32}
  249. },
  250. {
  251. "filename": "Large-Column-Light-0.png",
  252. "frame": {"x":36,"y":1,"w":32,"h":32},
  253. "rotated": false,
  254. "trimmed": false,
  255. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  256. "sourceSize": {"w":32,"h":32}
  257. },
  258. {
  259. "filename": "Large-Column-Light-1.png",
  260. "frame": {"x":71,"y":1,"w":32,"h":32},
  261. "rotated": false,
  262. "trimmed": false,
  263. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  264. "sourceSize": {"w":32,"h":32}
  265. },
  266. {
  267. "filename": "Large-Column-Light-2.png",
  268. "frame": {"x":106,"y":1,"w":32,"h":32},
  269. "rotated": false,
  270. "trimmed": false,
  271. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  272. "sourceSize": {"w":32,"h":32}
  273. },
  274. {
  275. "filename": "Large-Column-Light-3.png",
  276. "frame": {"x":141,"y":1,"w":32,"h":32},
  277. "rotated": false,
  278. "trimmed": false,
  279. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  280. "sourceSize": {"w":32,"h":32}
  281. },
  282. {
  283. "filename": "Large_Column-0.png",
  284. "frame": {"x":176,"y":1,"w":32,"h":32},
  285. "rotated": false,
  286. "trimmed": false,
  287. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  288. "sourceSize": {"w":32,"h":32}
  289. },
  290. {
  291. "filename": "Large_Column-1.png",
  292. "frame": {"x":211,"y":1,"w":32,"h":32},
  293. "rotated": false,
  294. "trimmed": false,
  295. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  296. "sourceSize": {"w":32,"h":32}
  297. },
  298. {
  299. "filename": "Large_Column-2.png",
  300. "frame": {"x":246,"y":1,"w":32,"h":32},
  301. "rotated": false,
  302. "trimmed": false,
  303. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  304. "sourceSize": {"w":32,"h":32}
  305. },
  306. {
  307. "filename": "Large_Column-3.png",
  308. "frame": {"x":36,"y":36,"w":32,"h":32},
  309. "rotated": false,
  310. "trimmed": false,
  311. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  312. "sourceSize": {"w":32,"h":32}
  313. },
  314. {
  315. "filename": "Roman-Column-0.png",
  316. "frame": {"x":36,"y":71,"w":32,"h":32},
  317. "rotated": false,
  318. "trimmed": false,
  319. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  320. "sourceSize": {"w":32,"h":32}
  321. },
  322. {
  323. "filename": "Roman-Column-1.png",
  324. "frame": {"x":36,"y":106,"w":32,"h":32},
  325. "rotated": false,
  326. "trimmed": false,
  327. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  328. "sourceSize": {"w":32,"h":32}
  329. },
  330. {
  331. "filename": "Roman-Column-2.png",
  332. "frame": {"x":36,"y":141,"w":32,"h":32},
  333. "rotated": false,
  334. "trimmed": false,
  335. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  336. "sourceSize": {"w":32,"h":32}
  337. },
  338. {
  339. "filename": "Roman-Column-3.png",
  340. "frame": {"x":36,"y":176,"w":32,"h":32},
  341. "rotated": false,
  342. "trimmed": false,
  343. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  344. "sourceSize": {"w":32,"h":32}
  345. },
  346. {
  347. "filename": "Roman_Column_Light-0.png",
  348. "frame": {"x":36,"y":211,"w":32,"h":32},
  349. "rotated": false,
  350. "trimmed": false,
  351. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  352. "sourceSize": {"w":32,"h":32}
  353. },
  354. {
  355. "filename": "Roman_Column_Light-1.png",
  356. "frame": {"x":36,"y":246,"w":32,"h":32},
  357. "rotated": false,
  358. "trimmed": false,
  359. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  360. "sourceSize": {"w":32,"h":32}
  361. },
  362. {
  363. "filename": "Roman_Column_Light-2.png",
  364. "frame": {"x":71,"y":36,"w":32,"h":32},
  365. "rotated": false,
  366. "trimmed": false,
  367. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  368. "sourceSize": {"w":32,"h":32}
  369. },
  370. {
  371. "filename": "Roman_Column_Light-3.png",
  372. "frame": {"x":106,"y":36,"w":32,"h":32},
  373. "rotated": false,
  374. "trimmed": false,
  375. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  376. "sourceSize": {"w":32,"h":32}
  377. },
  378. {
  379. "filename": "Sewer-Drain-0.png",
  380. "frame": {"x":141,"y":36,"w":32,"h":32},
  381. "rotated": false,
  382. "trimmed": false,
  383. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  384. "sourceSize": {"w":32,"h":32}
  385. },
  386. {
  387. "filename": "Sewer-Drain-1.png",
  388. "frame": {"x":176,"y":36,"w":32,"h":32},
  389. "rotated": false,
  390. "trimmed": false,
  391. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  392. "sourceSize": {"w":32,"h":32}
  393. },
  394. {
  395. "filename": "Sewer-Drain-2.png",
  396. "frame": {"x":211,"y":36,"w":32,"h":32},
  397. "rotated": false,
  398. "trimmed": false,
  399. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  400. "sourceSize": {"w":32,"h":32}
  401. },
  402. {
  403. "filename": "Sewer-Drain-3.png",
  404. "frame": {"x":246,"y":36,"w":32,"h":32},
  405. "rotated": false,
  406. "trimmed": false,
  407. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  408. "sourceSize": {"w":32,"h":32}
  409. },
  410. {
  411. "filename": "Sewer-Drain-4.png",
  412. "frame": {"x":71,"y":71,"w":32,"h":32},
  413. "rotated": false,
  414. "trimmed": false,
  415. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  416. "sourceSize": {"w":32,"h":32}
  417. },
  418. {
  419. "filename": "Sewer-Drain-5.png",
  420. "frame": {"x":71,"y":106,"w":32,"h":32},
  421. "rotated": false,
  422. "trimmed": false,
  423. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  424. "sourceSize": {"w":32,"h":32}
  425. },
  426. {
  427. "filename": "Sewer-Drain-6.png",
  428. "frame": {"x":71,"y":141,"w":32,"h":32},
  429. "rotated": false,
  430. "trimmed": false,
  431. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  432. "sourceSize": {"w":32,"h":32}
  433. },
  434. {
  435. "filename": "Sewer-Drain-7.png",
  436. "frame": {"x":71,"y":176,"w":32,"h":32},
  437. "rotated": false,
  438. "trimmed": false,
  439. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  440. "sourceSize": {"w":32,"h":32}
  441. },
  442. {
  443. "filename": "Stone-Platform-0.png",
  444. "frame": {"x":71,"y":211,"w":32,"h":32},
  445. "rotated": false,
  446. "trimmed": false,
  447. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  448. "sourceSize": {"w":32,"h":32}
  449. },
  450. {
  451. "filename": "Stone-Platform-1.png",
  452. "frame": {"x":71,"y":246,"w":32,"h":32},
  453. "rotated": false,
  454. "trimmed": false,
  455. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  456. "sourceSize": {"w":32,"h":32}
  457. },
  458. {
  459. "filename": "Stone-Platform-2.png",
  460. "frame": {"x":106,"y":106,"w":32,"h":32},
  461. "rotated": false,
  462. "trimmed": false,
  463. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  464. "sourceSize": {"w":32,"h":32}
  465. },
  466. {
  467. "filename": "Stone-Platform-3.png",
  468. "frame": {"x":106,"y":141,"w":32,"h":32},
  469. "rotated": false,
  470. "trimmed": false,
  471. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  472. "sourceSize": {"w":32,"h":32}
  473. },
  474. {
  475. "filename": "Stone-Platform-4.png",
  476. "frame": {"x":106,"y":176,"w":32,"h":32},
  477. "rotated": false,
  478. "trimmed": false,
  479. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  480. "sourceSize": {"w":32,"h":32}
  481. },
  482. {
  483. "filename": "Stone-Platform-5.png",
  484. "frame": {"x":106,"y":211,"w":32,"h":32},
  485. "rotated": false,
  486. "trimmed": false,
  487. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  488. "sourceSize": {"w":32,"h":32}
  489. },
  490. {
  491. "filename": "Stone-Platform-6.png",
  492. "frame": {"x":106,"y":246,"w":32,"h":32},
  493. "rotated": false,
  494. "trimmed": false,
  495. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  496. "sourceSize": {"w":32,"h":32}
  497. },
  498. {
  499. "filename": "Stone-Platform-7.png",
  500. "frame": {"x":141,"y":106,"w":32,"h":32},
  501. "rotated": false,
  502. "trimmed": false,
  503. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  504. "sourceSize": {"w":32,"h":32}
  505. },
  506. {
  507. "filename": "Stone-Platform-8.png",
  508. "frame": {"x":176,"y":106,"w":32,"h":32},
  509. "rotated": false,
  510. "trimmed": false,
  511. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  512. "sourceSize": {"w":32,"h":32}
  513. },
  514. {
  515. "filename": "Stone-Platform-9.png",
  516. "frame": {"x":211,"y":106,"w":32,"h":32},
  517. "rotated": false,
  518. "trimmed": false,
  519. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  520. "sourceSize": {"w":32,"h":32}
  521. },
  522. {
  523. "filename": "Stone-Platform-10.png",
  524. "frame": {"x":106,"y":71,"w":32,"h":32},
  525. "rotated": false,
  526. "trimmed": false,
  527. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  528. "sourceSize": {"w":32,"h":32}
  529. },
  530. {
  531. "filename": "Stone-Platform-11.png",
  532. "frame": {"x":141,"y":71,"w":32,"h":32},
  533. "rotated": false,
  534. "trimmed": false,
  535. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  536. "sourceSize": {"w":32,"h":32}
  537. },
  538. {
  539. "filename": "Stone-Platform-12.png",
  540. "frame": {"x":176,"y":71,"w":32,"h":32},
  541. "rotated": false,
  542. "trimmed": false,
  543. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  544. "sourceSize": {"w":32,"h":32}
  545. },
  546. {
  547. "filename": "Stone-Platform-13.png",
  548. "frame": {"x":211,"y":71,"w":32,"h":32},
  549. "rotated": false,
  550. "trimmed": false,
  551. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  552. "sourceSize": {"w":32,"h":32}
  553. },
  554. {
  555. "filename": "Stone-Platform-14.png",
  556. "frame": {"x":246,"y":71,"w":32,"h":32},
  557. "rotated": false,
  558. "trimmed": false,
  559. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  560. "sourceSize": {"w":32,"h":32}
  561. },
  562. {
  563. "filename": "Torch-A-0.png",
  564. "frame": {"x":246,"y":106,"w":32,"h":32},
  565. "rotated": false,
  566. "trimmed": false,
  567. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  568. "sourceSize": {"w":32,"h":32}
  569. },
  570. {
  571. "filename": "Torch-A-1.png",
  572. "frame": {"x":141,"y":141,"w":32,"h":32},
  573. "rotated": false,
  574. "trimmed": false,
  575. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  576. "sourceSize": {"w":32,"h":32}
  577. },
  578. {
  579. "filename": "Torch-A-2.png",
  580. "frame": {"x":141,"y":176,"w":32,"h":32},
  581. "rotated": false,
  582. "trimmed": false,
  583. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  584. "sourceSize": {"w":32,"h":32}
  585. },
  586. {
  587. "filename": "Torch-A-3.png",
  588. "frame": {"x":141,"y":211,"w":32,"h":32},
  589. "rotated": false,
  590. "trimmed": false,
  591. "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
  592. "sourceSize": {"w":32,"h":32}
  593. }],
  594. "meta": {
  595. "app": "https://www.codeandweb.com/texturepacker",
  596. "version": "1.0",
  597. "image": "Legends_Level_A.png",
  598. "format": "RGBA8888",
  599. "size": {"w":279,"h":279},
  600. "scale": "1",
  601. "smartupdate": "$TexturePacker:SmartUpdate:a755ec93daaec56d1c8bcd801e167677:2e759c84cbaf9134b80c1a34b50e5c9c:9f820b9412efc8199e0407f80b8c0011$"
  602. }
  603. }
  604. }