Итак, я преобразовал модель в .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());
}
Переключение обратно на рабочую версию всегда выполняется успешно, запуск нижней версии всегда дает сбой.