Commit graph

595 commits

Author SHA1 Message Date
photonstorm
333663731d Added the missing preRender function to the Phaser.State class template. 2015-04-15 01:37:18 +01:00
photonstorm
f2f8dcd061 Phaser.StateManager no longer calls preRender unless the State create method has finished. If the State doesn't have a create method then preRender runs immediately.
Phaser.StateManager.created is a new read-only boolean that tells you if the State has finished running its `create` method. If it doesn't have one it's always true.
2015-04-15 01:36:50 +01:00
photonstorm
9f493044d4 The StateManager would incorrectly call loadUpdate while the game was paused or if the State didn't have an update method defined even after the loader was completed.
The StateManager would incorrectly call `loadRender` while the game was paused or if the State didn't have an `render` method defined even after the loader was completed.
2015-04-14 15:34:32 +01:00
photonstorm
a7db0e2c70 Group.hash is an array (previously available as Group._hash, but protected) into which you can add any of its children via Group.addToHash and Group.removeFromHash. Only children of the Group can be added to and removed from the hash. The hash is used automatically by Arcade Physics in order to perform non z-index based destructive sorting. However if you don't use Arcade Physics, or it isn't a physics enabled Group, then you can use the hash to perform your own sorting and filtering of Group children without touching their z-index (and therefore display draw order).
Group.physicsSortDirection is a new property allowing you to set a custom sort direction for Arcade Physics Sprites within the Group hash. Previously Arcade Physics used one single sort direction (defined on `Phaser.Physics.Arcade.sortDirection`) but this change allows you to specifically control how each and every Group is sorted, so you can now combine tall and wide Groups with narrow and thin in a single system.
2015-04-13 16:30:02 +01:00
photonstorm
49be59b0c9 Added missing resumed method to Phaser.State class template. 2015-03-26 10:54:32 +00:00
photonstorm
8233b0a079 Phaser 2.3.0. 2015-03-26 02:37:31 +00:00
photonstorm
7e19f45350 When the Game first boots it will now call window.focus(). This allows keyboard events to work properly in IE when the game is running inside an iframe. You can stop this from happening by setting window.PhaserGlobal.stopFocus = true (thanks @webholics #1681) 2015-03-24 13:27:27 +00:00
photonstorm
7aa4d0ad0d When a State is started and linked to Phaser it has a new property created on it: key, which is the string identifier used by the State. 2015-03-24 10:21:03 +00:00
photonstorm
1486e166bd Added physicsType property. 2015-03-23 15:04:27 +00:00
photonstorm
53b1562eb6 jshint fix 2015-02-26 23:12:26 +00:00
photonstorm
74eeddf956 You can now set a resolution property in your Game Configuration object. This will be read when the Pixi renderer instance is created and used to set the resolution within that (#1621) 2015-02-26 10:52:30 +00:00
photonstorm
8aec760cd5 First pass at spacial sorting in World.collide. 2015-02-25 05:39:02 +00:00
photonstorm
321e11d0a5 A State swap now sets the Loader.reset hard parameter to true by default. This will null any Loader.preloadSprite that may have been set (#1636) 2015-02-25 05:18:49 +00:00
photonstorm
a69e53f901 Copyright date change. 2015-02-25 03:36:23 +00:00
photonstorm
ec19abb91c Component preUpdate changes. 2015-02-25 00:59:27 +00:00
photonstorm
35b4926eb8 Undoing previous change - doesn't actually work at all! #1620 2015-02-18 23:32:12 +00:00
photonstorm
4699770520 Adjusted function order. 2015-02-18 23:15:54 +00:00
photonstorm
9effb4a946 Stage.visibilityChange now has a second parameter fromPhaser. This is set to true by the Stage._onChange callback. This should mean that when Phaser is listening for window.onblur and window.onfocus events it will only trigger the visibilityChange if that event was generated by Phaser itself. If it was generated by something else on the page or iframe it should now be ignored (thanks @austinhallock #1620) 2015-02-18 23:12:08 +00:00
photonstorm
88f10f7f89 Updated fixedToCamera docs to reflect non-nesting (#1596) 2015-02-18 22:58:48 +00:00
photonstorm
b0261e4a5f Group.cursorIndex is the index of the item the Group cursor points to. This replaces Group._cache[8]. 2015-02-18 22:54:19 +00:00
photonstorm
9fd5ae119b jsdocs update. 2015-02-17 06:01:09 +00:00
photonstorm
8892f46a83 PIXI.WebGLRenderer.destroy has been fixed to decrement the glContextId and remove it from the PIXI.instances global. Game.destroy now hooks into this. This now means that you can now delete and create your Phaser game over and over without it crashing WebGL after the 4th attempt (#1260) 2015-02-11 21:02:15 +00:00
photonstorm
0e7820bde5 Group.forEach (and many other Group methods) now uses the children.length value directly instead of caching it, which both helps performance and stops the loop from breaking should you remove a Group child in the invoked callback. 2015-02-11 17:19:56 +00:00
photonstorm
42c75c0ad2 Updated jsdocs to mention roundPixels (#1377) 2015-02-11 15:32:52 +00:00
photonstorm
6506e8d7e6 JSdocs update (fix #1520) 2015-02-11 13:47:58 +00:00
photonstorm
7a066a3a8c World.setBounds will now adjust the World.x/y values to match those given (#1555) 2015-02-10 21:40:53 +00:00
photonstorm
0054dc996b The Loader now directly calls StateManager.loadComplete rather than the StateManager listening for the loadComplete event, because Loader.reset unbinds this event (and it's easy to accidentally remove it too)
Loader.onLoadComplete is dispatched *before* the Loader is reset. If you have a `create` method in your State please note that the Loader will have been reset before this method is called. This allows you to immediately re-use the Loader without having to first reset it manually.
2015-02-10 17:04:04 +00:00
photonstorm
2b2ee27912 If for whatever reason you wish to hide the Phaser banner in the console.log you can set window.PhaserGlobal.hideBanner to true and it will skip the output. Honestly I'd rather if you didn't, but the option is now there. 2015-02-09 20:10:51 +00:00
photonstorm
5bd231d532 JSDoc fixes. 2015-02-05 05:13:22 +00:00
photonstorm
569483ab17 Game._kickstart forces Phaser to always call at least one logic update before being allowed to render. 2015-02-05 05:12:59 +00:00
Richard Davey
21823f65e3 Merge pull request #1576 from vulvulune/jsdoc
Correct comments
2015-02-03 20:47:32 +00:00
Richard Davey
ad9b8ae8e1 Merge pull request #1568 from Bilge/patch-1
Added missing plugins member in Phaser.Game class.
2015-02-03 20:31:26 +00:00
Bilge
92b89fb549 Added plugins property to Phaser.Game.
Property was previously being declared late without initialization at allocation time.
2015-01-29 22:51:38 +00:00
vulvulune
2e49f07b77 Correct comment Phaser.Stage
Replace @name => @method on some functions
2015-01-27 14:05:47 +01:00
vulvulune
8ef32f044c Correct comments
Correct comments:
-Phaser.Camera: checkWorldBounds =>checkBounds
-Phaser.RetroFont: Set correct @name for name and smoothed
-Phaser.DOM: inViewport => inLayoutViewport
2015-01-27 13:46:18 +01:00
photonstorm
3c2725addc Typo. 2015-01-18 12:24:00 +00:00
photonstorm
8973423e98 Sprite.frame and AnimationManager.frame wouldn't return the correct index if a sprite sheet was being used unless it had first been set via the setter. 2015-01-08 01:28:38 +00:00
photonstorm
30ef362e59 jsdoc fixes / typos. 2015-01-06 12:58:19 +00:00
photonstorm
4bc8fb3c8f Docs update #1489 2015-01-05 11:57:46 +00:00
Paul
81c872adf1 Simplified call to updateTransform
This change implements the original suggestion of using `updateTransform`,
but applies so globally instead of within a particular postUpdate
function.

Now the game loop calls `updateTransform` after each `updateLogic` call
unconditionally; it is updates that change the world that are accounted
for, not the rendering. This removes some previous checks that were
preventing correct behavior with the previous patch.

This makes the assumption that game objects (eg. Sprites) are only
modified within callbacks triggered before the completion of the
`postUpdate` walking of the scene graph.
- User code that runs outside of the "game update", such as a `setTimeout`
  timer, will need to explicitly update transformations so that the world
  is synced by the next `preUpdate`: but this is not the expected case and
  is already outside the Phaser update model.
- If this assumption does not hold or is too weak, the transformations
  could also be applied once at the start of every game update loop
  (before any render or update). This change would at most double the time
  spent on apply the transformations.

The constant application of `updateTransform` passes all reported failing
cases and resolves #1424 just as the original proposal of having the
change performed in the Sprite postUpdate but will work more consistently
across all scene-bound game objects.

On a desktop Chrome browser the inclusion also has minimal relative impact
as shown by the summarized results. The percentages given are the summed
CPU time of relevant required operations along with that of the
updateTransform itself:

- 10,000 non-collision particles:
  - 12% pre/post update, 2.4% updateTransform
- 100 colliding particles:
  - 2% pre/post update & collision, 0.3% updateTransform
- 1000 colliding particles:
  - 40% pre/post update & collision, 1% updateTransform

With this patch the updateTransform time does creep up _slightly_ (vs just
in `Sprite.postUpdate`) but it is still dominated by required game
updates, and more so, by any actual work like Physics.
2015-01-01 18:01:23 -08:00
photonstorm
ef610c7c10 Added init to State template class. 2014-12-17 13:07:19 +00:00
Richard Davey
091cb93ccd Merge pull request #1417 from pnstickne/wip-1410
Fixes #1410 where newChild.parent could be set to undefined before use
2014-12-11 21:52:55 +00:00
Richard Davey
9ef87ad395 Merge pull request #1428 from pnstickne/wip-1422-vertical-align
ScaleManager documentation updates
2014-12-10 17:16:46 +00:00
photonstorm
028943baad Moved the updateTransform to a Game level update on Stage and replaced the Pixi version.
Added a boolean check, so it can be either updated from updateLogic or render without duplicating the process.
#1424
2014-12-10 10:37:37 +00:00
Paul
6764517823 ScaleManager documentation updates
- Clarified proper usage of `pageAlignVertically` and add note about 2.2
  change and how to obtain 2.1 behavior.

- Removed the `@readonly` status of the `parentIsWindow` and `parentNode`;
  these can be updated in a controlled manner.

- Added intra-hyperlinks

- Updated some ancillary documentation
2014-12-08 18:06:26 -08:00
Paul
388ab1d98b Fix Full Screen launching in Android Chrome
The click trampoline added for IE prevents Chrome for Android from being
able to launch Full Screen mode with the default parameters for
`ScaleManger#startFullScreen`. (The desktop version of Chrome is not
affected.)

This fix adds an additional compatibility settings (`clickTrampoline`)
that can be used to configure when such is used. By default the
'when-not-mouse' mode is only enabled for Desktop browsers, where the
primary input is ubquitously a mouse.

There are no known breaking compatibility changes - the Full Screen should
be initiatable in Chrome for Android as it was in 2.1.x. The default
Android browser does not support Full Screen.
2014-12-06 12:30:40 -08:00
Paul
fe8c5021fa Fixes #1410
As pointed out, `newChild.parent` could be accessed after it was set to
undefined. This fix unifies the code from the various `destroy` methods so
the previou issue does not occur.
2014-12-05 19:34:17 -08:00
photonstorm
3371f9ff1e Added Game.debug reset method for when the debug manager is disabled (thanks @DanielSitarz #1407) 2014-12-03 20:56:39 +00:00
photonstorm
84e845db71 Various doc fixes. 2014-12-03 03:19:25 +00:00
photonstorm
3018eaece9 Setting forceMinimumDocumentHeight default to false. This is an iOS edge-case and messes with desktop browsers.
Fix #1399
2014-12-02 14:37:07 +00:00