diff --git a/src/main/java/ca/blarg/gdx/GameApp.java b/src/main/java/ca/blarg/gdx/GameApp.java index edbe550..fca56b0 100644 --- a/src/main/java/ca/blarg/gdx/GameApp.java +++ b/src/main/java/ca/blarg/gdx/GameApp.java @@ -1,5 +1,6 @@ package ca.blarg.gdx; +import ca.blarg.gdx.events.EventManager; import ca.blarg.gdx.graphics.*; import ca.blarg.gdx.states.StateManager; import com.badlogic.gdx.Gdx; @@ -7,8 +8,6 @@ import com.badlogic.gdx.graphics.g3d.ModelBatch; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.TimeUtils; -import ca.blarg.gdx.events.EventManager; -import ca.blarg.gdx.states.StateManager; public abstract class GameApp implements Disposable { public final EventManager eventManager; @@ -71,10 +70,9 @@ public abstract class GameApp implements Disposable { viewportContext.onPostRender(); } - public void onUpdate(float delta) { - viewportContext.onUpdate(delta); + public void onUpdateGameState(float delta) { eventManager.onUpdate(delta); - stateManager.onUpdate(delta); + stateManager.onUpdateGameState(delta); if (stateManager.isEmpty()) { Gdx.app.debug("GameApp", "No states running. Quitting."); Gdx.app.exit(); @@ -90,6 +88,11 @@ public abstract class GameApp implements Disposable { } } + public void onUpdateFrame(float delta) { + viewportContext.onUpdateFrame(delta); + stateManager.onUpdateFrame(delta); + } + public void onPause() { Gdx.app.debug("GameApp", "onPause"); stateManager.onAppPause(); diff --git a/src/main/java/ca/blarg/gdx/GdxGameAppListener.java b/src/main/java/ca/blarg/gdx/GdxGameAppListener.java index a33a8ba..4053a0a 100644 --- a/src/main/java/ca/blarg/gdx/GdxGameAppListener.java +++ b/src/main/java/ca/blarg/gdx/GdxGameAppListener.java @@ -61,12 +61,13 @@ public class GdxGameAppListener implements ApplicationListener, GameLooper { accumulator += frameTime; while (accumulator >= updateDelta) { - gameApp.onUpdate(updateDelta); + gameApp.onUpdateGameState(updateDelta); accumulator -= updateDelta; } renderDelta = accumulator / updateDelta; + gameApp.onUpdateFrame(frameTime); gameApp.onRender(renderDelta); } diff --git a/src/main/java/ca/blarg/gdx/entities/ComponentSystem.java b/src/main/java/ca/blarg/gdx/entities/ComponentSystem.java index 1b64ef9..141f500 100644 --- a/src/main/java/ca/blarg/gdx/entities/ComponentSystem.java +++ b/src/main/java/ca/blarg/gdx/entities/ComponentSystem.java @@ -1,10 +1,9 @@ package ca.blarg.gdx.entities; -import ca.blarg.gdx.events.EventHandler; -import com.badlogic.gdx.utils.Disposable; import ca.blarg.gdx.events.Event; import ca.blarg.gdx.events.EventHandler; import ca.blarg.gdx.events.EventManager; +import com.badlogic.gdx.utils.Disposable; public abstract class ComponentSystem extends EventHandler implements Disposable { public final EntityManager entityManager; @@ -29,7 +28,10 @@ public abstract class ComponentSystem extends EventHandler implements Disposable public void onRender(float delta) { } - public void onUpdate(float delta) { + public void onUpdateGameState(float delta) { + } + + public void onUpdateFrame(float delta) { } @Override diff --git a/src/main/java/ca/blarg/gdx/entities/EntityManager.java b/src/main/java/ca/blarg/gdx/entities/EntityManager.java index 9218c18..f139ec9 100644 --- a/src/main/java/ca/blarg/gdx/entities/EntityManager.java +++ b/src/main/java/ca/blarg/gdx/entities/EntityManager.java @@ -1,13 +1,10 @@ package ca.blarg.gdx.entities; -import ca.blarg.gdx.ReflectionUtils; -import ca.blarg.gdx.entities.systemcomponents.EntityPresetComponent; -import ca.blarg.gdx.entities.systemcomponents.InactiveComponent; -import com.badlogic.gdx.utils.*; import ca.blarg.gdx.ReflectionUtils; import ca.blarg.gdx.entities.systemcomponents.EntityPresetComponent; import ca.blarg.gdx.entities.systemcomponents.InactiveComponent; import ca.blarg.gdx.events.EventManager; +import com.badlogic.gdx.utils.*; public class EntityManager implements Disposable { public final EventManager eventManager; @@ -315,12 +312,17 @@ public class EntityManager implements Disposable { componentSystems.get(i).onRender(delta); } - public void onUpdate(float delta) { + public void onUpdateGameState(float delta) { for (Entity i : getAllWith(InactiveComponent.class)) remove(i); for (int i = 0; i < componentSystems.size; ++i) - componentSystems.get(i).onUpdate(delta); + componentSystems.get(i).onUpdateGameState(delta); + } + + public void onUpdateFrame(float delta) { + for (int i = 0; i < componentSystems.size; ++i) + componentSystems.get(i).onUpdateFrame(delta); } /*** private Entity/Component management ***/ diff --git a/src/main/java/ca/blarg/gdx/graphics/ViewportContext.java b/src/main/java/ca/blarg/gdx/graphics/ViewportContext.java index f1b3441..23d3b37 100644 --- a/src/main/java/ca/blarg/gdx/graphics/ViewportContext.java +++ b/src/main/java/ca/blarg/gdx/graphics/ViewportContext.java @@ -5,7 +5,6 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Camera; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.PerspectiveCamera; -import ca.blarg.gdx.math.MathHelpers; /** * Manages graphics state relating to the viewport dimensions and camera(s). @@ -60,7 +59,7 @@ public class ViewportContext { } - public void onUpdate(float delta) { + public void onUpdateFrame(float delta) { perspectiveCamera.update(); orthographicCamera.update(); } diff --git a/src/main/java/ca/blarg/gdx/processes/GameProcess.java b/src/main/java/ca/blarg/gdx/processes/GameProcess.java index 1b06c31..999b45b 100644 --- a/src/main/java/ca/blarg/gdx/processes/GameProcess.java +++ b/src/main/java/ca/blarg/gdx/processes/GameProcess.java @@ -1,14 +1,11 @@ package ca.blarg.gdx.processes; -import ca.blarg.gdx.GameApp; -import ca.blarg.gdx.events.EventHandler; -import ca.blarg.gdx.states.GameState; -import com.badlogic.gdx.utils.Disposable; import ca.blarg.gdx.GameApp; import ca.blarg.gdx.events.Event; import ca.blarg.gdx.events.EventHandler; import ca.blarg.gdx.events.EventManager; import ca.blarg.gdx.states.GameState; +import com.badlogic.gdx.utils.Disposable; public abstract class GameProcess extends EventHandler implements Disposable { public final ProcessManager processManager; @@ -60,7 +57,10 @@ public abstract class GameProcess extends EventHandler implements Disposable { public void onRender(float delta) { } - public void onUpdate(float delta) { + public void onUpdateGameState(float delta) { + } + + public void onUpdateFrame(float delta) { } public boolean onTransition(float delta, boolean isTransitioningOut, boolean started) { diff --git a/src/main/java/ca/blarg/gdx/processes/ProcessManager.java b/src/main/java/ca/blarg/gdx/processes/ProcessManager.java index 338e577..1afe2a1 100644 --- a/src/main/java/ca/blarg/gdx/processes/ProcessManager.java +++ b/src/main/java/ca/blarg/gdx/processes/ProcessManager.java @@ -6,10 +6,6 @@ import ca.blarg.gdx.events.EventManager; import ca.blarg.gdx.states.GameState; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.utils.Disposable; -import ca.blarg.gdx.ReflectionUtils; -import ca.blarg.gdx.Strings; -import ca.blarg.gdx.events.EventManager; -import ca.blarg.gdx.states.GameState; import java.util.LinkedList; @@ -200,7 +196,7 @@ public class ProcessManager implements Disposable { } } - public void onUpdate(float delta) { + public void onUpdateGameState(float delta) { cleanupInactiveProcesses(); checkForFinishedProcesses(); processQueue(); @@ -209,7 +205,15 @@ public class ProcessManager implements Disposable { for (int i = 0; i < processes.size(); ++i) { ProcessInfo processInfo = processes.get(i); if (!processInfo.isInactive) - processInfo.process.onUpdate(delta); + processInfo.process.onUpdateGameState(delta); + } + } + + public void onUpdateFrame(float delta) { + for (int i = 0; i < processes.size(); ++i) { + ProcessInfo processInfo = processes.get(i); + if (!processInfo.isInactive) + processInfo.process.onUpdateFrame(delta); } } diff --git a/src/main/java/ca/blarg/gdx/states/GameState.java b/src/main/java/ca/blarg/gdx/states/GameState.java index 1aa95f1..a09f3db 100644 --- a/src/main/java/ca/blarg/gdx/states/GameState.java +++ b/src/main/java/ca/blarg/gdx/states/GameState.java @@ -1,15 +1,12 @@ package ca.blarg.gdx.states; -import ca.blarg.gdx.GameApp; -import ca.blarg.gdx.events.EventHandler; -import ca.blarg.gdx.graphics.screeneffects.ScreenEffectManager; -import com.badlogic.gdx.utils.Disposable; import ca.blarg.gdx.GameApp; import ca.blarg.gdx.events.Event; import ca.blarg.gdx.events.EventHandler; import ca.blarg.gdx.events.EventManager; import ca.blarg.gdx.graphics.screeneffects.ScreenEffectManager; import ca.blarg.gdx.processes.ProcessManager; +import com.badlogic.gdx.utils.Disposable; public abstract class GameState extends EventHandler implements Disposable { public final StateManager stateManager; @@ -90,9 +87,13 @@ public abstract class GameState extends EventHandler implements Disposable { processManager.onRender(delta); } - public void onUpdate(float delta) { + public void onUpdateGameState(float delta) { + processManager.onUpdateGameState(delta); + } + + public void onUpdateFrame(float delta) { effectManager.onUpdate(delta); - processManager.onUpdate(delta); + processManager.onUpdateFrame(delta); } public boolean onTransition(float delta, boolean isTransitioningOut, boolean started) { diff --git a/src/main/java/ca/blarg/gdx/states/StateManager.java b/src/main/java/ca/blarg/gdx/states/StateManager.java index 1719468..50d5751 100644 --- a/src/main/java/ca/blarg/gdx/states/StateManager.java +++ b/src/main/java/ca/blarg/gdx/states/StateManager.java @@ -1,12 +1,11 @@ package ca.blarg.gdx.states; -import ca.blarg.gdx.ReflectionUtils; -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.utils.Disposable; import ca.blarg.gdx.GameApp; import ca.blarg.gdx.ReflectionUtils; import ca.blarg.gdx.Strings; import ca.blarg.gdx.events.EventManager; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.utils.Disposable; import java.util.LinkedList; @@ -264,7 +263,7 @@ public class StateManager implements Disposable { } } - public void onUpdate(float delta) { + public void onUpdateGameState(float delta) { lastCleanedStatesWereAllOverlays = false; cleanupInactiveStates(); @@ -276,7 +275,15 @@ public class StateManager implements Disposable { for (int i = getTopNonOverlayIndex(); i != -1 && i < states.size(); ++i) { StateInfo stateInfo = states.get(i); if (!stateInfo.isInactive) - stateInfo.state.onUpdate(delta); + stateInfo.state.onUpdateGameState(delta); + } + } + + public void onUpdateFrame(float delta) { + for (int i = getTopNonOverlayIndex(); i != -1 && i < states.size(); ++i) { + StateInfo stateInfo = states.get(i); + if (!stateInfo.isInactive) + stateInfo.state.onUpdateFrame(delta); } }