com.badlogic.gdx.tests.lwjgl3.Lwjgl3DebugStarter.java Source code

Java tutorial

Introduction

Here is the source code for com.badlogic.gdx.tests.lwjgl3.Lwjgl3DebugStarter.java

Source

/*******************************************************************************
 * Copyright 2011 See AUTHORS file.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/

package com.badlogic.gdx.tests.lwjgl3;

import java.awt.EventQueue;
import java.awt.image.BufferedImage;
import java.lang.reflect.Field;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Graphics.DisplayMode;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.InputAdapter;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Graphics;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3WindowListener;
import com.badlogic.gdx.controllers.lwjgl3.Lwjgl3ControllerManager;
import com.badlogic.gdx.graphics.FPSLogger;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g3d.ModelBatch;
import com.badlogic.gdx.graphics.g3d.ModelInstance;
import com.badlogic.gdx.graphics.glutils.HdpiUtils;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.tests.BulletTestCollection;
import com.badlogic.gdx.tests.CursorTest;
import com.badlogic.gdx.tests.DeltaTimeTest;
import com.badlogic.gdx.tests.DpiTest;
import com.badlogic.gdx.tests.FullscreenTest;
import com.badlogic.gdx.tests.LifeCycleTest;
import com.badlogic.gdx.tests.MusicTest;
import com.badlogic.gdx.tests.StageTest;
import com.badlogic.gdx.tests.TextInputDialogTest;
import com.badlogic.gdx.tests.UITest;
import com.badlogic.gdx.tests.bullet.BulletTest;
import com.badlogic.gdx.tests.extensions.ControllersTest;
import com.badlogic.gdx.tests.g3d.Animation3DTest;
import com.badlogic.gdx.tests.g3d.BaseG3dHudTest;
import com.badlogic.gdx.tests.superkoalio.SuperKoalio;
import com.badlogic.gdx.tests.utils.GdxTest;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.GdxRuntimeException;

public class Lwjgl3DebugStarter {
    public static void main(String[] argv) throws NoSuchFieldException, SecurityException, ClassNotFoundException {
        GdxTest test = new GdxTest() {
            float r = 0;
            SpriteBatch batch;
            BitmapFont font;
            FPSLogger fps = new FPSLogger();
            Texture texture;

            @Override
            public void create() {
                BufferedImage image = new BufferedImage(10, 10, BufferedImage.TYPE_4BYTE_ABGR);
                texture = new Texture("data/badlogic.jpg");
                batch = new SpriteBatch();
                font = new BitmapFont();
                Gdx.input.setInputProcessor(new InputAdapter() {

                    @Override
                    public boolean keyDown(int keycode) {
                        System.out.println("Key down: " + Keys.toString(keycode));
                        return false;
                    }

                    @Override
                    public boolean keyUp(int keycode) {
                        System.out.println("Key up: " + Keys.toString(keycode));
                        return false;
                    }

                    @Override
                    public boolean keyTyped(char character) {
                        System.out.println("Key typed: '" + character + "', " + (int) character);

                        if (character == 'f') {
                            Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode());
                            //                     DisplayMode[] modes = Gdx.graphics.getDisplayModes();
                            //                     for(DisplayMode mode: modes) {
                            //                        if(mode.width == 1920 && mode.height == 1080) {
                            //                           Gdx.graphics.setFullscreenMode(mode);
                            //                           break;
                            //                        }
                            //                     }
                        }
                        if (character == 'w') {
                            Gdx.graphics.setWindowedMode(MathUtils.random(400, 800), MathUtils.random(400, 800));
                        }
                        if (character == 'e') {
                            throw new GdxRuntimeException("derp");
                        }
                        if (character == 'c') {
                            Gdx.input.setCursorCatched(!Gdx.input.isCursorCatched());
                        }
                        Lwjgl3Window window = ((Lwjgl3Graphics) Gdx.graphics).getWindow();
                        if (character == 'v') {
                            window.setVisible(false);
                        }
                        if (character == 's') {
                            window.setVisible(true);
                        }
                        if (character == 'q') {
                            window.closeWindow();
                        }
                        if (character == 'i') {
                            window.iconifyWindow();
                        }
                        if (character == 'm') {
                            window.maximizeWindow();
                        }
                        if (character == 'r') {
                            window.restoreWindow();
                        }
                        if (character == 'u') {
                            Gdx.net.openURI("https://google.com");
                        }
                        return false;
                    }
                });
            }

            long start = System.nanoTime();

            @Override
            public void render() {
                Gdx.gl.glClearColor(1, 0, 0, 1);
                Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
                HdpiUtils.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
                batch.getProjectionMatrix().setToOrtho2D(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
                batch.begin();
                font.draw(batch,
                        Gdx.graphics.getWidth() + "x" + Gdx.graphics.getHeight() + ", "
                                + Gdx.graphics.getBackBufferWidth() + "x" + Gdx.graphics.getBackBufferHeight()
                                + ", " + Gdx.input.getX() + ", " + Gdx.input.getY() + ", " + Gdx.input.getDeltaX()
                                + ", " + Gdx.input.getDeltaY(),
                        0, 20);
                batch.draw(texture, Gdx.input.getX(), Gdx.graphics.getHeight() - Gdx.input.getY());
                batch.end();
                fps.log();
            }

            @Override
            public void resize(int width, int height) {
                Gdx.app.log("Test", "Resized " + width + "x" + height);
            }

            @Override
            public void resume() {
                Gdx.app.log("Test", "resuming");
            }

            @Override
            public void pause() {
                Gdx.app.log("Test", "pausing");
            }

            @Override
            public void dispose() {
                Gdx.app.log("Test", "disposing");
            }
        };
        Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
        config.setWindowedMode(640, 480);
        config.setWindowListener(new Lwjgl3WindowListener() {
            @Override
            public void created(Lwjgl3Window window) {
                Gdx.app.log("Window", "created");
            }

            @Override
            public void iconified(boolean isIconified) {
                Gdx.app.log("Window", "iconified: " + (isIconified ? "true" : "false"));
            }

            @Override
            public void maximized(boolean isMaximized) {
                Gdx.app.log("Window", "maximized: " + (isMaximized ? "true" : "false"));
            }

            @Override
            public void focusLost() {
                Gdx.app.log("Window", "focus lost");
            }

            @Override
            public void focusGained() {
                Gdx.app.log("Window", "focus gained");
            }

            @Override
            public boolean closeRequested() {
                Gdx.app.log("Window", "closing");
                return false;
            }

            @Override
            public void filesDropped(String[] files) {
                for (String file : files) {
                    Gdx.app.log("Window", "File dropped: " + file);
                }
            }

            @Override
            public void refreshRequested() {
                Gdx.app.log("Window", "refreshRequested");
            }
        });
        for (DisplayMode mode : Lwjgl3ApplicationConfiguration.getDisplayModes()) {
            System.out.println(mode.width + "x" + mode.height);
        }

        System.setProperty("java.awt.headless", "true");
        new Lwjgl3Application(test, config);
    }
}