Commit graph

4071 commits

Author SHA1 Message Date
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
Paul
2bbbc64830 Device update for canvasBitBltShift - real
(Previous changeset not pushed correctly)
2015-01-01 17:38:22 -08:00
Paul
7213bb1b5e Device update for canvasBitBltShift
The `canvasBitBltShift` detection is updated not to pick up any iOS
browsers. This should eliminate false-positives for Chrome for iOS, eg.

Defaulting to using the double-copy is "safer", even if slightly less
optimal.

(A proper feature check should still be added.)
2015-01-01 16:16:13 -08:00
Richard Davey
725fe261be Merge pull request #1500 from pnstickne/wip-1494
Fix for Event changes
2015-01-01 22:25:48 +00:00
Paul
a070e8db8f Fix for Event changes
This replaces 'eval' with closures (that should have probably
been used to begin with) to avoid warnings generated by some tools.

This change does not affect the approach used.

- Ref. #1494
2015-01-01 13:50:07 -08:00
Richard Davey
da27373c90 Device.webAudio check inversed to avoid throwing a warning in Chrome. 2015-01-01 21:38:02 +00:00
Richard Davey
ebe2b35936 Updated license for 2015. 2015-01-01 12:53:04 +00:00
Richard Davey
3c4a9720c6 Body updateTransform patch re: #1493 and #1490 2015-01-01 12:33:43 +00:00
Paul
114d967272 TilemapLayer - quibbles
- Updated shiftCanvas usage for consistency with renderSetting access
2014-12-31 10:06:48 -08:00
Paul
76aa601d47 TilemapLayer rendering double-copy
- Memory optimization of delta-scroll shifting.
  - The copy canvas is shared between all TilemapLayers
  - The copy is done in segments to reduce the memory usage of the copy
  canvas. Currently this is a 1/4 ratio.

- Device has the feature (by browser) check to see if bitblt works
  - TilemapLayer will automatically enable the double-copy as needed
  - Device.whenReady can be used to override the device value
