Search in sources :

Example 21 with Vector4f

use of org.joml.Vector4f in project chunkstories by Hugobros3.

the class LevelSelection method render.

@Override
public void render(RenderingInterface renderer) {
    parentLayer.getRootLayer().render(renderer);
    if (scroll < 0)
        scroll = 0;
    int posY = renderer.getWindow().getHeight() - 128;
    Font font = renderer.getFontRenderer().getFont("LiberationSans-Regular", 11);
    renderer.getFontRenderer().drawStringWithShadow(font, 64, posY + 64, "Select a level...", 3, 3, new Vector4f(1));
    int remainingSpace = (int) Math.floor(renderer.getWindow().getHeight() / 96 - 2);
    while (scroll + remainingSpace > worldsButtons.size()) scroll--;
    int skip = scroll;
    for (LocalWorldButton worldButton : worldsButtons) {
        if (skip-- > 0)
            continue;
        if (remainingSpace-- <= 0)
            break;
        int maxWidth = renderer.getWindow().getWidth() - 64 * 2;
        worldButton.setWidth(maxWidth);
        worldButton.setPosition(64, posY);
        worldButton.render(renderer);
        posY -= 96;
    }
    backOption.setPosition(8, 8);
    backOption.render(renderer);
    newWorldOption.setPosition(renderer.getWindow().getWidth() - newWorldOption.getWidth() - 8, 8);
    newWorldOption.render(renderer);
}
Also used : Vector4f(org.joml.Vector4f) Font(io.xol.chunkstories.api.rendering.text.FontRenderer.Font)

Example 22 with Vector4f

use of org.joml.Vector4f in project chunkstories by Hugobros3.

the class LoginPrompt method render.

@Override
public void render(RenderingInterface renderer) {
    parentLayer.render(renderer);
    float scale = this.getGuiScale();
    if (Client.getInstance().getConfiguration().getStringOption("client.game.language").equals("undefined")) {
        gameWindow.setLayer(new LanguageSelectionScreen(gameWindow, this, false));
    // this.mainScene.changeOverlay(new LanguageSelectionScreen(mainScene, this, false));
    }
    if (can_next)
        gameWindow.setLayer(new MainMenu(gameWindow, parentLayer));
    ObjectRenderer.renderTexturedRect(renderer.getWindow().getWidth() / 2, renderer.getWindow().getHeight() / 2 + 90 * scale, 256 * scale, 256 * scale, "./textures/logo.png");
    usernameForm.setPosition(renderer.getWindow().getWidth() / 2 - 125 * scale, renderer.getWindow().getHeight() / 2 + 16 * scale);
    usernameForm.render(renderer);
    passwordForm.setPosition(usernameForm.getPositionX(), usernameForm.getPositionY() - usernameForm.getHeight() - (20 + 4) * scale);
    passwordForm.render(renderer);
    loginButton.setPosition(usernameForm.getPositionX(), passwordForm.getPositionY() - 30 * scale);
    renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().defaultFont(), usernameForm.getPositionX(), usernameForm.getPositionY() + usernameForm.getHeight() + 4 * scale, Client.getInstance().getContent().localization().localize("#{login.username}"), scale, scale, new Vector4f(1.0f));
    renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().defaultFont(), passwordForm.getPositionX(), passwordForm.getPositionY() + usernameForm.getHeight() + 4 * scale, Client.getInstance().getContent().localization().localize("#{login.password}"), scale, scale, new Vector4f(1.0f));
    if (logging_in) {
        renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().defaultFont(), renderer.getWindow().getWidth() / 2 - 230, renderer.getWindow().getHeight() / 2 - 90, Client.getInstance().getContent().localization().localize("#{login.loggingIn}"), scale, scale, new Vector4f(1.0f));
    } else {
        float decal_lb = loginButton.getWidth();
        loginButton.render(renderer);
        renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().defaultFont(), loginButton.getPositionX() + 4 * scale + decal_lb, loginButton.getPositionY() + 2 * scale, Client.getInstance().getContent().localization().localize("#{login.register}"), scale, scale, new Vector4f(1.0f));
        if (failed_login)
            renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().defaultFont(), renderer.getWindow().getWidth() / 2 - 250, renderer.getWindow().getHeight() / 2 - 160, message, scale, scale, new Vector4f(1.0f, 0.0f, 0.0f, 1.0f));
    }
    if (autologin) {
        int seconds = 10;
        String autologin2 = Client.getInstance().getContent().localization().localize("#{login.auto1} " + (seconds - (System.currentTimeMillis() - startCounter) / 1000) + " #{login.auto2}");
        float autologinLength = renderer.getFontRenderer().defaultFont().getWidth(autologin2) * 2.0f;
        renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().defaultFont(), renderer.getWindow().getWidth() / 2 - autologinLength / 2, renderer.getWindow().getHeight() / 2 - 170, autologin2, 2, 2, new Vector4f(0.0f, 1.0f, 0.0f, 1.0f));
        if ((System.currentTimeMillis() - startCounter) / 1000 > seconds) {
            connect();
            autologin = false;
        }
    }
    renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().defaultFont(), 12, 12, "2015-2018 XolioWare Interactive", scale, scale, new Vector4f(1.0f, 1.0f, 1.0f, 1.0f));
}
Also used : Vector4f(org.joml.Vector4f) LanguageSelectionScreen(io.xol.chunkstories.gui.layer.config.LanguageSelectionScreen)

