Карта, созданная с помощью Tiled, создает исключение BufferOverflowException в OrthoCachedTiledMapRenderer - PullRequest
0 голосов
/ 09 октября 2018

У меня есть полностью рабочий проект для Приключенческой игры, но если я изменю плиточную карту (которую я создал с помощью Tiled), она генерирует исключение BufferOverflowException.

Exception in thread "LWJGL Application" java.nio.BufferOverflowException
at java.nio.DirectFloatBufferU.put(DirectFloatBufferU.java:363)
at com.badlogic.gdx.graphics.g2d.SpriteCache.add(SpriteCache.java:259)
at com.badlogic.gdx.maps.tiled.renderers.OrthoCachedTiledMapRenderer.renderTileLayer(OrthoCachedTiledMapRenderer.java:353)
at com.badlogic.gdx.maps.tiled.renderers.OrthoCachedTiledMapRenderer.render(OrthoCachedTiledMapRenderer.java:132)
at entities.TilemapActor.draw(TilemapActor.java:76)
at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:110)
at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:57)
at com.badlogic.gdx.scenes.scene2d.Stage.draw(Stage.java:128)
at screen.BaseScreen.render(BaseScreen.java:51)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)

Итак, вот ничья ()-Метод TilemapActor, где генерируется исключение:

public void draw(Batch batch, float parentAlpha) {
    //adjust tiled camera to be stay in sync with the game camera
    Camera mainCamera = getStage().getCamera();
    tiledCamera.position.x = mainCamera.position.x;
    tiledCamera.position.y = mainCamera.position.y;
    tiledCamera.update();
    tiledMapRenderer.setView(tiledCamera);

    //ned to force the batch order otherwise it is batched and redered last
    batch.end();
    tiledMapRenderer.render();
    batch.begin();
}

И, наконец, метод render () - Метод из класса BaseScreen:

public void render(float dt) {
    uiStage.act(dt);
    mainStage.act(dt);

    update(dt);

    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    mainStage.draw();
    uiStage.draw();
}

Моя мозаичная карта - 60 * 60плитки с размером плитки 16 * 16, поэтому вся карта имеет размер 960 * 960 пикселей.

Работающая карта имеет размер 40 * 40 плиток с размером плитки 32 * 32, так что это 1280 * 1280 пикселей.

Я не понимаю, почему работает большая карта, а маленькая - нет.Буду признателен за любую помощь.

С уважением

DKJ1337

...