Нет загрузчика для типа: Модель? - PullRequest
0 голосов
/ 02 января 2019

Итак, я преобразовал модель в .g3db и все заработало нормально. Но после некоторого очень простого рефакторинга кода LibGDX жалуется, что есть no loader for type: Model.

Рабочий код:

public GameScene(AssetManager assetManager) {
    this.assetManager = assetManager;
    modelBatch = new ModelBatch();
    initEnvironment();
    initCamera();

    // Here I load the image with the passed assetmanager
    loadAssets();
}

private void loadAssets() {
    // Following line works
    assetManager.load("data/cube.g3db", Model.class);
    assetManager.finishLoading();

    Model ship = assetManager.get("data/cube.g3db");
    ModelInstance shipInstance = new ModelInstance(ship);
    instances.add(shipInstance);
}

Afaik Я делаю то же самое в следующем коде, и я не понимаю, почему он не работает.

public DynamicScene(AssetManager assetManager) {
    this.assetManager = assetManager;

    modelBatch = new ModelBatch();
    initEnvironment();
    initCamera();

    ball = new Ball(assetManager);
}

// Ball constructor
public Ball(AssetManager assetManager) {
    this.assetManager = assetManager;
    loadModel();
}

private void loadModel() {
    // Following line fails
    assetManager.load("data/ball.g3dp", Model.class);
    // Also fails when loading the same model as working example:
    assetManager.load("data/cube.g3dp", Model.class);

    assetManager.finishLoading();

    Model ball = assetManager.get("data/ball.g3db");
    ballModel = new ModelInstance(ball);

    ballModel.transform.setToTranslation(0, 10, 0);
}

Оба начальных класса передаются new AssetManager() своему конструктору из основного класса.

@Override
public void create () {
    //gameScene = new GameScene(new AssetManager());
    dynamicScene = new DynamicScene(new AssetManager());
}

Переключение обратно на рабочую версию всегда выполняется успешно, запуск нижней версии всегда дает сбой.

...