2014-12-31 09:54:37 -08:00
Paul
0ad21e3c84 Merge remote-tracking branch 'upstream/dev' into wip-tilelayer-safaribug 2014-12-30 23:07:55 -08:00
Richard Davey
765cab221b Merge pull request #1492 from jounii/float-math-fix
Fix floating point inaccuracy in edge cases, behavior not consistent
2014-12-29 13:47:53 +00:00
Jouni Airaksinen
11cf7c4923 Fix floating point inaccuracy in edge cases, behavior not consistent across different browsers and/or devices 2014-12-29 14:38:18 +02:00
nextht
18b3a3cc5b Remove useless initilization for tw and th code
tw and th have been initialized twice, the first time is useless.
2014-12-20 17:45:27 +08:00
Richard Davey
e51a37a4c6 Merge pull request #1473 from clark-stevenson/patch-1
Micro Update
2014-12-19 16:55:02 +00:00
Clark Stevenson
dfc44c5286 Micro Update
BitmapData methods should take a number as a blendMode not a string..  GameObjectFactory and GameObjectCreator image methods parameter key is optional.
2014-12-19 16:01:46 +00:00
photonstorm
70c9afec50 Fix #1468 2014-12-18 11:15:08 +00:00
photonstorm
fa40b3a7a9 Removed readyState check as it breaks overlapping sounds. 2014-12-18 11:14:45 +00:00
photonstorm
a6c6bf8e06 Time.reset would incorrectly reset the _started property, now maps it to Time.time (thanks @XekeDeath #1467) 2014-12-18 08:07:38 +00:00
nextht
aa80074ec1 Emitter.start should Setting quantity Not Adding
I think Emitter.start should Setting quantity Not Adding, maybe "+=" is a mistake?
2014-12-17 22:39:11 +08:00
photonstorm
013abfe956 Added Pixi 2.2.0 details to README. 2014-12-17 13:53:05 +00:00
photonstorm
eff9759f8c Updated to Pixi 2.2.0 release. 2014-12-17 13:50:28 +00:00
Tim van den Eijnden
0829bd0b28 Merge remote-tracking branch 'upstream/master' 2014-12-17 14:45:16 +01:00
photonstorm
c6c5856dec Phaser.Graphics.drawCircle now overrides PIXI.drawCircle which means the docs are now correct re: diameter not radius (thanks @ethankaminski #1454) 2014-12-17 13:44:12 +00:00
photonstorm
f23c0aa24b Removed redundant tolerance parameter from Rectangle.intersects (thanks @toolness #1463) 2014-12-17 13:25:21 +00:00
photonstorm
ef610c7c10 Added init to State template class. 2014-12-17 13:07:19 +00:00
photonstorm
269af69da5 Added extra checks to Sound.play to stop it throwing DOM Exception Error 11 if the sound.readyState wasn't set or the sound was invalid. Also wrapped stop() call in a try catch`. 2014-12-17 13:07:19 +00:00
Richard Davey
2641e2ec75 Merge pull request #1462 from aressler38/dev
Support BLOB urls for audio files
2014-12-15 23:16:21 +00:00
aressler38
c9984633b5 fixing documentation typo 2014-12-15 14:12:09 -08:00
aressler38
f1bdd174b2 [ISSUE 1458] Allow BLOB urls when loading audio files 2014-12-15 12:57:30 -08:00
aressler38
5f12e18aa0 Merge branch 'dev' of https://github.com/aressler38/phaser into dev 2014-12-15 12:08:24 -08:00
photonstorm
9b967d1948 Removed a few more references in Animation.destroy. 2014-12-15 09:42:18 +00:00
photonstorm
5029427e14 Tween.stop fired a different set of onComplete parameters to Tween.update. Both now dispatch onComplete(target, tween) as the parameters in that order (thanks @P0rnflake #1450) 2014-12-15 09:42:18 +00:00
Richard Davey
d9229a2505 Merge pull request #1459 from pnstickne/wip-1456
RandomDataGenerator seeding fix
2014-12-15 09:32:25 +00:00
Paul
b3808890b2 RandomDataGenerator seeding fix
Per https://github.com/photonstorm/phaser/issues/1457 the `sow` function
terminates too early on certain false-y values including 0 (and possibly
"").

This changes that, so that 1) only `undefined` and `null` will terminate
the seed sequence processing (this is to maximize backwards compatibility)
and 2) the `length` of the array is honored.

The documentation also reflects the old (and new/altered) behavior.

This is very minor breaking change; hopefully such is mitigated with
leaving in the null/undefined termination.
2014-12-15 00:18:23 -08:00
Paul
466b021ca0 TilemapLayer: Re-added secondary copy-canvas
- This change uses a secondary canvas and rectangle clearing instead of a
  'copy' composition on the same canvas. This should hopefully address
  the flickering issue in Safari and Safari Mobile
2014-12-12 00:26:49 -08:00
photonstorm
965fbc96e7 Typo fixes :) 2014-12-11 22:30:24 +00:00
photonstorm
3c564a33b6 The P2 World constructor wouldn't let you use your own config unless you specified both the gravity *and* broadphase. Now allows one or both (thanks @englercj #1412) 2014-12-11 22:04:45 +00:00
photonstorm
93e0d2f3b1 Docs update. 2014-12-11 22:00:06 +00:00
photonstorm
4abb1550d7 P2.postBroadphaserHandler updated to avoid skipping final 2 pairs. 2014-12-11 22:00:06 +00:00
Richard Davey
bc1a24e970 Merge pull request #1429 from pnstickne/wip-1400
DOM.visualBounds now includes scrollbars
2014-12-11 21:58:55 +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
photonstorm
0cd0a5bd9b Phaser 2.2.3 Build Files for testing. 2014-12-11 09:26:14 +00:00
Richard Davey
46776956e0 Merge pull request #1440 from paul-reilly/dev
TilemapParser: fixed check for image collection
2014-12-10 23:10:53 +00:00
paul-reilly
ce603c3510 TilemapParser: fixed check for image collection 2014-12-10 22:42:17 +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
Richard Davey
b7df5b321e Merge pull request #1427 from pnstickne/wip-1426-emitter-docs
Corrected link to the Emitter documentation
2014-12-10 17:16:20 +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
92a20a5f5f TileLayer - globalCompositionOperation set once
This might fix a safari issue; it also avoids repeatedly setting the
[same] composition operation and saving/loading context states.
2014-12-09 20:21:31 -08:00
photonstorm
4ad6df9a29 A test to try for #1424 2014-12-09 23:38:23 +00:00