Remove recalculation of tile bounds from arcade physics

This commit is contained in:
Michael Hadley 2018-01-16 19:03:13 -06:00
parent d1cd5cbc1d
commit 814e5af815
3 changed files with 6 additions and 12 deletions

View file

@ -55,7 +55,7 @@ var SeparateTile = function (i, body, tile, tileWorldRect, tilemapLayer, tileBia
{
if (faceHorizontal)
{
ox = TileCheckX(body, tile, tilemapLayer, tileBias);
ox = TileCheckX(body, tile, tileLeft, tileRight, tileBias);
// That's horizontal done, check if we still intersects? If not then we can return now
if (ox !== 0 && !TileIntersectsBody(tileWorldRect, body))
@ -66,14 +66,14 @@ var SeparateTile = function (i, body, tile, tileWorldRect, tilemapLayer, tileBia
if (faceVertical)
{
oy = TileCheckY(body, tile, tilemapLayer, tileBias);
oy = TileCheckY(body, tile, tileTop, tileBottom, tileBias);
}
}
else
{
if (faceVertical)
{
oy = TileCheckY(body, tile, tilemapLayer, tileBias);
oy = TileCheckY(body, tile, tileTop, tileBottom, tileBias);
// That's vertical done, check if we still intersects? If not then we can return now
if (oy !== 0 && !TileIntersectsBody(tileWorldRect, body))
@ -84,7 +84,7 @@ var SeparateTile = function (i, body, tile, tileWorldRect, tilemapLayer, tileBia
if (faceHorizontal)
{
ox = TileCheckX(body, tile, tilemapLayer, tileBias);
ox = TileCheckX(body, tile, tileLeft, tileRight, tileBias);
}
}

View file

@ -10,12 +10,9 @@ var ProcessTileSeparationX = require('./ProcessTileSeparationX');
* @param {Phaser.TilemapLayer} tilemapLayer - The tilemapLayer to collide against.
* @return {number} The amount of separation that occurred.
*/
var TileCheckX = function (body, tile, tilemapLayer, tileBias)
var TileCheckX = function (body, tile, tileLeft, tileRight, tileBias)
{
var ox = 0;
var tileLeft = tilemapLayer.tileToWorldX(tile.x);
var tileWidth = tile.width * tilemapLayer.scaleX;
var tileRight = tileLeft + tileWidth;
if (body.deltaX() < 0 && !body.blocked.left && tile.collideRight && body.checkCollision.left)
{

View file

@ -10,12 +10,9 @@ var ProcessTileSeparationY = require('./ProcessTileSeparationY');
* @param {Phaser.TilemapLayer} tilemapLayer - The tilemapLayer to collide against.
* @return {number} The amount of separation that occurred.
*/
var TileCheckY = function (body, tile, tilemapLayer, tileBias)
var TileCheckY = function (body, tile, tileTop, tileBottom, tileBias)
{
var oy = 0;
var tileTop = tilemapLayer.tileToWorldX(tile.y);
var tileHeight = tile.height * tilemapLayer.scaleY;
var tileBottom = tileTop + tileHeight;
if (body.deltaY() < 0 && !body.blocked.up && tile.collideDown && body.checkCollision.up)
{