I've fixed the problem i was experiencing. Here's the code for anyone who needs it :)
var intersect = box.intersectsPoint(player.position);
if (intersect) {
var x = prevX,
z = prevZ,
slideSpeed = speed * 0.7;
for (var angle = 0; angle > -90; angle -= 1) {
x = prevX - Math.sin((direction - angle) * Math.PI / 180) * slideSpeed;
z = prevZ - Math.cos((direction - angle) * Math.PI / 180) * slideSpeed;
var intersect = box.intersectsPoint(new BABYLON.Vector3(x, player.position.y, z), true);
if (!intersect) {
break;
}
x = prevX - Math.sin((direction + angle) * Math.PI / 180) * slideSpeed;
z = prevZ - Math.cos((direction + angle) * Math.PI / 180) * slideSpeed;
var intersect = box.intersectsPoint(new BABYLON.Vector3(x, player.position.y, z), true);
if (!intersect) {
break;
}
}
player.position.x = x;
player.position.z = z;
}