public static Vector2f getRelativePosition(Vector2f position, Direction direction, float step) {
        switch (direction) {
            case NORTH:
                return Vector2f.sub(position, new Vector2f(0.0f, step));
            case SOUTH:
                return Vector2f.add(position, new Vector2f(0.0f, step));
            case WEST:
                return Vector2f.sub(position, new Vector2f(step, 0.0f));
            case EAST:
                return Vector2f.add(position, new Vector2f(step, 0.0f));
            case NORTH_WEST:
                return Vector2f.sub(position, new Vector2f(step, step));
            case NORTH_EAST:
                return Vector2f.add(position, new Vector2f(step, -step));
            case SOUTH_WEST:
                return Vector2f.add(position, new Vector2f(-step, step));
            case SOUTH_EAST:
                return Vector2f.add(position, new Vector2f(step, step));
            default:
                return null;
        }
    }