Example 23 with Vector4f

use of org.joml.Vector4f in project chunkstories by Hugobros3.

the class MessageBox method render.

@Override
public void render(RenderingInterface renderer) {
    parentLayer.render(renderer);
    renderer.getGuiRenderer().drawBoxWindowsSpace(0, 0, renderer.getWindow().getWidth(), renderer.getWindow().getHeight(), 0, 0, 0, 0, null, false, true, new Vector4f(0.0f, 0.0f, 0.0f, 0.5f));
    float dekal = renderer.getFontRenderer().defaultFont().getWidth(message);
    renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().defaultFont(), renderer.getWindow().getWidth() / 2 - dekal * 1.5f, renderer.getWindow().getHeight() / 2 + 64, message, 3f, 3f, new Vector4f(1, 0.2f, 0.2f, 1));
    okButton.setPosition(renderer.getWindow().getWidth() / 2 - okButton.getWidth() / 2, renderer.getWindow().getHeight() / 2 - 32);
    okButton.render(renderer);
}
Also used : Vector4f(org.joml.Vector4f)

Example 24 with Vector4f

use of org.joml.Vector4f in project chunkstories by Hugobros3.

the class SkyBoxBackground method render.

@Override
public void render(RenderingInterface renderer) {
    if (gameWindow.getLayer() == this)
        gameWindow.setLayer(new MainMenu(gameWindow, this));
    try // Ugly fps caps yay
    {
        Thread.sleep(33L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    // Render this shit boy
    renderer.getRenderTargetManager().setConfiguration(unblurredFBO);
    camera.setupUsingScreenSize(gameWindow.getWidth(), gameWindow.getHeight());
    Shader menuSkyBox = renderer.useShader("mainMenuSkyBox");
    camera.setupShader(menuSkyBox);
    renderer.bindCubemap("skybox", TexturesHandler.getCubemap(skyBox));
    camera.setRotationX(35 + (float) (Math.sin(camera.getRotationY() / 15)) * 5f);
    camera.setRotationY((System.currentTimeMillis() % 1000000) / 200.0f);
    renderer.drawFSQuad();
    renderer.getRenderTargetManager().setConfiguration(blurredHFBO);
    Shader blurH = renderer.useShader("blurH");
    blurH.setUniform2f("screenSize", gameWindow.getWidth(), gameWindow.getHeight());
    renderer.bindTexture2D("inputTexture", unblurred);
    renderer.drawFSQuad();
    for (int i = 0; i < 1; i++) {
        renderer.getRenderTargetManager().setConfiguration(blurredVFBO);
        Shader blurV = renderer.useShader("blurV");
        blurV.setUniform1f("lookupScale", 1);
        blurV.setUniform2f("screenSize", gameWindow.getWidth() / 2, gameWindow.getHeight() / 2);
        renderer.bindTexture2D("inputTexture", blurredH);
        renderer.drawFSQuad();
        renderer.getRenderTargetManager().setConfiguration(blurredHFBO);
        blurH = renderer.useShader("blurH");
        blurH.setUniform2f("screenSize", gameWindow.getWidth() / 2, gameWindow.getHeight() / 2);
        renderer.bindTexture2D("inputTexture", blurredV);
        renderer.drawFSQuad();
    }
    renderer.getRenderTargetManager().setConfiguration(blurredVFBO);
    Shader blurV = renderer.useShader("blurV");
    blurV.setUniform2f("screenSize", gameWindow.getWidth(), gameWindow.getHeight());
    renderer.bindTexture2D("inputTexture", blurredH);
    renderer.drawFSQuad();
    renderer.getRenderTargetManager().setConfiguration(null);
    Shader blit = renderer.useShader("background");
    blit.setUniform2f("screenSize", gameWindow.getWidth(), gameWindow.getHeight());
    Texture2DGL backgroundTexture = TexturesHandler.getTexture("./textures/gui/darker.png");
    backgroundTexture.setLinearFiltering(false);
    renderer.bindTexture2D("diffuseTexture", backgroundTexture);
    renderer.bindTexture2D("backgroundTexture", blurredV);
    renderer.drawFSQuad();
    Texture2DGL logoTexture = TexturesHandler.getTexture("./textures/gui/icon.png");
    float alphaIcon = (float) (0.25 + Math.sin((System.currentTimeMillis() % (1000 * 60 * 60) / 3000f)) * 0.25f);
    renderer.setBlendMode(BlendMode.MIX);
    float diagonal = (float) Math.sqrt(gameWindow.getWidth() * gameWindow.getWidth() + gameWindow.getHeight() * gameWindow.getHeight());
    float iconSize = (float) (diagonal / 3 + 50 * Math.sin((System.currentTimeMillis() % (1000 * 60 * 60) / 30000f)));
    renderer.getGuiRenderer().drawBoxWindowsSpace(gameWindow.getWidth() / 2 - iconSize / 2, gameWindow.getHeight() / 2 - iconSize / 2, gameWindow.getWidth() / 2 + iconSize / 2, gameWindow.getHeight() / 2 + iconSize / 2, 0, 1, 1, 0, logoTexture, true, true, new Vector4f(1.0f, 1.0f, 1.0f, alphaIcon));
}
Also used : Vector4f(org.joml.Vector4f) Texture2DGL(io.xol.chunkstories.renderer.opengl.texture.Texture2DGL) Shader(io.xol.chunkstories.api.rendering.shader.Shader)

Example 25 with Vector4f

use of org.joml.Vector4f in project chunkstories by Hugobros3.

the class Camera method transform3DCoordinate.

public Vector3f transform3DCoordinate(Vector4fc in) {
    Matrix4f mvm = this.modelViewMatrix4f;
    Matrix4f pm = this.projectionMatrix4f;
    Vector4f transormed = new Vector4f();
    mvm.transform(in, transormed);
    pm.transform(transormed, transormed);
    Vector3f posOnScreen = new Vector3f((float) in.x(), (float) in.y(), 0f);
    float scale = 1 / in.z();
    posOnScreen.mul(scale);
    posOnScreen.x = ((posOnScreen.x() * 0.5f + 0.5f) * viewportWidth);
    posOnScreen.y = (((posOnScreen.y() * 0.5f + 0.5f)) * viewportHeight);
    posOnScreen.z = (scale);
    return posOnScreen;
}
Also used : Matrix4f(org.joml.Matrix4f) Vector4f(org.joml.Vector4f) Vector3f(org.joml.Vector3f)

Aggregations

Vector4f (org.joml.Vector4f)68 Vector3f (org.joml.Vector3f)13 Font (io.xol.chunkstories.api.rendering.text.FontRenderer.Font)12 Texture2D (io.xol.chunkstories.api.rendering.textures.Texture2D)6 Vector3d (org.joml.Vector3d)6 Shader (io.xol.chunkstories.api.rendering.shader.Shader)5 CellData (io.xol.chunkstories.api.world.cell.CellData)5 Vector2f (org.joml.Vector2f)5 Mouse (io.xol.chunkstories.api.input.Mouse)4 Texture2DGL (io.xol.chunkstories.renderer.opengl.texture.Texture2DGL)4 ByteBuffer (java.nio.ByteBuffer)4 Matrix4f (org.joml.Matrix4f)4 ItemPile (io.xol.chunkstories.api.item.inventory.ItemPile)3 STBEasyFont.stb_easy_font_print (org.lwjgl.stb.STBEasyFont.stb_easy_font_print)3 Location (io.xol.chunkstories.api.Location)2 Entity (io.xol.chunkstories.api.entity.Entity)2 EntityLiving (io.xol.chunkstories.api.entity.EntityLiving)2 GuiRenderer (io.xol.chunkstories.api.gui.GuiRenderer)2 CollisionBox (io.xol.chunkstories.api.physics.CollisionBox)2 Voxel (io.xol.chunkstories.api.voxel.Voxel)2