diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/src/main/java/kz/ilotterytea/frogartha/screens/MenuScreen.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/core/src/main/java/kz/ilotterytea/frogartha/screens/MenuScreen.java b/core/src/main/java/kz/ilotterytea/frogartha/screens/MenuScreen.java index c492ff6..2e30527 100644 --- a/core/src/main/java/kz/ilotterytea/frogartha/screens/MenuScreen.java +++ b/core/src/main/java/kz/ilotterytea/frogartha/screens/MenuScreen.java @@ -2,7 +2,10 @@ package kz.ilotterytea.frogartha.screens; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; +import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver; +import com.badlogic.gdx.graphics.Cubemap; import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.PerspectiveCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.math.Interpolation; import com.badlogic.gdx.scenes.scene2d.Actor; @@ -21,12 +24,19 @@ import kz.ilotterytea.frogartha.domain.RoomTopic; import kz.ilotterytea.frogartha.sessions.IdentityClient; import kz.ilotterytea.frogartha.sessions.SessionClient; import kz.ilotterytea.frogartha.ui.menu.RoomTopicWidget; +import net.mgsx.gltf.scene3d.scene.SceneManager; +import net.mgsx.gltf.scene3d.scene.SceneSkybox; +import net.mgsx.gltf.scene3d.utils.EnvironmentUtil; public class MenuScreen implements Screen { private FrogarthaGame game; private SessionClient session; private IdentityClient identity; + private PerspectiveCamera camera; + private SceneManager sceneManager; + private Cubemap environmentCubemap; + private Stage stage; private Table gameTable, topicTable, credentialsTable; @@ -39,6 +49,7 @@ public class MenuScreen implements Screen { identity = game.getIdentityClient(); createStage(); + create3D(); Gdx.input.setInputProcessor(stage); } @@ -48,6 +59,12 @@ public class MenuScreen implements Screen { Gdx.gl.glClearColor(0f, 0f, 0f, 1f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); + camera.rotate(2 * delta, 0, 1, 0); + camera.update(); + + sceneManager.update(delta); + sceneManager.render(); + stage.act(delta); stage.draw(); @@ -77,6 +94,7 @@ public class MenuScreen implements Screen { @Override public void resize(int width, int height) { stage.getViewport().update(width, height, true); + sceneManager.updateViewport(width, height); } @Override @@ -97,6 +115,8 @@ public class MenuScreen implements Screen { @Override public void dispose() { stage.dispose(); + sceneManager.dispose(); + environmentCubemap.dispose(); } private void createStage() { @@ -261,4 +281,26 @@ public class MenuScreen implements Screen { controlTable.add(rightGameControlTable).grow(); } + + private void create3D() { + sceneManager = new SceneManager(); + + camera = new PerspectiveCamera(100f, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); + camera.near = 1f; + camera.far = 300f; + camera.position.set(0f, 5f, 0f); + + camera.update(); + + sceneManager.setCamera(camera); + + environmentCubemap = EnvironmentUtil.createCubemap( + new InternalFileHandleResolver(), + "skyboxes/menu/", + ".png", + EnvironmentUtil.FACE_NAMES_NEG_POS + ); + + sceneManager.setSkyBox(new SceneSkybox(environmentCubemap)); + } } |
