Commit graph

370 commits

Author SHA1 Message Date
spayton
eeeb6c3733 This stops Phaser progressing with file loads when an audio file file
failed in IE.

The problem was that it was calling fileComplete everytime instead of
setting it as a callback.
2014-10-02 16:48:12 +01:00
photonstorm
d65c526184 Cache.addBitmapData has a new parameter: frameData allowing you to pass a Phaser.FrameData object along with the BitmapData.
Cache.getFrameData has a new parameter: `map` which allows you to specify which cache to get the FrameData from, i.e. `Phaser.Cache.IMAGE` or `Phaser.Cache.BITMAPDATA`.
Sprite.loadTexture if given a BitmapData as the texture will now query the cache to see if it has any associated FrameData, and if so it will load that into the AnimationManager.
2014-10-01 03:10:13 +01:00
Richard Davey
01fd3df434 AudioSprite support is now built into the Loader and SoundManager. AudioSprites are like sprite sheets, only they consist of a selection of audio files and markers in a json configuration. You can find more details at https://github.com/tonistiigi/audiosprite (thanks @codevinsky #1205)
Fixed AudioSprite jsdoc, casing and formatting issues.
2014-09-23 22:15:09 +01:00
Jeremy Dowell
7cce1366f2 jshint cleanup 2014-09-23 10:25:49 -05:00
Jeremy Dowell
dd0d1729ad Phaser.AudioSprite
AudioSprite implementation for phaser.

Loads audio sprites based on the file format created with: https://github.com/tonistiigi/audiosprite
2014-09-23 10:21:29 -05:00
photonstorm
5980a3bdc6 Loader can now natively load XML files via load.xml. Once the XML file has loaded it is parsed via either DOMParser or ActiveXObject and then added to the Cache, where it can be retrieved via cache.getXML(key).
Cache now has support for XML files stored in their own container. You can add them with `cache.addXML` (typically this is done from the Loader automatically for you) and get them with `cache.getXML(key)`. There is also `cache.checkXMLKey(key)`, `cache.checkKeys` and `cache.removeXML(key)`.
2014-09-19 13:45:04 +01:00
photonstorm
20551f9129 Lots of jsdocs fixes ready for the new doc generator. 2014-09-16 17:35:08 +01:00
Richard Davey
cf363a56f1 Cache.removeImage has a new parameter: removeFromPixi which is true by default. It will remove the image from the Pixi BaseTextureCache as well as from the Phaser Cache. Set to false if you don't want the Pixi cache touched. 2014-09-16 12:20:03 +01:00
photonstorm
57295d7ac8 jsdoc fixes. 2014-09-15 13:51:17 +01:00
photonstorm
5e6c40e392 Fixed the jsdocs and crop method used on preloader sprites. 2014-09-09 12:48:38 +01:00
photonstorm
1f84024a3e Cache.getImage now returns null if no image was found. 2014-09-03 11:11:48 +01:00
photonstorm
05922d6fb0 Lots of fixes to the Image class to restore texture loading and fix cropping so it works exactly the same as the Sprite now. 2014-08-28 17:04:59 +01:00
photonstorm
34426e7560 Loader.useXDomainRequest boolean automatically set to true if the browser is specifically detected as IE9, but you can still override this. IE10 will use xhr. 2014-08-28 05:24:57 +01:00
photonstorm
6216cf578c BitmapFonts are now correctly added to the Cache._bitmapFont array and returned via Cache.getBitmapFont (thanks @prudolfs #1076) 2014-08-28 03:52:26 +01:00
Richard Davey
7fe4abc5c4 Merge pull request #1059 from lucbloom/spritesheet-to-framecount
Sprite Sheet => frame count
2014-08-28 01:49:15 +01:00
photonstorm
7bfa6fa9f2 Loader.useXDomainRequest boolean added. If true (the default is false) it will use XDomainRequest when loading JSON files instead of xhr. In rare IE edge-cases this may be required. You'll know if you need it (#1131 #1116) 2014-08-28 01:23:45 +01:00
Luc Bloom
0fc30e839e Removed some more checks 2014-07-22 10:42:47 +02:00
Luc Bloom
7f3b542fdd Removed the notion of Sprite Sheets vs single frame images
Instead of making a distinction between single frame images and Sprite
Sheets, I added a simple FrameData with one Frame to every image that
gets loaded. This way, a lot of the engine code can be simplified.

For instance, you can play animations on any Sprite without having to
check the “frame count” of its image anymore.

The engine doesn’t have to check for non-existing .frameData anymore.

An animation can keep on playing when an image happens to be set with 1
frame, continuing its animation when after that, another image is set
with multiple frames.

Think of it this way: an image with one frame is an animation of just
one frame.
2014-07-22 10:24:53 +02:00
photonstorm
122640e01b Phaser.Loader was incorrectly getting the responseText from _xhr instead of _ajax on IE9 xDomainRequests (thanks @lardratboy #1050) 2014-07-21 11:12:58 +01:00
mjeffery
fcc23ef5d2 fixed onPackComplete Signal 2014-07-13 15:38:13 -04:00
photonstorm
22462566b4 Restored old Image object. 2014-07-11 18:02:40 +01:00
photonstorm
2293b64c94 Removing debug / console.log output. 2014-07-09 05:49:13 +01:00
photonstorm
dd88f2a6e2 Fixed BitmapText parser. 2014-07-09 05:39:49 +01:00
photonstorm
58fc73348c The StateManager has a preRenderCallback option, which checks for a preRender function existing on the State, but it was never called. Have decided to add this in, so the core Game loop now calls state.preRender right before the renderer runs (thanks @AnderbergE #869) 2014-07-02 05:32:40 +01:00
photonstorm
3d80568e4c Loader.isLoading is set to false if the filelist size is zero. 2014-06-30 09:24:25 +01:00
Richard Davey
56d1cef1c8 Merge pull request #941 from kay-is/master
Changed a @method string
2014-06-24 22:39:55 +01:00
Kay Plößer
4b7698d3e1 Changed a @method string so the documentation method name matches the code method name. 2014-06-24 14:16:38 +02:00
photonstorm
7c7d9153e6 Sprite.crop (and Image.crop) has been completely overhauled. You can now crop animated sprites (sprite sheet and texture atlas), you can define the x/y crop offset and the crop rectangle is exposed in the Sprite.cropRect property.
Sprite.updateCrop is available if you wish to update an externally referenced crop rectangle.
Sprites and Images now have their own textures objects, they are no longer references to those stored in the global Pixi.TextureCache. This allows you to redefine the texture frame dynamically without messing up any other Sprites in your game, such as via cropping. They still share global Base Textures, so image references are kept to a minimum.
Sprite.resetFrame will revert the Sprites texture frame back to its defaults dimensions. This is called when you call Sprite.crop with no rectangle, to reset the crop effect, but can be userful in other situations so we've left it as a public method.
2014-06-10 23:37:33 +01:00
photonstorm
c0b3bd224e Removed the Pixi texture cache calls. 2014-06-06 04:12:51 +01:00
photonstorm
5b5bdc80d9 Loader.pack will allow you to load in a new Phaser Asset Pack JSON file. An Asset Pack is a specially structured file that allows you to define all assets for your game in an external file. The file can be split into sections, allowing you to control loading a specific set of files from it. An example JSON file can be found in the resources folder and examples of use in the Phaser Examples repository.
Loader.totalQueuedPacks returns the number of Asset Packs in the queue.
Loader.totalLoadedPacks returns the number of Asset Packs already loaded.
2014-05-29 17:05:13 +01:00
photonstorm
4004cc92e3 First working pass at the Asset Pack Loader update. 2014-05-29 15:57:47 +01:00
photonstorm
066ab633a6 Loader.tilemap has renamed the mapURL parameter to url and mapData to data to keep it consistent with the other Loader methods.
Loader.physics has renamed the `dataURL` parameter to `url` and `jsonData` to `data` to keep it consistent with the other Loader methods.
2014-05-29 04:44:23 +01:00
photonstorm
7b876d5fc4 ScaleManager.bounds is a Rectangle object that holds the exact size of the game canvas, taking DOM offset and game scale into account.
Pointer.withinGame is now accurate based on game scale and updated as the Pointer moves.
Stage.bounds is now updated if the game canvas offset changes position. Note that it gives the un-scaled game dimensions.
2014-05-19 18:49:59 +01:00
photonstorm
da75a22e82 Cache.checkKey added - allows you to pass in a Cache type and a key and return a boolean.
Cache.checkCanvasKey(key) - Check if a Canvas key exists in the cache (thanks to @delta11 for the proposal)
Cache.checkTextureKey(key) - Check if a Texture key exists in the cache (thanks to @delta11 for the proposal)
Cache.checkSoundKey(key) - Check if a Sound key exists in the cache (thanks to @delta11 for the proposal)
Cache.checkTextKey(key) - Check if a Text key exists in the cache (thanks to @delta11 for the proposal)
Cache.checkPhysicsKey(key) - Check if a Physics key exists in the cache (thanks to @delta11 for the proposal)
Cache.checkTilemapKey(key) - Check if a Tilemap key exists in the cache (thanks to @delta11 for the proposal)
Cache.checkBinaryKey(key) - Check if a Binary key exists in the cache (thanks to @delta11 for the proposal)
Cache.checkBitmapDataKey(key) - Check if a BitmapData key exists in the cache (thanks to @delta11 for the proposal)
Cache.checkBitmapFontKey(key) - Check if a BitmapFont key exists in the cache (thanks to @delta11 for the proposal)
Cache.checkJSONKey(key) - Check if a JSON key exists in the cache (thanks to @delta11 for the proposal)
2014-05-19 11:34:14 +01:00
photonstorm
410bc389ed Tidying up ready to move the plugins to their own repo. 2014-05-08 01:57:21 +01:00
photonstorm
75a848f0ef Loader now uses XDomainRequest in IE9 to load JSON data to help with CORS issues. 2014-04-29 14:41:26 +01:00
photonstorm
348e3c14bd LoaderParser.bitmapFont updated so xml parsing works properly on IE9 (thanks @georgiee) 2014-04-28 13:35:30 +01:00
photonstorm
f33ba5dcc7 Timer has removed all use of local temporary vars in the core update loop.
Timer.clearPendingEvents will purge any events marked for deletion, this is run automatically at the start of the update loop.
The main Timer loop could incorrectly remove TimeEvent if a new one was added specifically during an event callback (thanks @garyyeap, fix #710)
2014-04-14 11:51:50 +01:00
jdowell
c9a67936d8 Added OnFileStart signal to loader
We've had a number of people in the channel ask for the ability to know when a file has started loading and to get the file names of said files.

Added the OnFileStart signal to do just that.
2014-04-11 13:17:26 -05:00
photonstorm
8fc2a465cd New Phaser package, small docs updates and preparing P2.World for new bounds code and v0.5.0 migration. 2014-04-08 03:31:13 +01:00
photonstorm
b6ad11701e Various jshint fixes. 2014-04-01 01:30:20 +01:00
Georgios Kaleadis
0d77b36fc4 fixed p2 physics loading format and added the ability to extract a single fixture 2014-03-31 11:19:08 +03:00
Georgios Kaleadis
0a456d81c1 remove physics loader flags in p2 world, fix naming in loader 2014-03-31 10:46:17 +03:00
Christian Wesselhoeft
3b4c034452 Constrain Windows Scripting Host env to Loader.js 2014-03-25 14:56:05 -07:00
Christian Wesselhoeft
2ea76d1216 Fix jshint issues in src/loader 2014-03-25 14:56:05 -07:00
Christian Wesselhoeft
61f18b675c Trim trailing whitespace. 2014-03-25 14:56:04 -07:00
photonstorm
870d534e50 Fixed the Loader.preloadSprite crop effect on WebGL. 2014-03-18 16:23:44 +00:00
photonstorm
c8e63582a4 Lots of small tweaks to pass jshint. 2014-03-13 16:49:52 +00:00
Charles Black
3d64410d7c Fix copy paste errors 2014-03-10 11:53:08 -04:00
Charles Black
6768cfd970 Cache.destory now destroys cache correctly 2014-03-10 11:22:06 -04:00
Dan Cox
806b8eb82a Update LoaderParser.js
Remove "navigator.isCocoonJS" here as CocoonJS has neither window.DOMParser nor will a createElement('div') work under Accelerated Canvas/WebGL mode. (Under WebView mode, there will probably be a DOMParser object. Most have it.)
2014-03-10 02:59:32 -04:00
photonstorm
d75f6e163f Updated tilemap type to string (fixes #516) 2014-03-06 16:53:52 +00:00
photonstorm
e45a929b00 Body.loadPolygon now parses all shapes that may exist in a JSON data file, and re-creates them all on the Body. Assumes shapes are CCW + Convex (tested working with Lime Exportor). Almost fixes #449 but Body rotation seems to screw orientation of shapes. 2014-02-28 05:46:02 +00:00
photonstorm
10b3dbf74a Loader.replaceInFileList wouldn't over-write the previous entry correctly, which caused the Loader.image overwrite parameter to fail (thanks basoko, fixes #493) 2014-02-27 21:41:54 +00:00
photonstorm
5ab104ad4b Loader.script now has callback (and callbackContext) parameters, so you can specify a function to run once the JS has been injected into the body. 2014-02-26 02:45:06 +00:00
photonstorm
1448562abd Loader can now load JSON files specifically (game.load.json) and they are parsed and stored in the Game.Cache. Retrieve with game.cache.getJSON(key) (#329)
Also fixed UTF encoding on the animation file.
2014-02-21 18:48:06 +00:00
photonstorm
fb5920feec We now force IE11 into Canvas mode to avoid a Pixi bug with pre-multiplied alpha. Will remove once that is fixed, sorry, but it's better than no game at all, right? :(
Loader.setPreloadSprite() will now set sprite.visible = true once the crop has been applied. Should help avoid issues (#430) on super-slow connections.
2014-02-21 17:29:51 +00:00
photonstorm
e5a4620b87 Loader.physics now lets you load Lime + Corona JSON Physics data, which can be used with Body.loadPolygon and Body.loadData.
Cache.addPhysicsData and Cache.getPhysicsData allow you to store parsed JSON physics data in the cache, for sharing between Bodies.
2014-02-14 23:51:49 +00:00
photonstorm
539a0f2256 BitmapFont fixes and updates and Cache support for it added. Working sweet now. 2014-02-14 16:38:06 +00:00
photonstorm
ef95fbaa00 BitmapFont moved to extending RenderTexture instead of BitmapData. Now applied as a texture to a Sprite/Image. 2014-02-14 13:50:50 +00:00
photonstorm
b38b00c2c1 Loader.bitmapFont now has 2 extra parameters: xSpacing and ySpacing. These allow you to add extra spacing to each letter or line of the font. 2014-02-14 04:34:57 +00:00
photonstorm
24f2e2a46d BitmapText updated and bought in-line with the new Text class. Moved to use the new Bitmap Text XML loader which should work fine on CocoonJS now and also supports multiple bitmap fonts per cache. 2014-02-14 03:34:35 +00:00
photonstorm
da878b2181 Updated the Gruntfile. Also:
InputHandler.pixelPerfectOver - performs a pixel perfect check to see if any pointer is over the current object (warning: very expensive!)
InputHandler.pixelPerfectClick - performs a pixel perfect check but only when the pointer touches/clicks on the current object.
Previously using a Pixel Perfect check didn't work if the Sprite was rotated or had a non-zero anchor point, now works under all conditions + atlas frames.
2014-02-11 13:23:54 +00:00
photonstorm
0896c2fac7 Updating copyright year and README. 2014-02-05 16:54:59 +00:00
photonstorm
902ffee808 Loader.progressFloat contains the actual non-rounded progress value, where-as Loader.progress contains a rounded value. Use progressFloat if you've > 100 files to load. 2013-12-31 17:35:40 +00:00
photonstorm
86f6ddcbc8 Two new particle examples and a group animation example. Also fixed CocoonJS sound issue and Cache sound locked bug. 2013-12-31 03:37:11 +00:00
photonstorm
ce4cf531d4 Added class constructors, fixed Stripshader, added relative Tween example and updated Tween source. 2013-12-30 16:54:00 +00:00
photonstorm
167a498a5e Phaser.Game constructor can now be passed a single object containing game settings + Stage settings, useful for advanced configurations. 2013-12-24 03:18:55 +00:00
photonstorm
3cbb820349 You can now load any binary file via the Loader: game.load.binary(key, url, callback) - the optional callback allows for post-load processing before entering the Cache. 2013-12-20 18:27:36 +00:00
photonstorm
5cf7ed4fdb More TypeScript updates. 2013-12-18 16:56:14 +00:00
photonstorm
f991f9cee8 Tweens have a new event: onLoop.
Tweens - Example showing how to use the tween events, onStart, onLoop and onComplete.
Lots of documentation fixes in the Tween class.
Tweens fire an onLoop event if they are set to repeat. onComplete is now only fired for the final repeat (or never if the repeat is infinite)
Tween.onStart is now called when the tween starts AFTER the delay value, if given (thanks stevenbouma)
2013-12-18 13:02:01 +00:00
photonstorm
50eee95c99 Improved TilemapLayer rendering and debug rendering significantly. Cleared out some old assets and added a new map. 2013-12-18 00:44:04 +00:00
photonstorm
dd7ae12271 ArcadePhysics.overlap and collide now recognise TileSprites in the collision checks. 2013-12-17 16:48:03 +00:00
photonstorm
a361a18616 Updated IE11 check, forces IE11 to use Canvas renderer even in AUTO mode. 2013-12-13 14:04:14 +00:00
photonstorm
669570c701 Tidying up the examples and more Tilemap work. 2013-12-10 12:23:42 +00:00
photonstorm
42c0bed502 Fixed World.scale and Group.scale. 2013-12-03 02:13:57 +00:00
photonstorm
00a9897ae2 Updated Filter resolution to a 2f and added Blur and Marble filters. 2013-11-29 12:26:53 +00:00
photonstorm
f22159e257 Updated documentation. 2013-11-28 15:57:09 +00:00
photonstorm
8da9b67c18 Loader fixed for tilemap data. 2013-11-28 14:22:47 +00:00
photonstorm
780b8a5d6d New filters and demos: LightBeams, Fire and Tunnel. Also Loader can now load script files. 2013-11-28 05:43:35 +00:00
photonstorm
a9a46bfbbf Lots of documentation updates and new Loader examples. 2013-11-27 16:33:49 +00:00
photonstorm
4926fac578 New non-conflicting Loading system in place. Creating tests. 2013-11-26 21:10:01 +00:00
photonstorm
2fc5c89c1e Preparing to extend the Loader to handle script loading. 2013-11-26 17:14:21 +00:00
photonstorm
299115ca5d The entire Phaser library has been updated to match the new JSHint configuration. 2013-11-25 04:40:04 +00:00
photonstorm
13a2cc2feb Updating all files to adhere to the JSHint settings and fixing lots of documentation errors on the way. 2013-11-25 03:13:04 +00:00
photonstorm
a876fdd2b6 README update, Loader audio path fix and Tween.isRunning fix. 2013-11-24 13:16:55 +00:00
photonstorm
496639ff25 Added Phaser.Filter and started moving the shaders over into their own filter classes, so they won't all get bundled in unless needed. 2013-11-21 05:00:07 +00:00
TheJare
f115a2dbf8 Remove references to GameMath, it's just Math now
Throw exceptions if wrong format given to tilemap or textureatlas. Previously, old onload remained active and error happened in the wrong (and hard to diagnose) place.
2013-11-20 00:12:37 +01:00
Richard Davey
ebe441666c BitmapData object added 2013-11-13 20:57:09 +00:00
photonstorm
1f28d328a7 Commit before refactoring Sprite guts. 2013-10-24 21:21:00 +01:00
photonstorm
a6fac64248 Loads of issues reported on Github resolved (sprite crop, music resume, etc). 2013-10-24 04:27:28 +01:00
photonstorm
4b2ac6c6c6 More tilemap examples 2013-10-16 21:25:51 +01:00
photonstorm
c6bf67c392 Group.alpha exposed and instance returns added to Loader functions. 2013-10-13 20:28:06 +01:00
photonstorm
0201baef11 And Tilemaps are rendering again - and much better than ever before :) Just one final optimisation pass to do and then it's on to collision. 2013-10-11 18:18:27 +01:00
photonstorm
cf414394c3 Tileset working, map coming next. 2013-10-11 06:30:28 +01:00
photonstorm
b868c2cb1b Started revamp of the Tilemap system. Also removed old 'Advanced Physics' and dropped in p2.js which is what I hope we'll eventually use. 2013-10-11 04:42:11 +01:00
Richard Davey
54f073e5cb Testing some new Camera tricks. 2013-10-03 23:20:24 +01:00
Richard Davey
96da57cac0 Fixed up the namespace in the documentation and finished off all sections other than Game Objects and Physics (yuck). 2013-10-03 02:38:35 +01:00
Richard Davey
f832bacfd6 More Docs! 2013-10-03 01:21:08 +01:00
Richard Davey
868ae81bab Input, Loader and Math docs tidied up. 2013-10-02 15:05:55 +01:00
Richard Davey
ca113b85aa More docs coming on. 2013-10-01 16:39:39 +01:00
Richard Davey
305b12d76b Adding docs. 2013-10-01 15:01:46 +01:00
Richard Davey
16b1913de1 * Fixed issue in Sound.play where if you gave a missing marker it would play the whole sound sprite instead.
* Button.setFrames will set the current frame based on the button state immediately.
* InputHandler now creates the _pointerData array on creation and populates with one empty set of values, so pointerOver etc all work before a start call.
* Added Canvas.setUserSelect() to disable touchCallouts and user selections within the canvas.
* When the game boots it will now by default disable user-select and touch action events on the game canvas.
* Loaded.setPreloadSprite now rounds the width/height values and starts from 1. This fixes canvas draw errors in IE9/10 and Firefox.
2013-09-30 17:12:22 +01:00
Richard Davey
d9a49797c4 1.0.4 release 2013-09-18 06:34:56 +01:00
Richard Davey
dbaf7269e9 Promoted the Tilemap to a DisplayObject and vastly simplified the load process. 2013-09-12 04:24:01 +01:00
Richard Davey
95374339b9 Added a Sample Plugin and tested out the Plugin Manager. Working great :) 2013-09-11 17:32:53 +01:00
Richard Davey
87858d6bbf Fixed a bug stopping legacy Audio from starting correctly. Also fixed an issue in the Loader causing it to not load the next file if an unsupported audio file was encountered. Fixed audio playback issues on Firefox/Waterfox as a result. 2013-09-11 11:33:27 +01:00
Richard Davey
48ed27dfcc Finished off RenderTexture. Sprites can now accept a RenderTexture or a key when you create them. RenderTextures are also now stored in the cache under their own key, making re-using them across other Sprites much easier. Also ported over all of the Tilemap classes, but need to get them rendering. 2013-09-11 02:57:36 +01:00
Richard Davey
e2eddc8b24 Added Full Screen support and tested it. Also added in the BitmapText game object and custom XML loader. Game now sends a pause and resume signal, which the TweenManager listens to and handles correctly. 2013-09-10 23:51:35 +01:00
Richard Davey
e41e35fd09 Fixed an error that stopped 2 tweens from being able to run on the same object. Also refactored a lot of the classes to remove prototype properties and move them to local instance properties. 2013-09-10 20:40:34 +01:00
Richard Davey
a486bf6b4a Phaser now running on iOS. Also fixed a legacy bug where a pending sound wouldn't play once it was touch unlocked. Also fixed Input not working on WebGL contexts. Added WebGL texture updates to the Group/World swap functions. 2013-09-10 16:46:39 +01:00
Richard Davey
15fe5ed6c8 Fixed the Bring to Top bug and also fixed Group/World.swap when the child was a tail node. Also improved Group.dump significantly. Fixed Phaser.Utils namespace clash too. 2013-09-10 12:46:14 +01:00
Richard Davey
4f950ae801 Fixed a fantastic FrameData bug. Also added support to the Emitter to handle multiple image keys and/or frames. 2013-09-10 11:09:25 +01:00
Richard Davey
2fe8a3a0a7 Physics integration and a fix to Tween that stopped the repeat/yoyo from working. 2013-09-03 17:07:05 +01:00
Richard Davey
66e86e7d82 Tiling Sprite added 2013-09-03 03:19:42 +01:00
Richard Davey
936118bd91 AnimationManager done and in, need to fix texture update bug, otherwise finished. 2013-08-30 04:20:14 +01:00
Richard Davey
a81a8effb4 Sprite Sheets now parse and render correctly too. 2013-08-30 02:18:00 +01:00
Richard Davey
559d75eba1 When Phaser loads images they are now added to the PIXI.BaseTextureCache. Also when it loads atlas data (regardless of the 3 formats) they are converted into PIXI TextureCache entries using UUIDs to avoid name clashes and to support index based atlases. 2013-08-30 01:50:17 +01:00
Richard Davey
4c1dacfa02 Loader can now parse both JSON Hash and JSON Array formated texture atlas files. 2013-08-29 22:53:55 +01:00
Richard Davey
09def364c3 Farewell TypeScript, see you on the other side. 2013-08-28 07:02:57 +01:00