Ginger3D/src/main/java/com/github/hydos/ginger/engine/opengl/api/GingerGL.java

98 lines
3.1 KiB
Java

package com.github.hydos.ginger.engine.opengl.api;
import org.joml.Vector2f;
import com.github.hydos.ginger.engine.common.api.*;
import com.github.hydos.ginger.engine.common.api.game.Game;
import com.github.hydos.ginger.engine.common.elements.buttons.TextureButton;
import com.github.hydos.ginger.engine.common.elements.objects.RenderObject;
import com.github.hydos.ginger.engine.common.font.*;
import com.github.hydos.ginger.engine.common.io.Window;
import com.github.hydos.ginger.engine.common.screen.Screen;
import com.github.hydos.ginger.engine.common.tools.MousePicker;
import com.github.hydos.ginger.engine.common.util.Timer;
import com.github.hydos.ginger.engine.opengl.postprocessing.*;
import com.github.hydos.ginger.engine.opengl.render.MasterRenderer;
import com.github.hydos.ginger.engine.opengl.utils.GLLoader;
public class GingerGL extends GingerEngine
{
public MousePicker picker;
public FontType globalFont;
public FrameBufferObject contrastFbo;
public void cleanup()
{
Window.stop();
PostProcessing.cleanUp();
getRegistry().masterRenderer.cleanUp();
TextMaster.cleanUp();
GLLoader.cleanUp();
}
public void openScreen(Screen screen)
{
if (getRegistry().currentScreen != null) getRegistry().currentScreen.cleanup();
getRegistry().currentScreen = screen;
}
public void setGingerPlayer(RenderObject player)
{
registry.game.data.entities.remove(registry.game.player); // remove the old player
registry.game.data.playerObject = player; // set all the player variables
registry.game.player = player;
registry.game.camera.player = player;
registry.game.data.entities.add(player); // add the new player
}
public TextureButton registerButton(String resourceLocation, Vector2f position, Vector2f scale)
{
TextureButton button = new TextureButton(resourceLocation, position, scale);
getRegistry().registerButton(button);
return button;
}
public GUIText registerText(String string, int textSize, Vector2f position, float maxLineLength, boolean centered, String id)
{
GUIText text = new GUIText(string, textSize, globalFont, position, maxLineLength, false);
text.textID = id;
getRegistry().registerText(text);
return text;
}
public void renderOverlays()
{
getRegistry().masterRenderer.renderGuis(getRegistry().game.data.guis);
if (getRegistry().currentScreen != null) getRegistry().masterRenderer.renderGuis(getRegistry().currentScreen.elements);
TextMaster.render();
}
public void setGlobalFont(FontType font)
{ this.globalFont = font; }
public void setup(MasterRenderer masterRenderer, Game game)
{
INSTANCE = this;
registry = new GingerRegister();
getRegistry().registerGame(game);
timer = new Timer(game.data.tickSpeed);
timer.addTickListener(gameTickListener);
contrastFbo = new FrameBufferObject(new ContrastChanger());
getRegistry().masterRenderer = masterRenderer;
picker = new MousePicker(game.data.camera, masterRenderer.getProjectionMatrix());
PostProcessing.init();
}
@Override
public void update()
{
getRegistry().game.update();
picker.update();
super.update();
}
public GingerRegister getRegistry()
{
return registry;
}
}