forked from melonjs/melonJS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
725 lines (689 loc) · 50.6 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
Version History
---------------
6.0.0
5.1.0
* Audio : Howler core update (2.0.8)
* Core : window.onReady is now marked as deprecated, and replaced by me.device.onReady
* Container : new `onChildChange` callback for when a child is added or removed
* Input : further improvements to multitouch support (compatibility on latest device/browser)
* Input : new me.input.setTouchAction function to enable/disable gesture by default (default to "none")
* Input : fix a pointer offset issue when using the browser zoom
* Loader : new "withCredentials" setting to specify if cross-site Access-Control requests should be made using credentials
* Physic : new me.collision.rayCast function for basic Line of Sight implementation
* Physic : slight me.Body refactoring to allow adding a physic body to any base me.Renderable
* Physic : new bounce property for solid bodies
* Renderable : `isKinematic` is now true by default except for me.Entity, me.Container and me.GUI object
* Renderable : anchor point and transform are now properly applied to me.Sprite Bounding Rect
* TMX : add support for "Collection of Image" tilesets
* Viewport : apply current transformation when converting given coordinates from localToWorld and WorldToLocal
* Viewport : fix a regression where transforms were not applied anymore to the camera/viewport
5.0.1
* Input : fix a regression with bindPointer
* Loader : fix the progressBar position when resizing the screen
5.0.0
* Audio : Howler core update (2.0.5)
* Audio : added a function to check if audio is muted globally
* Core : fix fullscreen detection when not set on the main canvas
* Core : remove obsolete ES5 shim (it's 2017, update your browser!)
* Core : updated orientation detection, based on the new (draft) Orientation API
* Debug : fixed debug panel toggle features, and automatically display the toggle key
* Geometry : new specific values can be returned through the callback for Observable Vectors
* Input : fix a bug where the gamepad axes may not trigger KEYUP events
* Input : remove deprecated argument type for `me.input.bindGamepad()`
* Input : remove deprecated `mousewheel` event
* Input : remove deprecated `MS` prefixed Pointer Event
* Input : standardize Event.button value and usage across all input models
* Input : me.input.preventDefault now correctly define the default action for pointer events
* Input : fix potential multitouch issues on "hybrid" browsers supporting both TouchEvent and PointerEvent
* Renderable : properly apply transformation and anchor for all me.Renderable objects
* Renderable : move flipX/flipY to me.Renderable, and remove deprecation warning
* Renderable : new `isKinematic` property allowing to opt-out from collision and input events
* Renderable : slightly refactored me.ColorLayer and exposed its me.Color property
* TMX : added support for layer grouping (Tiled 1.0.0)
* Viewport : added a method to unfollow the current target
4.1.1
* Core : fixed a bug in `Number.prototype.round()`
* Core : throw an exception when attempting to add an invalid state in `me.state.set()`
* Core : fixed `falling` and `jumping` flags on `me.Body` when gravity is reversed
* Geometry : fixed a bug in `me.Vector3d.abs()`
* Geometry : added a new `me.Matrix2d.multiplyVectorInverse()` method
* Pointer : fixed `touchstart` events
* Pointer : replaced non-standard `mousewheel` with W3C standard `wheel` events
* Pointer : fixed duplicate `wheel` events
4.1.0
* Audio : updated to latest Howler 2.0.2 (WebAudio resume/seek fixes, and IE related security issues)
* Audio : added a `me.audio.seek` function, to change or get the current position of a specific audio clip
* Core : throw an error message when registering a non valid object in the object pool (i.e. undefined class)
* Loader : added the possibility to configure path (baseUrl) by asset types.
* Loader : added a 'crossOrigin' option to enable/allow cross-origin image loading for WebGL
* Loader : fixed an issue where callbacks were randomly fired twice when refreshing the page (krojew)
* Loader : reduced memory usage (reduced overlay size for the logo, and prevent from creating the Font overlay in WebGL)
* Particles : fixed a (huge) performance regression with particle generation / handling
* Pointer: fixed bug where a device allowing both mouse & touch events would only emit touch events.
* Pointer: fixed a regression with multi-touch event detection on iOS & Android
* Pointer: fixed a regression with callback handling & cleaning in the releasePointerEvent function
* Renderable : fixed a regression in me.Sprite.isCurrentAnimation()
* TMX : TMX maps and renderers are now fully contained in their own space, and do no pollute me.game anymore
* TMX : exposed the TMX renderers API and related utility functions to convert tile to/from pixel coordinates
* TMX : improved API to manage isometric map & coordinates (e.g. vector and shape conversion)
* TMX : added a simple isometric "tile selector" in the isometric map example
* TMX : me.Layer.getTile() will now return `null` if there is no corresponding tile, instead of throwing an exception
* TMX : added a getRenderer() function to me.Layer that returns the layer TMX renderer.
* Viewport : added the possibility to define a global transformation to the viewport
* WebGLRenderer : now properly complain when using NPOT textures, and throw an exception for repetitive ones
* WebGLRenderer : does not create anymore a default overlay for me.Font drawing, unless required (reminder: me.Font+WebGL = Bad!)
4.0.0
* Audio : updated to the latest Howler 2.0.1 version
* Container : added a 'forEach' function that allows to iterate through all children
* Core : largely improved and completed the matrix implementation and usage
* Core : Object.assign polyfill update
* Core : various improvements and fixes to jasmine test units
* Debug : fixed the debug panel display when using the WebGL renderer
* Font : added true support for bitmap font generated out of true type fonts (e.g. Littera, bmfont, bmglypgh, etc...)
* Particles : reduced creation/use of temporary (vector) objects
* Pointer : fixed bug with Chrome on Windows touch devices where touch input would register, but mouse input would not. (credit to BrianRosamilia)
* Pointer : PointerEvent detection is now fully W3C compliant
* Pointer : automaticaly free any defined region if there is no callback left
* Renderable : added a new `currentTransform` property that defines the renderable transformation matrix
* Renderable : transformations can now be automatically applied through the `autoTransform` flag (off by default for user-defined objects)
* Renderable : me.AnimationSheet has been merged into me.Sprite (me.AnimationSheet is now only an alias), and rendering function simplified
* Renderable : fixed image layer first update, when added to a child container (and not directly the root one)
* Renderer : simplified/aligned both the Canvas and WebGL renderer API in a more WebGL fashion
* Renderer : added a subPixel rendering option (off by default)
* Shapes : polygon based shapes can now be freely transformed, and bounding box will be resized accordingly
* TMX : scaling and rotation can now be applied to a tilemap (see me.levelDirector.loadLevel() for example)
* TMX : fixed some issues when loading TMX level into a child container.
* WebGLRenderer : fixed the currentColor alpha not taking in account the "globalAlpha" (now better match canvas renderer)
3.1.0
* Audio : exposed a `me.audio.rate` function to allow modifying the playback rate of the specified audio clip.
* Audio : added back the possibility to stream audio elements (through the `stream` flag when defining audio assets)
* Camera : use the `alpha` component of the given color as the threshold for fading effect
* Color : normalized support for #RGBA and #RRGGBBAA formats (to match CSS standard)
* Core : added a `me.game.updateFrameRate` function to change the renderer framerate at runtime
* Core : simplified the "startup" functions to allow for shorter initialization code (see boilerplate)
* Core : removed previous Ejecta "hacks" (requires the latest Ejecta 2.1/development version)
* Documentation : various fixes and missing items added (e.g me.Object that was missing)
* Debug : debug panel(s) now automatically register themselves upon loading (see boilerplate)
* Input : added support for gamepad analogue axis binding
* Input : fixed a regression with pointer events not firing with "floating" regions (@thedrumchannell)
* Particles : fixed a crash when removing a particle emmiter during a level change/reset
* Renderable : fixed missing `onDestroyEvent` function when adding basic renderables to the game world.
* Renderable : fixed Sprite objects initialization when using a string argument for "image" (@trevorjwilliams)
* TMX : added support for JSON-format external tilesets
* TMX : fixed the clearTile function when using `preRender` and the WebGL renderer
* TMX : fixed `prerender` on browsers that support Canvas2DContextAttributes.alpha
* TMX : disabled animated tiles when using the `prerender` mode (these two are not compatible)
* TMX : fixed a regression with Tile property parsing
* TMX : fixed a regression with level loading when no tilesets are defined.
* TMX : fixed decoding of maps using CSV data format (in Tiled) and exported to JSON
* TMX : added support for typed custom properties (Tiled 0.16)
* WebGLRenderer : added a workaround for Safari resetting WebGL attributes bindings (see #783)
3.0.1
* Core : fixed/improved compatibility with Ejecta (e.g. initialization, CAFF support)
* Input : actually really truly fix pointer event z-ordering, finally
3.0.0
* Audio : updated to the latest Howler v2.0.0 beta version
* Audio : added a `me.audio.resume` function for added convenience (was already possible by calling back `me.audio.play`)
* Container : added an `autoDepth` feature that auto-increments a child's z-coordinate when inserted
* Color : add support for the #ARGB and #AARRGGBB formats
* Core : renamed `Object.extend` to `me.Object.extend` (fixes conflicts with FaceBook SDK and underscore/lodash) (@jdrorrer)
* Core : plugins are now registered to `me.plugins` to prevent collisions within the `me.plugin` namespace
* Core : replaced `String.contains` by its ES6 equivalent: `String.includes`
* Core : replaced `Number.sign` by its ES6 equivalentL `Math.sign`
* Core : `me.game.currentLevel` has been removed in favor of accessing objects through `me.game.world` -- added `me.LevelDirector.getCurrentLevel()` as a stop-gap
* Core : added `me.sys.updatesPerSecond` to configure updating less often than drawing (@Giwayume)
* Entity : new positioning method, where the renderable is positioned according to its anchor and the Entity's body anchor (@Giwayume)
* Examples : added an example showing how to build a basic menu (with a panel, checkboxes and buttons)
* Font : fixed font height not being set when specifying a CSS Unit for the size
* Font : added basic CSS Unit conversion from ‘pt’,’ex’,’em’ to ‘px’ (these are approximation and not guaranteed accurate)
* General : the release build files are no longer versioned; this replaces the old style "melonJS-x.x.x.js" file naming convention with just "melonJS.js"
* Geometry : added a new `me.Vector3d` and `me.ObservableVector3d` class
* Geometry : removed `reverse` method from Vector classes; use `negateSelf` instead
* Geometry : removed `reflect` and `reflectN` methods from Vector classes
* Geometry : fixed `floor` and `floorSelf` methods on Vector classes with negative values
* Geometry : fixed `angle` method on Vector classes
* LevelDirector : level loading is now asynchronous; for sequential behavior, use the LEVEL_LOADED event or new `onLoaded` callback
* LevelDirector : added an `options` argument to the loading method; for specifying a target container, callback, and whether to merge (flatten) object groups
* Input : renamed last remaining mouse-related objects : `me.input.mouse` => `me.input.pointer`, `me.event.MOVEMOVE` => `me.event.POINTERMOVE`
* Input : added HTML5 Gamepad API support, with button and axis remapping
* Input : optimised pointer detection using the quadtree
* Input : now properly respect object z ordering when firing pointer events
* Input : fixed event detection on items in a nested container
* Renderable : prevent position vector re-allocation when pooling renderable objects
* Renderable : renderables are now using a 3d Vector for position, using the z axis for layer ordering.
* Renderable : fixed a distortion issue when scaling and rotating sprites (@Giwayume)
* Renderable : fixed frame position when using cropping in TexturePacker (@Giwayume)
* Renderable : `anchorPoints` now defines the renderable position, scaling and rotation default origin point (@Giwayume)
* Renderable : better animation definition, allowing to set the animation delay on a per-frame basis
* Renderable : added `anchorPoint` setting to the constructor
* Renderer : added `renderer.createPattern()` and `renderer.drawPattern()`
* Shapes : added support for the free Physic Body Editor tool (in addition to the existing PhysicsEditor support)
* Shapes : refactored `me.Rect` to inherit from `me.Polygon`
* Texture : added support for per-frame pivot points in animations (@Giwayume)
* TMX : added hexagonal map support (@matthewmmorrow)
* TMX : optimized all renderers to be more GC friendly (using the pooling system for temporary objects)
* TMX : refactored the `me.TMXTileMap` object, so that it can be used to easily add level into a container object
* TMX : `me.ImageLayer` is now drawn relative to the viewport boundary, and can be anchored appropriately
* TMX : internally normalizes XML into the same JSON format supported by Tiled; cleans up many compatibility functions and removes several fallback cases
* TMX : removed `me.TMXTileMap.moveToCenter` and `me.TMXTileMap.reset` methods
* TMX : added support for per-frame animation delay to Tiled Objects (for tileset animations)
* TMX : added support for layer data encoding in JSON map format (Tiled 0.13)
* TMX : added support for evaluations in TMX data; see spike entities in the platformer for a useful example
* TMX : fixed an isometric rendering bug with odd tile heights
* TMX : throw an error message when using map exported in XML (deprecated in Tiled 0.15)
* TMX : allow to parse the `backgroundcolor` attribute as formatted in Tiled 0.15 (#AARRGGBB)
* TMX : use the new `columns` property (if available) when parsing maps (Tiled 0.15)
* TMX : fixed a regression in AD tile rotation (squares tiles only)
* Video : optimized ImageLayer repeat modes (repeat modes require power-of-two sized images for WebGL)
* Video : added `fill-min` and `flex` scaling modes
* Video : animations are now able to skip frames for low FPS devices and high-speed animations
* WebGLRenderer : added a `repeat` parameter to `createTexture` method
2.1.4
* Audio : fixed the audio-enable workaround on iOS9
* Tween : fixed potential re-initialization issues when recycling tween objects.
2.1.3
* Audio : fixed an issue with decoding audio data on Opera
* Audio : updated to the latest 2.0 Howler beta (fixes a loop issue on Chrome mobile, and touch event for iOS playback)
* Core : fixed an exception in the Map polyfill
* Documentation : added docs for the Renderer interface, including the beta WebGLRenderer and shader
* Particles : fix an exception in `me.ParticleContainer` (introduced in 2.1.2)
* TMX : fixed TMXLayer opacity when preRender is enabled
* TMX : fixed ImageLayer opacity
* Video : fixed a regression where `me.device.getPixelRatio()` no longer works when called before `me.video.init()` (introduced in 2.1.0)
* WebGLRenderer : fixed a bug that causes a compile failure with the quad fragment shader on a small number of platforms
2.1.2
* LevelDirector : do not replace Tile Object's `renderable`
* Renderable : fixed renderable bounds initialization with object pooling
2.1.1
* Container : fixed child bounds when manipulating the container position.
* Core : fixed a regression when using the pooling system with renderables.
* Examples : fixed conditional debugPanel loading in cocoonJS
* Font : fixed the drawStroke function (@zoiba)
* Input : fixed an uncaught exception with the 'maxTouchPoints' polyfill under Chrome 43+
* Input : fixed/improved `pointerEvent` and `pointerLeave` event bindings for the sample GUI Object
* Loader : throw an exception indicating to use JSON if XML parsing is not supported by the browser/platform
2.1.0
* Audio & Loader : file/clip names passed to various methods are now case sensitive. Removed uses of toLowerCase on variables.
* Audio : properly dispose of audio resources when using cocoonJS
* Container : `getChildByProp` and friends now accepts a RegExp for value matching
* Color : added high-precision color transformation for me.Color
* Core : added `me.pool.exists` (@xorinzor)
* Core : fixed collision detection with nested Containers
* Core : added `me.game.HASH` to pass key-value options in the URL
* Core : now uses only case-sensitive string matching; DoN't MiX cAsE!
* Device : added browser language detection
* Entity : entity bodies now have a default shape if not overridden by the entity constructor.
* Entity : renderables are now positioned relative to the body bounds
* Font : updated me.Font to work with me.Color (@xorinzor)
* Font : updated the me.Font api to be consistent with me.BitmapFont and the Renderer class
* Font : added support for WebGL (using me.Font is however not recommended for performances reason)
* Input : added support for `pointerenter` and `pointerleave` events (@TheManuz)
* Input : allow regions to be any shape when registering pointer event, and not just me.Rect
* Input : `releasePointerEvent` now accepts an optional extra argument that references "which callback" to release
* Particles : fixed angle variation and speed variation in `me.ParticleEmitter`
* Renderable : normalized constructors for `me.Sprite` and `me.AnimationSheet` (see the wiki upgrade guide)
* Renderable : removed `hWidth` and `hHeight` properties
* Shapes : added basic support for the PhysicsEditor tool (mainly shapes definition)
* Texture : added support for the WebGL Renderer
* Texture : texture atlas can now be created using a “standard” sprite sheet
* Texture : `me.TextureAtlas` has been renamed to `me.video.renderer.Texture`
* TMX : added parsing of the new `id` (unique ID) property for objects (Tiled 0.11.0)
* TMX : fixed horizontal, vertical and antidiagonal flipping for tile objects
* TMX : remove deprecated "transparency color" - use PNG images with alpha channel instead
* Video : refactored the me.video.init to be more flexible in terms of mandatory/optional arguments
* Video : turn canvas transparency off by default; can be enabled by passing `options.transparent = true` to `me.video.init()`
* Video : renderers are now classes that can be instantiated with `new me.CanvasRenderer` and `new me.WebGLRenderer`
* Video : added support for the `image-rendering` CSS property standard "pixelated" value
* Video : added new `scaleMethod` option : `fit`, `fill-max`, `flex-height`, `flex-width`, and `stretch`; replaces old `maintainAspectRatio` flag (@Djokal)
2.0.2
* Audio : automatically cleanup `onend` callbacks in `me.audio.play`
* Audio : `me.audio.play` now applies the `loop`, `onend`, and `volume` properties only to the expected sound instance ID
* Audio : fix `me.audio.unmute()`
* Audio : updated to the latest Howler 2.0 build (various fixes and improvements)
* Audio : added `instance_id` parameter to `mute` and `unmute` methods
* Audio : updated documentation
* CanvasRenderer : fixed an issue/regression with the `globalAlpha` functions
* Core : fixed collision detection between `me.Ellipse` (circle) and `me.Line` shapes
* Core : fixed renderable positioning with nested me.Container objects
* Core : fixed an uncaught exception in IE9 with Float32Array
* Documentation : fixed anchor positioning
* Documentation : added anchor target highlighting
* Documentation : fixes in me.Font, me.BitmapFont, and me.Entity
* Entity : removed `me.ObjectSettings`
* Font : fixed globalAlpha not being set when using `me.Font.setOpacity()`
* TMX : fixed an uncaught exception when loading a map with an empty object layer (thanks @Tiagojdferreira)
2.0.1
* Core : fixed loading under CocoonJS when using Canvas+
* Shapes : replaced the isometric magic numbers used for scaling, by proper and more accurate math constants (ldd)
* Audio : fixed sound looping
* Audio : fixed onend callback not being repeatedly fired when looping a sound
* Audio : cleaned the onend callback when stopping a sound
* Audio : added a me.audio.fade() function
2.0.0
* Core : implemented a new shape based collision system for the collision layer
* Core : added user agent detection for Kindle devices
* Core : fixed the collision response for circles (me.Ellipse with a uniform radius)
* Shapes : renamed me.PolyShape to me.Polygon and simplified the constructor (no longer needs a fourth param)
* Shapes : added a new shape: me.Line
* Shapes : added multi shapes support for body
* Shapes : added rotation and scaling support for `me.Polygon`/`me.Line` shapes.
* Audio : the Howler library has been updated to the last 2.0 beta
* Audio : removed the cocoonJS hack, as the pause/resume function have been fixed through Howler 2.0
* Entity : added automatic collision response handling (not fully done yet actually)
* Container : fixed an issue where "non-floating" containers always passed the in-viewport test
* CanvasRenderer : All fill & stroke methods have removed the color & line width parameters. Use the new setColor and setLineWidth methods.
* CanvasRenderer : Removed strokeLine, was duplicate with drawLine
* WebGLRenderer : New WebGLRenderer has reached "alpha", and can be enabled by passing the `me.video.WEBGL` flag to `me.video.init()`
* Particles : fixed randomness in the emitter for scaling and rotation of particles
* Particles : fixed widget drawing in Particle Editor
* TMX : added rotation support for Polygon/PolyLine objects (Tiled 0.10+)
* TMX : added support for tileset animations (Tiled 0.10+)
* TMX : fixed isometric projection for Polygon/PolyLine objects
* TMX : fixed TSX external tileset loading
1.1.0
* Core : reorganised source code for all basic object definition/augmentation
* Core : new CI and unit testing frameworks
* Core : new object inheritance mechanism: http://github.com/parasyte/jay-inheritance
* Core : added array random and weightedRandom functions (aaschmitz)
* Core : added a Base64 Encode function (aaschmitz)
* Core : new `me.Error` class to help better track down exceptions' origin
* Core : brand new "Separate Axis Theorem " based collision algorithm (support polygon/ellipse, and provides more accurate collision response)
* Core : added collision filtering support
* Core : added a spatial partitioning algorithm (QuadTree) for super fast collision detection
* Container : `addChild` and `addChildAt` now return the added child
* Video : refactored canvas drawing out to me.CanvasRenderer. Video is now agnostic of rendering target. Use me.video.renderer to call things like getWidth, getHeight, getCanvas, getContext, etc.
* Video : constructor parameters changed. 2nd parameter now expects renderer type. For now, just supports me.video.CANVAS
* CanvasRenderer : object is passed to the draw calls of each object in the world Container. Implemented various draw apis fillRect, and fillArc for example. me.Font still requires an instance of Context2d.
* Renderable : renamed `me.SpriteObject` to `me.Sprite` and `me.ObjectContainer` to `me.Container`, for a cleaner API
* Renderable : constructors refactored to accept x & y numeric values, over a single vector object. Effects: me.Container, me.Rect, me.PolyShape, me.Ellipse, me.Renderable
* Shapes : setShape updated to accept x & y numeric values over a vector object for: me.Rect, me.PolyShape, me.Ellipse
* Camera : fixed viewport bounds setting when using isometric map (Juhana Paavola)
* Entity : entity object redesign with a full polygon shape based physic body implementation
* Entity : `me.ObjectEntity` has been renamed to `me.Entity` to avoid confusion between the old and new entity component.
* Audio : fixed some audio load issues and error callbacks
* Audio : sync'ed with last Howler 1.1.25 version (fixes numerous issues, see official changelog for more details)
* TMX : fixed the background color drawing when the level is smaller than the display canvas
* TMX : fixed the getTile function returning wrong tiles when using isometric maps
* TMX : fixed collision layer rendering issue with isometric map
* TMX : fixed world container size not being updated after a new level is loaded
1.0.2
* Core : improved general compatibility with IE9/IE10 (Desktop/Mobile/Tablets)
* Geometry : added basic type check for the `me.Vector2d` constructor
* Input : fixed event detection on Chrome 35+
1.0.1
* Core : removed unused `Object.mixin` method, (caused compatibility issues with socket.io and other libs)
* Entity : disable falling flag when gravity is disabled
* Entity : fix an exception in ObjectEntity.checkCollision()
* Entity : fixed a regression on breakable tiles
* Entity : use width and height by default if spritewidth and spriteheight are not defined
* Entity : throw an exception if mandatory fields width and height are not defined
* Entity : fixed an exception in ObjectEntity.flipX/Y()
* Loader : fixed asset loading when named as a number
* ObjectContainer : use cyclic zIndex by default instead of Infinity
* Audio : sync'ed with last Howler version (as now officially and properly support CocoonJS)
* Audio : melonJS now throws an exception when attempting to load audio assets before audio is initialized
* TMX : fixed a potential issue with ImageLayer when ratio is set to 0 in Tiled
* Font : fixed opacity property usage for me.BitmapFont object.
* Renderable : added a tap and hold feature to the me.GUI_Object object (juhanapaavola)
* Particles : fixed the particle emitter bounds (aaschmitz)
* Input : added several keyboard keys for input mapping (aaschmitz)
1.0.0
* Core : now pass the elapsed time as a parameter when calling any object update function
* Core : cleaned-up/renamed conflicting set function in shape and font objects
* Core : added new shapes objects (Ellipse, Polygon) on top of the existing Rectangle one
* Core : added a mixing property to object (insidiator)
* Core : deprecated object manipulation (add, remove) have been removed from me.game
* Core : renamed the `me.entityPool` API to `me.pool` and related functions (see documentation & upgrade guide)
* Entity : deprecated helper function (doJump, doWalk) have been removed
* ObjectContainer : renamed getEntityByProp to getChildByProp
* ObjectContainer : getChildByProp now returns all matching object type and not only "entities"
* Camera : camera bounds are now defined as a rectangle and not only in width and height
* Loader : added resource information to loader progress event (warpten)
* Loader : added loading of TMX data from javascript (json) objects (paulmedwal)
* Color : melonJS now defines a new me.Color class for advanced color manipulation
* Particles : added basic Particle System, with emitters and particles (aaschmitz/insidiator)
* Particles : added a particle emitter editor, see the example folder (insidiator)
* Device : added full cross-browser support for the Fullscreen API (see me.device)
* Device : added support for the vibration API (me.device.vibrate)
* Device : renamed the me.save.delete function to me.save.removed (delete is a reserved keyword)
* Device : added support for the visibilitychange API (pause/stop state on window show/hidden status)
* Audio : modernised (and also mobile compatible) web audio API based on the awesome Howler library
* Input : added the possibility to disable globally or per key the default browser action
* Input : automatically enable keyboard even on desktop type devices
* Input : the registerPointerEvent function now only accepts the standardized Pointer Event names.
* TMX : added proper support for all shape type (collision is still however resolved using AABB detection)
* TMX : XML TMX map are now converted to a JXON object on-the-fly, allowing to remove duplicated parsing code
* TMX : added the Tiled "type" property to TMXObject
* TMX : melonJS will now respect the object size as defined in Tiled when parsing/creating related object in the game world
* Timer : added a setTimeout and setIntveral function obeying the engine pause state
* Tween : fixed tweens to properly maintain time state when paused
* Renderable : `collisionBox` has been replaced by a more cleaner implementation (see `getShape`/`addShape`/`getBounds`)
* Renderable : the flicker function now takes the global flickering duration in ms (as opposed in frame count)
* Renderable : removed the visible property
0.9.11
* Documentation : numerous fixes and improvements
* General : fix initial loading for me.save, and update documentation
* General : fix detection of localStorage on some phones (agmcleod)
* General : fix uncaught exception when objects without a position vector are added to a container
* Input : fully support event-driven key input with me.event.KEYDOWN and me.event.KEYUP
* Input : multiple keys bound to the same action will no longer cancel each other
* Input : fixed pointerEvent support on IE11
* ObjectContainer : fixed rendering of nested containers (again) - Thanks to Peter Hull
* ObjectContainer : fixed getEntityByProp with nested containers
* Animation : (quick) fixed hWidth and hHeight not being updated when the frame size is different
* Core : better support object reset through a onResetEvent function when using object pooling
* Tween : updated the me.Tween object to be usable with the object pooling mechanism
* Font : added a trimRight polyfill to the String class to help fixing multi-line ASCII rendering
* Font : added a drawStroke function
* Font : fixed a bug that broke some CSS font-family names, like `monospace` and `"Trebuchet MS"`
0.9.10
* Core : fixed object `visible` flag not being set based on their parent group visible status
* Core : fixed both `pauseOnBlur` and `StopOnBlur` being enabled by default
* TMX : fixed the imageLayer reset bug (when unsubscribing the viewport change event)
* TMX : fixed an undefined tileset issue when adding a new Tile through the `setTile` function
* Documentation : fixed the parameter value of the hasChild function
* Renderable : moved the opacity related getter/setter function into the Renderable class
* Renderable : fixed group opacity setting fully overwriting renderable opacity settings
* ScreenObject : fixed cases where ScreenObjects may not be considered in the viewport
* ObjectContainer : fixed rendering of nested containers
0.9.9
* General : added proper support for a jslint task and cleaned source code accordingly (nvlbg)
* General : added a renderable container object (me.ObjectContainer) and reorganize `me.game` accordingly
* General : added `me.game.world` as a reference to the game world root object container.
* General : added a new me.save class to manage localStorage, and moved (deprecated) the old me.stat to the plugin repository
* Core : improved game pause management (by swmuron)
* Core : added a `me.device` object containing device specific capabilities and events (agmcleod)
* Core : moved all device read-only flags to the new me.device object
* Core : fixed Opera Mobile detection when sniffing user agent
* Core : improved orientation change detection, added me.device.orientation and a specific minpubsub channel
* Core : moved debug flags to the debugPanel plugin
* Input : fixed accelerometer event registration when supported
* Input : added support for windows 8 accelerometer (Halfman)
* Input : improved mouse wheel event support to be compatible with all recent browsers
* Input : added support for the touchCancel and mousecancel events
* Input : added TAB key definition to key bindings (agmcleod)
* Loader : refreshed the loader a bit, and added the new logo
* Loader : fixed binary loader (agmcleod)
* Video : added support for CocoonJS 1.4 ('antialias' parameter and the new `dispose` function)
* Video : added proper support for video scaling on High-DPI devices (no longer requires the JS hack in the index HTML file)
* Video : fix `me.sys.scalingInterpolation` when display is resized.
* TMX : fixed default group opacity value not being applied to child objects.
* TMX : optimized tile rendering, by using a tileset reference in Tile object
* TMX : added preliminary support for non rectangular shapes in Tiled (although currently converted to me.Rect)
* TMX : fixed multiple image backgrounds with `ratio` properties that are different values
* TMX : fixed me.ImageLayer drawing being delayed by one frame
* Font : Font objects now properly extend me.Renderable
* GUI : `HUD` objects have been completely replaced by me.ObjectContainer; See Platformer example for new HUD implementation pattern.
* Animation : the `animationspeed` property, now defines the delay between frames in terms of milliseconds (as opposed to framecount)
* Animation : allow animation callback to prevent resetting to first frame by returning `false` *really fixed this time*
* Shapes : new shapes added for future expansion: me.Ellipse, me.PolyShape
* Shapes : `me.Rect.getRect()` renamed `getBounds()`
* Tween : the tween implementation has been updated to the last official r11 version.
* Camera : renamed the mislabeled worldToScreen and ScreenToWorld, and fixed a bug in one of the function.
0.9.8
* Renderable : added ShoeBox Packed Texture Support (see `me.TextureAtlas`)
* Loader : the `tps` data type has been changed to a more generic `json` data type (agmcleaod)
* Input : added MSPointer support (Halfman)
* Input : normalized API and management of input event and enabled multi-touch for PointerEvent
* Input : added throttling support for `****move` events
* Core : main loop now uses requestAnimationFrame by default with a fallback to setTimeout
* Video : added the possibility to specify a maximum size when enabling video scaling
* Video : automatically limit the maximum size if the corresponding CSS properties are set
* TMX : added the possibility to specify different axis value for the scrolling ratio
* Font : fixed drawing characters with charCode smaller than the firstChar value.
* Renderable : allow animation callback to prevent resetting to first frame by returning `false
* Core : added "Mobile" to `me.sys.isMobile` UA sniffer (fix Firefox OS detection)
0.9.7
* General : melonJS now uses Grunt, the task manager, for the build system
* General : game objects will not update unless inside the viewport or `obj.alwaysUpdate` flag is enabled
* Audio : preliminary audio support for mobile devices (iOS6 for now)
* Core : added a `me.sys.isMobile` flag to detect running on a mobile device
* Core : now using `screencanvas` extension for CocoonJS
* Core : fixed `me.game.remove()` destroying the object too early
* Entity : ObjectEntity is now composed with a `renderable` component (does not anymore inherit from AnimationSheet)
* Entity : renderable default position is now set based on the me.ObjectEntity default anchor point.
* Entity : fixed ladder collision detection/management
* Examples : new collision_test example (see ticket #103)
* Examples : new font_test example
* Font : changed default alignement to `left`/`top`
* Font : added multiline support for `me.Font` and `me.BitmapFont`
* Geometry : most `me.Vector2d` methods return a reference to `this`, to allow method chaining
* Input : added a `me.input.unlockKey()` function that allows to manually unlock key (DblK)
* Loader : fixed loader when repeatedly calling the preloader
* Renderable : new base class for any objects that needs to draw (Sprite, ImageLayer, GUI, etc...)
* Renderable : added TexturePacker Support (see `me.TextureAtlas`)
* TMX : fixed `me.ImageLayer.ratio` on Firefox & Opera
* TMX : allows changing the imageLayer default origin using the imageLayer anchorPoint
* TMX : added a new `me.game.getEntityByProp()` function (DblK)
* TMX : added JSON map parsing support
* TMX : small optimization for isometric rendering (`pixelToTileCoords()` function)
* TMX : fixed access to inherited properties
* TMX : added an entry point for a potential gzip/zlib TMX decompression plugin
* TMX : fixed object positioning on isometric maps (andyveliz)
* TMX : property value convention for automatically JSON-decoding; prefix with `json:`
* Video : fixed `viewport.shake()`
* Video : optimized framerate on cocoonJS platforms by using the 'screencanvas' extension
* Video : disable video scaling interpolation by default
0.9.6
* General : fix compatibility issue with previous iOS(5.x) and Android version
* Core : workaround for useNativeFrame when cancelAnimationRequest is not supported
* Audio : added volume and mute control settings
* Audio : added the possibility to stream audio elements
* TMX : code optimization to lower memory usage
* TMX : fixed layer scrolling when using pre-rendering
* Loader : fixed `me.loader.load` not adding TMX into the `me.levelDirector`
0.9.5
* Audio : added mp4/aac pre-loading support
* Audio : added codec selection based on audio support level
* Core : fixed requestAnimationFrame
* Core : added an official plugin API
* Core : fixed a object removing and sorting lock issue
* Core : added a 'floating' property for renderables
* Core : added Object Pooling support
* Core : fixed the `me.game.getEntityByName` function when using camelcase names
* Debug : added a simple debug panel plugin
* Font : fixed font name starting with a decimal value
* Font : added changes to allow specifying a flat number of px,em, etc for font sizes.
* Font : added support for comma separated font names like in CSS
* Event : added Daniel Lamb minPubSub library for event publishing
* Event : fixed touch event support detection on cocoonJS
* Event : added `click`, `dblclick`, `tap` events
* Event : fixed mouse event conflict and mousewheel event
* Geometry : added a function to return the angle between two vectors
* Input : me.GUI_Object's onClicked() function has been renamed to onClick()
* Loader : use asynchronous mode when loading XML files
* Entity : added spacing and margin capacities for sprite (same as Tile Map Sprite)
* Entity : fixed flickering when using requestAnimationFrame
* Entity : added opacity setting
* Entity : fixed visible property automatic setting
* Entity : moved collision check outside of the Entity Object
* Entity : cleaned and renamed the collision utility function
* Entity : added the possibility to check for multiple collision
* Entity : added a `collideType` function to check for collision with a specific type
* Entity : moved collisionBox from SpriteObject to Entity Object
* Entity : added a distanceToPoint, angleTo and angleToPoint function
* Tween : fixed tween when pausing game
* Tween : various fixes and optimization from the official repository
* TMX : fixed a bug that was preventing a non visible layer to be set visible later
* TMX : fixed the clearTile function on non visible layers (e.g. collision map)
* TMX : added official support for Opacity in TiledLayer, TMXLayer, colorLayer and ImageLayer
* TMX : added support for TSX files
* TMX : added a `repeat` property to Image Layer instances, similar to CSS background-position
* TMX : parallax layer is now based on the new "official" Image Layer support (from Tiled 0.9.0)
* TMX : fixed the `getObjectGroupByName()` function
* TMX : added support for custom tile type
* Tutorial : fixed camel case issue in resource names
* Tutorial : update the parallax part to reflect last changes in melonJS (Image Layer)
* Video : added support for display scaling
* Video : added a setImageSmoothing function
* Example : added "whack-a-mole" as an official example
* Example : added a new "platfomer" example (using legal assets) and removed alex kidd based examples
0.9.4
* General : melonJS is now only using Google Closure (removed YUI compressor)
* General : melonJS is now ES5 strict mode compliant
* General : added a .editorconfig file to provide basic rules to editors
* Core : added a flag to enable/disable automatic pause on loosing/gaining focus
* Core : fixed rendering loop when using requestAnimationFrame (parasyte)
* Core : added a renderCollisionMap debug setting (parasyte)
* Core : use console.error instead of window.alert
* Core : added the possibility to specify a user-defined sort function
* Core : fixed mixing screenObject added as object, and TMX level loading
* Core : fixed screenObject when extending update & draw function
* Entity : added an anchor point for renderables (through SpriteObject)
* Entity : added rotation support (through SpriteObject)
* Entity : added the possibility to pause an animation (parasyte)
* Entity : fixed default position by using top-left coordinates as in Tiled
* Entity : fixed invisible entities being removed when colliding
* Font : fixed me.Font horizontal alignement
* General : fixed & enhanced object/memory deallocation when switching levels
* General : rewrote the parallax code using the new Generic Image Layer Object
* General : added support for vertical parallax layer
* Geometry : added a function to test for vector "equality"
* Geometry : added a couple of Self function (to help avoid object creation)
* Loader : fixed a case issue between filename and asset name
* Input : added the possibility to check for mouse event based on world or screen coordinates
* Input : fixed a false-positive issue at initialization, and usage of special keys (parasyte)
* TMX : added dynamic layer rendering (configurable globally or per layer through Tiled)
* TMX : added Image Layer Support (Tiled daily builds only)
* TMX : added support for the new map background property (Tiled daily builds only)
* TMX : added a Color Layer (used when a background color is defined)
* TMX : another round of clean-up and various bug fixing
* TMX : added support for TMX Object without name (parasyte)
* TMX : added preliminary support for polygon and polyline objects (parasyte)
* TMX : fixed visible flag and user-defined properties not being applied to ObjectGroup
* TMX : fixed rendering issue with transformed tiles (AD, H, V)
* TMX : fixed display of map being smaller than the viewport
* TMX : fixed TMXObject not being declared correctly under the "me" namespace
* Utils : fixed the HexToRGB function and added support for the 3 char format (#hhh)
* Tween : fixed exception in the tween library (parasyte)
* Documentation : corrected and added missing documentation
0.9.3
* General : better error management and reporting
* General : added a dummy console.log for platforms not supporting it
* General : melonJS now uses Google Closure for library minification
* General : added a global gravity setting that will override entities default value if defined
* Core : now properly calls all objects onDestroyEvent function when resetting game
* Core : added the possibility to define a callback when a level is fully loaded
* Core : added a couple of utility functions (degToRad, radToDeg)
* Core : fixed GUID creation when passing a non string parameter
* Core : only check for collision when the projection vector is set
* TMX : global rewrite, code optimization and clean-up
* TMX : added support for isometric map loading and display
* TMX : added support for perspective map loading and display
* TMX : relaxed TMX property case sensitive checks
* TMX : added tile rotation support (Tiled 0.8.0)
* TMX : fixed level name property not being set, and use it when required
* LevelDirector : fixed the nextLevel & previousLevel functions
* Loader : added binary file support
* Loader : added possibility to dynamically load any resources (i.e. during the game)
* AnimationSheet : the entire sprite-sheet is now use to create the default animation
* Entity : fixed CollisionBox not being properly used on y axis when checking for collision
* Entity : fixed CollisionBox issue when dealing with sub-pixel positioning
* Entity : fixed setVelocity not setting y velocity when x velocity is null
* Entity : added missing properties (GUID, name) in InvisibleEntity
* Entity : fixed res.obj not defined in InvisibleEntity
* HUD : added a removeItem function
* GUI : rewrote the GUI Object accordingly to the new event management
* Geometry : added a containsPoint function
* Geometry : added a floor() and ceil() function to Vector2d
* BitmapFont : fixed BitmapFont ignoring 'center' alignment
* BitmapFont : avoid implicit object conversion when rendering a bitmapFont
* Input : fixed use of numeric keys by using a proper constant value.
* Input : rewrote mouse event management
* Input : added touch event management (with mouse event emulation)
* Input : (beta) multitouch support
* Input : added Accelerometer event management
* Documentation : added a lots of missing documentation on various API
* Documentation : added JS syntax highlighting in the tutorial
* Documentation : don't use onDestroyEvent to manage score in the examples
* Documentation : exposed more TMX objects and APIs
0.9.2
* General : melonJS is now licensed under the terms of the MIT License
* General : added some Cake magic, allowing to use melonJS with CoffeeScript (by scan)
* General : added melonJS UML Class Diagram in the official repository (by Ben2303)
* General : melonJS now properly stays in it's own namespace (me)
* Audio : configurable behavior in case of audio loading error
* Core : fixed a shaking bug when collision box is not aligned with the sprite box
* Core : fixed collision detection bug (object being tested again itself)
* Core : refactored fading function using Tween objects (API CHANGE, see documentation)
* Core : added a helper method to know the sign of an number
* Core : corrected variables definition (global->local)
* Core : added a GUID (Game Unique Identifier) to objects
* Core : getEntityByName now also returns non Entity Object (like layers)
* Core : fixed state change when using custom state values
* Core : me.game.collide now also returns an object reference in the collision vector
* Core : renamed and correctly initialize the localStorage flag capability
* Documentation : various documentation correction and improvements
* Entity : added friction management
* Entity : updateMovement function now returns a collision "vector" (API CHANGE, see documentation)
* Entity : refactored/cleaned-up movement/collision function
* Entity : added support for multiline spritesheet (fixed cell size)
* Entity : added the possibility to define a specific transparent color for spritesheet
* Entity : implemented a resize function, allowing to resize a sprite on the fly
* Entity : optimized/refactored SpriteObject
* Entity : fixed object with 1 single sprite (no animation) not begin updated
* Entity : added the possibility to also specify a callback when an animation is over
* Entity : fixed an initialization issue when using melonJS without a Tilemap
* GUI : corrected me.GUI_Object and added missing documentation
* GUI : marked me.GUI_Object as deprecated, as it will be rewritten in a next release
* Event : also cancel event bubbling
* Font : added support for multiline fontsheet
* HUD : added a setItemValue() function
* HUD : corrected display issue on Opera
* Loader : added possibility to add graphics resources after pre-loading (e.g. ingame)
* TMX : use native Base64 decoding when available
* Viewport : object to follow can either be a Object Entity or a position Vector
* Viewport : fixed default value (if parameter not specified) for Axis to follow on
* Video : cleaned-up the applyRGBFilter function
0.9.1
* Core : "cache image" option (disabled by default) to use canvas instead of directly using Image Object
* Core : add onPause and onResume callback when game is paused/resumed on losing/gaining focus
* Core : added possibility to pass more than 1 extra argument to me.state.change (extra arguments will be passed to the reset function of the target object)
* Core : object can now only be destroyed using me.game.remove(obj), made of ObjectEntity.destroy a private function
* Core : beta dirty Rectangle support (only working for non scrolling level for now)
* Core : experimental webGL wrapper
* Core : added a getEntityByName function
* Core : fixed some kind of "lag" issues when deleting objects
* Core : improved the requestAnimFrame usage, and fallback to setInterval. me.sys.useNativeAnimFrame to enable it (disable by default)
* Core : optimized the way objects are managed in the game loop
* Core : defined (and used) a Object.defineProperty function to replace __defineGetter__ / __defineSetter__ (was not supported on IE9/IE10)
* TMX : implemented Tiled "transparency" property for Tileset, allowing to specify which color should be transparent (note: this slows down level loading)
* TMX : fixed unnecessary canvas creation for the collision layer (should free some memory)
* TMX : cleaned/optimized data loading and fixed an issue on FF with XML parsing of "big" Base64 encoded maps (only first nodeValue was parsed by the engine)
* TMX : added support for CSV data encoding
* TMX : added support for flipped tiles, as supported in Tiled 0.7
* TMX : added multiple tileset support
* TMX : added a "background_image" property. To be set through Tiled, and allowing to specify a fix background.
* Entity : merge AnimatedSpriteObject into SpriteObject. SpriteObject now takes an optional additional argument to create an animated sprite
* Entity : added a distanceTo function
* Viewport : fixed camera refresh when changing "deadzone" values
* Loader : added a "onProgress" callback to get progress notification, removing the need to poll the loader each frame for loading progress
* Loader : fix progress notification when TMX files are loaded into the levelDirector
* Loader : added a retry counter for the audio loading : script will now stop and throw an exception after 3 unsuccessful loading attempts.
* Video : renamed "applyEffect" to "applyRGBFilter", and fixed an issue on Opera
* Audio : fixed compatibility issues with IE9/10
* Geometry : added a merge function to me.Rect
0.9.0
* Documentation : API documentation using jsdoc-toolkit (finally!)
* Geometry : define getter for me.Rect coordinates (simplify code)
* Level : support for fadeOut/fadeIn effect in me.LevelEntity (when changing levels)
* Entity : correctly implemented InvisibleEntity Objects (no longer inherit from ObjectEntity)
* Entity : makes SpriteObjet inherit from me.Rect (make it easier to manage sprite pos and size)
* Loader : cosmetic update of the preloader screen
* Viewport : "rounding" issue fix in the viewportEntity (~~30% less CPU usage on Safari/OSX!)
* TMX : cleaned & refactored tilemap collision detection (still not perfect though)
0.8.0
* TMX : support for "TiledObject" (as supported in Tiled 0.6.2)
* Entity : re-factored constructor call to Object Entities (to use the settings obj produced through Tiled)
* Entity : moved collision function from AnimatedSpriteObject to ObjectEntity
0.7.9
* Viewport : added some effects to the camera object (shaking, fading, ...)
* Viewport : re-factored and fixed the camera/viewport code
* Core : re-factored public objects using John Resig Inheritance mechanism.
* Core : fixed the "bootstrap" (unnecessary double call)
* Entity : re-factored parallax code & corrected a bug that was causing the layers to be drawn 2x times
* Audio : partially fix crash audio in safari when audio is enabled
* Core : fixed gfx glitches (rounding issues)
0.7.6 (May 16, 2011)
first public version with alex4 !
www.melonjs.org is live :)