Merge remote-tracking branch 'origin/main'
# Conflicts: # LastSession.t4jlog
This commit is contained in:
commit
745d38fb09
5 changed files with 989 additions and 149 deletions
1033
LastSession.t4jlog
1033
LastSession.t4jlog
File diff suppressed because it is too large
Load diff
|
|
@ -25,6 +25,7 @@ import net.halbear.Terrain4J.EngineCore.Logic.Rendering.ModelLoader;
|
||||||
import net.halbear.Terrain4J.EngineCore.Main.Scene.*;
|
import net.halbear.Terrain4J.EngineCore.Main.Scene.*;
|
||||||
import net.halbear.Terrain4J.EngineCore.Main.Scene.GUIs.Gimbal;
|
import net.halbear.Terrain4J.EngineCore.Main.Scene.GUIs.Gimbal;
|
||||||
import net.halbear.Terrain4J.EngineCore.Main.Scene.GUIs.LoadingScreen;
|
import net.halbear.Terrain4J.EngineCore.Main.Scene.GUIs.LoadingScreen;
|
||||||
|
import net.halbear.Terrain4J.EngineCore.Main.Scene.GUIs.StartMenu;
|
||||||
import net.halbear.Terrain4J.EngineCore.Profiling.CPUMonitor;
|
import net.halbear.Terrain4J.EngineCore.Profiling.CPUMonitor;
|
||||||
import net.halbear.Terrain4J.EngineCore.Profiling.GPUProfiler;
|
import net.halbear.Terrain4J.EngineCore.Profiling.GPUProfiler;
|
||||||
import net.halbear.Terrain4J.EngineCore.Threads.ClientConnectionThread;
|
import net.halbear.Terrain4J.EngineCore.Threads.ClientConnectionThread;
|
||||||
|
|
@ -68,6 +69,8 @@ public class GameCore implements GameLogic {
|
||||||
private ModelData RevolverData;
|
private ModelData RevolverData;
|
||||||
public ILight SkyLight;
|
public ILight SkyLight;
|
||||||
private LoadingScreen loadingScreen;
|
private LoadingScreen loadingScreen;
|
||||||
|
private final StartMenu startMenu = new StartMenu();
|
||||||
|
public boolean StartMenuActive = true;
|
||||||
public List<IMoveableActorComponent> ActorEditorComponents = new ArrayList<>();
|
public List<IMoveableActorComponent> ActorEditorComponents = new ArrayList<>();
|
||||||
private Vector2f DeltaPos = new Vector2f(0,0);
|
private Vector2f DeltaPos = new Vector2f(0,0);
|
||||||
private String PlayerActorID = "NULL";
|
private String PlayerActorID = "NULL";
|
||||||
|
|
@ -162,6 +165,10 @@ public class GameCore implements GameLogic {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
scene.RemoveActor(Musket);
|
||||||
|
scene.AddActor(Revolver);
|
||||||
|
Musket.AttachedCameraID = "NULL";
|
||||||
|
Revolver.AttachedCameraID = "DebugCamera";
|
||||||
return new InitData(models,materials,guiTextures);
|
return new InitData(models,materials,guiTextures);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -399,6 +406,11 @@ public class GameCore implements GameLogic {
|
||||||
ImGui.newFrame();
|
ImGui.newFrame();
|
||||||
if(LoadingLevel){
|
if(LoadingLevel){
|
||||||
loadingScreen.RenderGUI(engineInstance, frameTimeNS, this);
|
loadingScreen.RenderGUI(engineInstance, frameTimeNS, this);
|
||||||
|
} else if (StartMenuActive) {
|
||||||
|
startMenu.RenderGUI(engineInstance, frameTimeNS, this);
|
||||||
|
if (startMenu.GameStarted) {
|
||||||
|
StartMenuActive = false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
engineInstance.scene().RenderGUIs(engineInstance, frameTimeNS, this);
|
engineInstance.scene().RenderGUIs(engineInstance, frameTimeNS, this);
|
||||||
if (ChangeGraphicsSettings) {
|
if (ChangeGraphicsSettings) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package net.halbear.Terrain4J.EngineCore.Main.Scene.GUIs;
|
package net.halbear.Terrain4J.EngineCore.Main.Scene.GUIs;
|
||||||
|
|
||||||
|
import imgui.ImDrawList;
|
||||||
import imgui.ImGui;
|
import imgui.ImGui;
|
||||||
import imgui.ImGuiViewport;
|
import imgui.ImGuiViewport;
|
||||||
import imgui.flag.ImGuiCol;
|
import imgui.flag.ImGuiCol;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
package net.halbear.Terrain4J.EngineCore.Main.Scene.GUIs;
|
||||||
|
|
||||||
|
import imgui.ImDrawList;
|
||||||
|
import imgui.ImGui;
|
||||||
|
import imgui.ImGuiViewport;
|
||||||
|
import imgui.flag.ImGuiCol;
|
||||||
|
import imgui.flag.ImGuiCond;
|
||||||
|
import imgui.flag.ImGuiStyleVar;
|
||||||
|
import imgui.flag.ImGuiWindowFlags;
|
||||||
|
import imgui.type.ImFloat;
|
||||||
|
import net.halbear.Terrain4J.EngineCore.Logic.EngineConfig;
|
||||||
|
import net.halbear.Terrain4J.EngineCore.Logic.EngineInstance;
|
||||||
|
import net.halbear.Terrain4J.EngineCore.Main.GameCore;
|
||||||
|
import net.halbear.Terrain4J.EngineCore.Main.PrimaryRuntime;
|
||||||
|
import net.halbear.Terrain4J.EngineCore.Main.Scene.GUIOverlay;
|
||||||
|
import net.halbear.Terrain4J.EngineCore.Vulkan.GUI.GuiTexture;
|
||||||
|
import net.halbear.Terrain4J.EngineCore.Vulkan.Structure.DisplayToScreen.DeferredSceneRender;
|
||||||
|
import net.halbear.Terrain4J.EngineCore.Vulkan.Structure.DisplayToScreen.ForwardSceneRender;
|
||||||
|
import net.halbear.Terrain4J.EngineCore.Main.AudioInstance;
|
||||||
|
import net.halbear.Terrain4J.EngineCore.Main.Scene.Scene;
|
||||||
|
import org.joml.Vector3f;
|
||||||
|
import org.tinylog.Logger;
|
||||||
|
|
||||||
|
public class StartMenu implements GUIOverlay {
|
||||||
|
public boolean GameStarted = false;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void RenderGUI(EngineInstance engineInstance, long frameTimeNS, GameCore parent) {
|
||||||
|
if (GameStarted) return;
|
||||||
|
ImGuiViewport viewport = ImGui.getMainViewport();
|
||||||
|
int menuFlags = ImGuiWindowFlags.NoDecoration
|
||||||
|
| ImGuiWindowFlags.AlwaysAutoResize
|
||||||
|
| ImGuiWindowFlags.NoSavedSettings
|
||||||
|
| ImGuiWindowFlags.NoFocusOnAppearing
|
||||||
|
| ImGuiWindowFlags.NoNav
|
||||||
|
| ImGuiWindowFlags.NoMove;
|
||||||
|
|
||||||
|
float CenterX = viewport.getWorkPosX() + viewport.getWorkSizeX() / 2.0f;
|
||||||
|
float CenterY = viewport.getWorkPosY() + viewport.getWorkSizeY() / 2.0f;
|
||||||
|
ImGui.setNextWindowPos(viewport.getWorkPosX(), viewport.getWorkPosY(), ImGuiCond.Always);
|
||||||
|
ImGui.setNextWindowSize(viewport.getWorkSizeX(), viewport.getWorkSizeY());
|
||||||
|
ImGui.pushStyleColor(ImGuiCol.WindowBg, 0.08f, 0.08f, 0.1f, 1.0f);
|
||||||
|
ImGui.pushStyleVar(ImGuiStyleVar.WindowPadding, 40f, 30f);
|
||||||
|
ImGui.pushStyleVar(ImGuiStyleVar.ItemSpacing, 10f, 16f);
|
||||||
|
ImGui.pushStyleVar(ImGuiStyleVar.WindowRounding, 8f);
|
||||||
|
|
||||||
|
ImGui.begin("Start Menu", menuFlags);
|
||||||
|
ImGui.setWindowFontScale(8.0f);
|
||||||
|
float titleX = (viewport.getWorkSizeX() - ImGui.calcTextSize("Shooter Game").x) / 2.0f;
|
||||||
|
float titleY = viewport.getWorkSizeY() * 0.25f;
|
||||||
|
ImGui.setCursorPos(titleX, titleY);
|
||||||
|
ImGui.text("Shooter Game");
|
||||||
|
ImGui.setWindowFontScale(3.0f);
|
||||||
|
ImGui.spacing();
|
||||||
|
ImGui.spacing();
|
||||||
|
float buttonWidth = 450f;
|
||||||
|
float buttonHeight = 90f;
|
||||||
|
float buttonX = (viewport.getWorkSizeX() - buttonWidth) / 2.0f;
|
||||||
|
|
||||||
|
ImGui.setCursorPosX(buttonX);
|
||||||
|
if (ImGui.button("Play", buttonWidth, buttonHeight)) {
|
||||||
|
GameStarted = true;
|
||||||
|
Scene scene = (Scene) engineInstance.scene();
|
||||||
|
AudioInstance bgm = scene.audioInstances.get("BGM");
|
||||||
|
|
||||||
|
if (bgm == null) {
|
||||||
|
scene.SetUpAudio(engineInstance, engineInstance.audioManager());
|
||||||
|
bgm = scene.audioInstances.get("BGM");
|
||||||
|
}
|
||||||
|
bgm.Pause();
|
||||||
|
bgm.ChangePath("resources/EngineResources/audio/music/theshiteventhefar.ogg", engineInstance.audioManager());
|
||||||
|
bgm.Play();
|
||||||
|
}
|
||||||
|
ImGui.setCursorPosX(buttonX);
|
||||||
|
if (ImGui.button("Settings", buttonWidth, buttonHeight)) {
|
||||||
|
System.exit(0);
|
||||||
|
|
||||||
|
}
|
||||||
|
ImGui.setCursorPosX(buttonX);
|
||||||
|
if (ImGui.button("Quit", buttonWidth, buttonHeight)) {
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
ImGui.end();
|
||||||
|
ImGui.popStyleVar(3);
|
||||||
|
ImGui.popStyleColor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -50,7 +50,7 @@ public class Scene implements IScene {
|
||||||
private Vector2f LastMousePos = new Vector2f(0,0);
|
private Vector2f LastMousePos = new Vector2f(0,0);
|
||||||
private final ISceneLightingManager lightingManager;
|
private final ISceneLightingManager lightingManager;
|
||||||
private SkyBox skyBox;
|
private SkyBox skyBox;
|
||||||
private Map<String,AudioInstance> audioInstances;
|
public Map<String,AudioInstance> audioInstances;
|
||||||
private DynamicTerrainMesh terrainMesh;
|
private DynamicTerrainMesh terrainMesh;
|
||||||
public IPlayerController playerController;
|
public IPlayerController playerController;
|
||||||
|
|
||||||
|
|
@ -175,7 +175,6 @@ public class Scene implements IScene {
|
||||||
newInstance.Play();
|
newInstance.Play();
|
||||||
audioInstances.put("BGM",newInstance);
|
audioInstances.put("BGM",newInstance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Camera GetCamera(){return camera;}
|
public Camera GetCamera(){return camera;}
|
||||||
public void AddActor(Actor NewActor){
|
public void AddActor(Actor NewActor){
|
||||||
if(NewActor == null) return;
|
if(NewActor == null) return;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue