Richard Davey
811ed0e340
Dynamic and Static both now extend the Base Body.
2019-03-26 16:51:15 +00:00
Richard Davey
2e5e438ec4
Added a new Base Body class to extend from. Saves a lot of duplication.
2019-03-26 16:51:01 +00:00
Richard Davey
5bb2161d49
Fixed issue with non zero origins
2019-03-26 15:29:58 +00:00
Richard Davey
ab2f489c5a
Renamed ambiguous movingX/Y
, also broke out moveX
to checkX
and tidied up more
2019-03-26 13:07:57 +00:00
Richard Davey
0b8fb1a21e
Much better hard blocking flag sets
2019-03-26 13:07:25 +00:00
Richard Davey
d942d28a81
Swap to use canMove and also new moveX/Y methods
2019-03-26 13:07:04 +00:00
Richard Davey
5242a62221
Comment out logs
2019-03-26 13:06:45 +00:00
Richard Davey
469b74b489
Handle single face intersects
2019-03-26 13:06:26 +00:00
Richard Davey
b7f1888549
Work out the dominant face even if not intersecting, or if perfectly aligned
2019-03-26 00:05:26 +00:00
Richard Davey
9b65f1bcc6
Moved sleep checks around
2019-03-26 00:05:09 +00:00
Richard Davey
108e2e5d7f
Added GravityX and reduced iterations to 1 for testing
2019-03-26 00:04:55 +00:00
Richard Davey
c58526fc74
Tidying up and resolving fractional comparisons
2019-03-25 17:25:39 +00:00
Richard Davey
7171d95578
Log out some test data
2019-03-25 17:25:25 +00:00
Richard Davey
c8ec524068
Debug tests
2019-03-25 17:25:17 +00:00
Richard Davey
74be0955ca
Lots of small tweaks
2019-03-25 17:25:11 +00:00
Richard Davey
e83db95f77
Use ColInfo
2019-03-25 17:25:03 +00:00
Richard Davey
075e030fb1
Zero out fractional intersections
2019-03-25 17:24:48 +00:00
Richard Davey
17d4600f2f
Updating separate method
2019-03-25 12:56:01 +00:00
Richard Davey
21df050e88
Works using ColInfo object now
2019-03-25 12:55:52 +00:00
Richard Davey
df55ffd32a
Lots of little fixes
2019-03-25 12:55:41 +00:00
Richard Davey
3e499831cc
Added functions for left / right checks
2019-03-25 12:55:31 +00:00
Richard Davey
8c825692af
Added most interesting face result
2019-03-25 12:55:18 +00:00
Richard Davey
eec2f4cac1
Single functions to handle the data
2019-03-25 12:55:08 +00:00
Richard Davey
e976721321
Start of the update to make it work across both axis
2019-03-24 23:31:31 +00:00
Richard Davey
d3460ba20f
Only needs CollisionInfo
2019-03-24 23:31:20 +00:00
Richard Davey
94bebab24d
Silence logs for now
2019-03-24 23:31:11 +00:00
Richard Davey
9dcd3569b4
Added new X axis functions
2019-03-24 23:30:57 +00:00
Richard Davey
1f07eaa79f
Testing rideable bodies
2019-03-24 23:30:38 +00:00
Richard Davey
e017691c68
The ScaleMode
Component has been removed from every Game Object, and along with it the scaleMode
property and setScaleMode
method. These did nothing anyway as they were not hooked to the render pipeline and scale mode should be set on the texture, not the Game Object. Fix #4413
2019-03-24 23:07:27 +00:00
Richard Davey
a85e6283ec
All of the Arcade Physics Components are now available directly under the Phaser.Physics.Arcade.Components
namespace. Fix #4440
2019-03-24 22:51:34 +00:00
Richard Davey
427019ab53
Tidied it all up. Refactored down into smaller function.
2019-03-22 19:08:08 +00:00
Richard Davey
3cba010a28
Removed un-used properties
2019-03-22 19:07:52 +00:00
Richard Davey
c86ff4c7c7
Silence logs
2019-03-22 19:07:41 +00:00
Richard Davey
766e0eb210
Don't need these properties any more
2019-03-22 19:07:30 +00:00
Richard Davey
4f0a9ba01d
Better immovable handling
2019-03-22 19:07:19 +00:00
Richard Davey
de08c9b0db
Removed lots of un-used vars and added 'rideable' support
2019-03-22 19:07:06 +00:00
Richard Davey
b48247dada
Body now wakes from direct velocity property modification
2019-03-22 15:01:47 +00:00
Richard Davey
ad9a0fad00
Fixed body waking situations
2019-03-22 14:48:00 +00:00
Richard Davey
cf504ac9c2
Body.setVelocity
was cause the speed
property to be set to NaN
if you didn't provide a y
argument.
2019-03-22 13:16:37 +00:00
Richard Davey
bef0b163a2
Clear snapTo
2019-03-22 12:50:28 +00:00
Richard Davey
34ed8f0b5a
Remove log
2019-03-22 12:50:21 +00:00
Richard Davey
4d4c5353ec
Added World positionIterations property to help settle busy scenes
2019-03-22 12:18:34 +00:00
Richard Davey
7c5f6adfe8
Don't apply the force until postUpdate - resolves all issues with body spacing :)
2019-03-22 11:34:23 +00:00
Richard Davey
963ed11cb4
Fixed getMove flow
2019-03-22 02:39:10 +00:00
Richard Davey
06acf492bc
Refactored getMoveY
2019-03-22 02:29:48 +00:00
Richard Davey
026c2049c0
Commented out a few logs
2019-03-22 02:29:34 +00:00
Richard Davey
813e135f72
Pass on the hardblock state
2019-03-22 01:58:36 +00:00
Richard Davey
ec67d02b21
Blockers is now a face array and added hardBlocked support
2019-03-22 01:17:32 +00:00
Richard Davey
18333f9ec7
Set hard blocking
2019-03-22 01:17:14 +00:00
Richard Davey
ae89e44364
New debug colors
2019-03-22 01:16:54 +00:00
Richard Davey
19bfe38d04
Resolved issue with bounds penetration (finally)
2019-03-21 23:21:02 +00:00
Richard Davey
9ac70e32b0
Now using CollisionInfo (and more debugging)
2019-03-21 17:25:01 +00:00
Richard Davey
21ca1abe00
Gravity application test
2019-03-21 17:24:47 +00:00
Richard Davey
9cabcd5d73
Tidying up
2019-03-21 17:24:34 +00:00
Richard Davey
212e8caba2
Now using CollisionInfo
2019-03-21 17:24:26 +00:00
Richard Davey
977e3b0ac3
Exposed IntersectsRects
2019-03-21 17:24:14 +00:00
Richard Davey
eae681bda2
Added new CollisionInfo handler
2019-03-21 17:24:03 +00:00
Richard Davey
0005cf590e
Resolved bounds sleep issue
...
Now to create collision info objects for sleep settling.
2019-03-21 11:31:05 +00:00
Richard Davey
6a145049b1
Testing issue with sticky bodies
2019-03-21 01:02:38 +00:00
Richard Davey
1518f49c23
Finally traced down the culprit. Now to resolve.
2019-03-20 17:14:44 +00:00
Richard Davey
1383aba08e
Hide some logs
2019-03-20 17:14:31 +00:00
Richard Davey
a0fc1ca3cc
Tidying up
2019-03-20 17:14:21 +00:00
Richard Davey
792f458e32
Better "is moving" handling
2019-03-20 15:00:17 +00:00
Richard Davey
93f012d3e3
Frame counter. Handy for debuggin.
2019-03-20 15:00:05 +00:00
Richard Davey
0f59b326f6
Sleeping can now force a position
2019-03-20 14:59:53 +00:00
Richard Davey
ec1b765833
Logging to figure out sleeping in the air
2019-03-20 10:41:06 +00:00
Richard Davey
1c81425771
Add forceY arguments
2019-03-20 10:40:32 +00:00
Richard Davey
bfdd039bf4
Don't force body position at this point
2019-03-20 10:40:19 +00:00
Richard Davey
290ef210f4
Doh, sqrt returns positive. Math.abs our velocities
2019-03-20 10:20:02 +00:00
Richard Davey
022ce80333
Fixed 'moves' assignment and added min velocity support
2019-03-20 04:07:58 +00:00
Richard Davey
bf25e424f0
Added support for minVelocity and fixed zero gravity rebound issue
2019-03-20 04:06:53 +00:00
Richard Davey
81e2851b37
Moved sleeping to new function and made stronger
2019-03-20 01:28:00 +00:00
Richard Davey
5dcd844701
Added world blocked debug color
2019-03-20 00:08:23 +00:00
Richard Davey
87e9f8e62d
Don't reforce a forced position
2019-03-20 00:02:16 +00:00
Richard Davey
1e5c2ea0fc
Reworked blocker handling
2019-03-20 00:02:04 +00:00
Richard Davey
fcd7f25091
Preparing to swap for isBlocked checks
2019-03-19 23:21:59 +00:00
Richard Davey
68c8bd3af2
Removed logs array and tidying up the flow
2019-03-19 23:21:48 +00:00
Richard Davey
7a602ab105
Removed logs and added blockers
2019-03-19 23:21:35 +00:00
Richard Davey
0cef93134f
Set blocker, not world blocker
2019-03-19 23:21:23 +00:00
Richard Davey
6462e18527
Gravity vars
2019-03-19 23:21:06 +00:00
Richard Davey
8373936896
Removing need for sqrts when mass is the same
2019-03-19 00:27:26 +00:00
Richard Davey
d59617a627
Never ending debugging ahoy.
2019-03-18 17:17:59 +00:00
Richard Davey
5485c07b32
Fixed world gravity rebound
2019-03-18 14:55:54 +00:00
Richard Davey
df0c76569f
Added world rebounds handler
2019-03-18 14:12:52 +00:00
Richard Davey
4e993ce296
Much better seperation code and testing block exchange
2019-03-18 14:12:40 +00:00
Richard Davey
728a6da8e6
Gravity stored in properties. Intersects padding removed.
2019-03-18 14:12:12 +00:00
Richard Davey
1306ad2f4a
Splitting up the process of checking and separating, merging results back into Body
...
Body now tracks previously blocked so it can test block status before update happens.
2019-03-18 08:08:46 +00:00
Richard Davey
01ddf26662
Optimizing code out
2019-03-15 19:22:51 +00:00
Richard Davey
f555757032
Refined soft blocks vs. hard blocks
2019-03-15 19:22:42 +00:00
Richard Davey
2e63be9dd8
Added setWorldBlocked methods
2019-03-15 19:22:32 +00:00
Richard Davey
7e6efb342e
Only apply gravity if not blocked and use new intersects method
2019-03-15 19:22:13 +00:00
Richard Davey
edf1b57c17
New Intersects method as it's used in multiple places
2019-03-15 19:21:54 +00:00
Richard Davey
3e967ab300
Move sleep iterations to property and add wake method
2019-03-15 13:31:57 +00:00
Richard Davey
1fc476d738
Wake-up sleeping bodies on impact
2019-03-15 13:31:40 +00:00
Richard Davey
9500fbc97c
No gravity for sleeping bodies
2019-03-15 13:31:26 +00:00
Richard Davey
e93c40ddb1
Set forcePosition flag
2019-03-15 12:54:25 +00:00
Richard Davey
bdde075643
Implemented sleeping and much better debug drawing
2019-03-15 12:53:59 +00:00
Richard Davey
ae93accf2e
Added the new debug colors to the World defaults
2019-03-15 12:52:55 +00:00
Richard Davey
b635458ebb
More resting tests
2019-03-14 17:20:47 +00:00
Richard Davey
a74feee87d
Use local var
2019-03-14 17:20:31 +00:00
Richard Davey
54612b55fb
Adding flip flop test
2019-03-14 14:52:07 +00:00
Richard Davey
07eea60143
Removed wasBlocked and tidied up
2019-03-14 14:16:25 +00:00
Richard Davey
a605ad8d0c
Handle nonn intersects aborts
2019-03-14 14:16:15 +00:00
Richard Davey
343964dd3a
Removed debug stuff and fixed array vs. array iteration
2019-03-14 14:15:58 +00:00
Richard Davey
3b53057257
Fixed prev distance calculation + added intersects check
2019-03-14 14:15:43 +00:00
Richard Davey
dc31e39e01
Pushing to carry on debugging at home
2019-03-13 17:27:11 +00:00
Richard Davey
9ad4ed6d8f
Overlap sharing implemented, allowing bounce to work again
2019-03-13 02:27:51 +00:00
Richard Davey
e42936314c
Test previous difference too, to mitigate tunneling
2019-03-13 02:27:11 +00:00
Richard Davey
395e4d0554
Cache vars
2019-03-13 02:26:52 +00:00
Richard Davey
5b4b2d2fa9
Fixed issue re: would bounce
2019-03-11 22:47:59 +00:00
Richard Davey
24921d653b
Added body filtering back
2019-03-11 22:47:48 +00:00
Richard Davey
b228e23dfd
Added blocked debug
2019-03-11 17:28:43 +00:00
Richard Davey
afd1dac03c
Move flag responsibility back in
2019-03-11 17:28:23 +00:00
Richard Davey
3ab9da8f04
Test just Y for now
2019-03-11 17:27:55 +00:00
Richard Davey
dea9a06dd2
Reworked the logic to reduce quantity of flags
2019-03-11 17:27:29 +00:00
Richard Davey
59859e93a7
Reset velocity on world bounds and blocked by setting
2019-03-11 12:26:58 +00:00
Richard Davey
f8b59e3e14
Added embedded check
2019-03-11 12:26:23 +00:00
Richard Davey
1d5dbb960a
A Body can only be blocked by 1 object per frame
2019-03-11 12:26:11 +00:00
Richard Davey
09cb8db2d8
Removed logging
2019-03-11 11:05:58 +00:00
Richard Davey
70f6484716
Flag swizzles ahoy
2019-03-11 11:05:51 +00:00
Richard Davey
932f70cea2
Removed logging and handled bounds collision
2019-03-11 11:05:42 +00:00
Richard Davey
89e33ae53e
Testing. Please do not use this build, it will break AP.
2019-03-11 09:19:41 +00:00
Richard Davey
9db9511bf1
Working on new blocked flag setting
2019-03-08 20:12:49 +00:00
Richard Davey
e27196ce52
Removed responsibility for flag setting from overlay, also return a value all the time, not just in motion
2019-03-08 20:11:27 +00:00
Richard Davey
e1f9e31e9f
Added setTouching and setBlocked methods + refactored the way world bounds collision is done
2019-03-08 20:10:49 +00:00
Richard Davey
08d4961aab
Allow to pass in a single array to check against itself
2019-03-08 20:09:18 +00:00
Richard Davey
e5fbe13649
Updated docs
2019-03-08 19:54:46 +00:00
Richard Davey
8839ab1c0e
Added the new overlapRect
method.
2019-03-07 15:16:31 +00:00
Richard Davey
8e872fcb51
Fixed closest and furthest when the RTree is disabled
2019-03-07 14:13:45 +00:00
Richard Davey
d36ada0386
Added collideTiles
and overlapTiles
to AP.
2019-03-07 13:36:15 +00:00
Richard Davey
0ee2442597
Bumping to 3.17.0
2019-03-07 12:31:06 +00:00
Richard Davey
95d47a429d
Tidying up
2019-03-05 14:46:41 +00:00
Richard Davey
8167d6d305
New isLayer handling
2019-03-05 14:43:20 +00:00
Richard Davey
d160df3194
Removed late
Set, optimized step process and added overlapTiles
and collideTile
methods.
2019-03-05 14:42:15 +00:00
Richard Davey
6095ab0ef6
Split the Body step up into preUpdate, update and postUpdate. Also tidied up the postUpdate method.
2019-03-05 14:17:57 +00:00
sky-coding
bab6a0bd69
remove erroneous doc comment parameter
2019-02-20 20:48:09 -08:00
Richard Davey
0479badd6e
Properties are optional
2019-02-13 17:20:10 +00:00
Richard Davey
3bb73c5664
Fixed Group defs and completed Arcade Physics defs
2019-02-13 14:45:36 +00:00
Richard Davey
e7b1d086e7
Moving all of the typedefs to properly namespaced scopes, rather than globals
...
\o/ ~ "Someone, save me!"
2019-02-13 12:35:12 +00:00
Richard Davey
b50e1c78b5
Lots more jsdoc tweaks and improvements
2019-02-12 15:01:54 +00:00
Richard Davey
dc73993fe2
Added jsdoc version numbers
2019-02-12 12:22:25 +00:00
Richard Davey
ccaae460a4
Added jsdoc version numbers to each event
2019-02-12 11:37:58 +00:00
Richard Davey
0b4dc5f037
Should be a config setter.
2019-02-04 21:50:55 +00:00
Richard Davey
60542a25cc
Numerous jsdoc and TS related fixes
2019-02-04 17:16:08 +00:00
Richard Davey
4f6f6ee72f
Lots of jsdoc and type fixes
2019-01-31 12:19:01 +00:00
Richard Davey
ebe4af217c
lint fix
2019-01-24 00:30:44 +00:00
Richard Davey
cf2095f0c8
The Arcade Physics Body has a new property maxSpeed
which limits the vector length of the Body velocity. You can set it via the method setMaxSpeed
and it is applied in the World.computeVelocity
method
2019-01-24 00:26:29 +00:00
Richard Davey
4c24799eac
Arcade Physics could trigger a collide
event on a Body even if it performing an overlap check, if the onCollide
property was true
2019-01-18 16:16:14 +00:00
Richard Davey
7237277abe
Merge pull request #4287 from samme/fix/arcade-body-deltas
...
Queue 'late' colliding bodies for a second update
2019-01-18 16:03:36 +00:00
Richard Davey
1eccff1e3b
Fixed jsdoc links and markdown bullet lists
2019-01-18 15:20:56 +00:00
Richard Davey
bc962c25dc
All listeners use the new Events
2019-01-18 13:41:43 +00:00
Richard Davey
5494f6ac79
Arcade Physics Events
2019-01-17 14:04:36 +00:00
Richard Davey
aa341854c7
Happy New Year
2019-01-15 16:20:22 +00:00
Richard Davey
49c2868746
All default width/height values are now taken from the Scale Manager, not the Game Config
2019-01-11 15:57:57 +00:00
samme
87bd2e68d3
Queue 'late' colliding bodies for a second update
...
- Fixes #4154
- Fixes #4284
2019-01-09 12:56:32 -08:00
Artem Kuskis
24d3406b7d
Fix circles collision
2019-01-05 11:26:03 +03:00
Francois
03aa16531d
Make customBoundsRectangle available in the physics group
2018-12-15 22:52:12 +01:00
Francois
7033297aa3
Use a custom bounds rectangle for the Arcade Body to overwrite the world bounds
2018-12-15 22:08:09 +01:00
Richard Davey
af5b1f2427
StaticBody.reset
in Arcade Physics would ignore the x
and y
values given to it. If given, they're now used to reset the parent Game Object before the body is updated. Fix #4224
2018-12-12 12:39:47 +00:00
Richard Davey
1a407bc4f5
ArcadePhysics.Body.destroy
will now only add itself to the World pendingDestroy
list if the world property exists. This prevents Cannot read property 'pendingDestroy' of undefined
errors if you try to delete a physics body in a callback and then immediately change Scene (which tells the physics work to also delete all bodies)
2018-12-06 14:47:06 +00:00
Richard Davey
c1771ecdac
Merge branch 'master' of https://github.com/photonstorm/phaser
2018-11-20 11:02:31 +00:00
Richard Davey
8cd45a72b2
ESLint fixes
2018-11-20 11:02:19 +00:00
Richard Davey
96b9db5cb7
Merge pull request #4150 from samme/docs/misc
...
Docs updates
2018-11-20 10:45:54 +00:00
Richard Davey
f06bb3d420
Formatting fix
2018-11-20 10:21:02 +00:00
Mike Thomas
a3965cb609
issue/4168 draw circular StaticBody as circle in drawDebug
2018-11-16 17:43:53 +01:00
samme
b5a2d9d0cf
Docs for Arcade Physics
...
Minor additions/corrections
2018-11-07 09:43:43 -08:00
samme
7ff8d51f98
Docs for input and physics events
2018-10-24 12:14:44 -07:00
Richard Davey
0b3d54a198
Added jsdocs
2018-10-19 18:29:36 +01:00
Richard Davey
a083318e02
Added lots of missing jsdocs
2018-10-19 17:45:05 +01:00
Richard Davey
772159d8f0
Merge pull request #4118 from pierpo/patch-1
...
Fix issue with null config in Arcade PhysicsGroup constructor
2018-10-19 13:43:18 +01:00
Richard Davey
f26c869c61
Merge pull request #4069 from samme/feature/drawDebug
...
Use defaultStrokeWidth in Arcade.Body#drawDebug()
2018-10-19 13:27:45 +01:00
Richard Davey
16d297746d
Merge pull request #4122 from samvieten/patch-2
...
JSDocs wrong Boolean on checkCollision description
2018-10-19 13:16:18 +01:00
Richard Davey
4c4421c47f
Docjam merge
2018-10-19 12:32:43 +01:00
sam
467f165bf4
JSDocs wrong Boolean on checkCollision description
...
L647 "checkCollision.none = false to disable collision checks" this is false way description, changed to "= true"
As of pull request: photonstorm/phaser3-docs#75
2018-10-19 06:42:25 +08:00
Pierre Poupin
63458ab336
Fix issue with null config in PhysicsGroup constructor
2018-10-17 01:13:18 +02:00
Richard Davey
a043cc88ea
Changed version number
2018-10-12 18:32:52 +01:00
Richard Davey
a9938baec6
Merge pull request #4070 from samme/feature/arcade-group-config-enable
...
Add PhysicsGroupConfig.enable, Arcade.Body#setEnable()
2018-10-12 18:29:58 +01:00
Richard Davey
4b1c762296
Updated @memberOf to @memberof
2018-10-10 10:49:13 +01:00
Richard Davey
a9063604dc
Replace @readOnly with @readonly
2018-10-09 13:40:00 +01:00
Richard Davey
e297b3272e
Added hundreds of new jsdoc descriptions
2018-10-01 11:35:01 +01:00
samme
69ff71e0bd
Add description for PhysicsGroupDefaults.setEnable
2018-09-29 14:09:05 -07:00
samme
5f4f5e6cfc
Merge branch 'master' into feature/arcade-group-config-enable
2018-09-29 14:07:09 -07:00
Richard Davey
3c4e6cda80
Arcade Physics shutdown
will check to see if the world instance still exists and only try removing it if so. This prevents errors when stopping a world and then destroying it at a later date.
2018-09-29 11:21:41 +01:00
Richard Davey
c237209bb8
Added new jsdocs
2018-09-28 12:19:21 +01:00
Richard Davey
37076516e2
Merge branch 'master' into docs/arcade-physics-2
2018-09-28 11:07:44 +01:00
Richard Davey
818a28073f
Added jsdocs
2018-09-28 11:04:19 +01:00
samme
adb2181a8a
Add docs for groups and Arcade.Factory
2018-09-26 12:25:09 -07:00
samme
536555236f
Add PhysicsGroupConfig.enable, Arcade.Body#setEnable()
2018-09-26 10:25:45 -07:00
samme
5d38357533
Use defaultStrokeWidth in Arcade.Body#drawDebug()
2018-09-26 09:50:48 -07:00
Richard Davey
8cc7650f8c
Arcade Physics Bodies will now sync the display origin of the parent Game Object to the body properties as part of the updateBounds
call.
2018-09-26 17:15:22 +01:00
samme
6a8e5d2082
Correct descriptions for customSeparateX, customSeparateY
2018-09-25 13:25:47 -07:00
samme
817720b42c
Correct description for Arcade.Body#maxVelocity
2018-09-24 16:58:00 -07:00
samme
31175ae61f
Correct overlapCallback
argument name
2018-09-24 16:52:15 -07:00
Richard Davey
89b9f42f3e
Adding jsdocs
2018-09-24 23:20:43 +01:00
samme
2a51d6b70f
Arcade Physics docs revisions
2018-09-24 12:12:56 -07:00
Richard Davey
a6e650f26f
Merge pull request #4006 from samme/docs/arcade-image-body
...
Correct types for ArcadeImage#body, ArcadeSprite#body
2018-09-04 12:23:26 +01:00
Richard Davey
7c55e65543
Arcade Physics Body deltaX
and deltaY
methods will now return the previous steps delta values, rather than zero. Fix #3987
2018-09-04 12:16:24 +01:00
Richard Davey
3d989e136f
Arcade Physics World collideSpriteVsTilemapLayer
now syncs the collision results back to the body, allowing you to call collide
from within an update loop once again. Fix #3999
2018-09-04 12:12:51 +01:00
samme
c0e141513c
Correct types for ArcadeImage#body, ArcadeSprite#body
2018-09-02 14:45:39 -07:00
Richard Davey
00a31d2d88
Updated docs. Close #3997
2018-09-01 10:14:22 +01:00