public void move(Direction dir) {
		if(!isPerformingAction()) {
			Tile targetTile = level.getTile(tile, dir);
			if(targetTile.canEnter(this)) {
				setCurrentAction(Action.MOVE);
				facingDirection = dir;
				moveDirection = dir;
				moveToTile = targetTile;
				tile.onLeaving(this);
				onLeaving(tile);
				moveToTile.onEntering(this);
				onEntering(moveToTile);
			}
			else facingDirection = dir;
		}
		else {
			queuedAction = Action.MOVE;
			queuedMoveDirection = dir;
		}
	}