split up onUpdate() methods into onUpdateGameState and onUpdateFrame
this will help avoid needing to place a lot of update logic that is tied to the frame rate (e.g. anything not related to physics integration) in onRender()
This commit is contained in:
parent
8d9457b872
commit
bf659f7bc2
|
@ -1,5 +1,6 @@
|
||||||
package ca.blarg.gdx;
|
package ca.blarg.gdx;
|
||||||
|
|
||||||
|
import ca.blarg.gdx.events.EventManager;
|
||||||
import ca.blarg.gdx.graphics.*;
|
import ca.blarg.gdx.graphics.*;
|
||||||
import ca.blarg.gdx.states.StateManager;
|
import ca.blarg.gdx.states.StateManager;
|
||||||
import com.badlogic.gdx.Gdx;
|
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.graphics.glutils.ShapeRenderer;
|
||||||
import com.badlogic.gdx.utils.Disposable;
|
import com.badlogic.gdx.utils.Disposable;
|
||||||
import com.badlogic.gdx.utils.TimeUtils;
|
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 abstract class GameApp implements Disposable {
|
||||||
public final EventManager eventManager;
|
public final EventManager eventManager;
|
||||||
|
@ -71,10 +70,9 @@ public abstract class GameApp implements Disposable {
|
||||||
viewportContext.onPostRender();
|
viewportContext.onPostRender();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onUpdate(float delta) {
|
public void onUpdateGameState(float delta) {
|
||||||
viewportContext.onUpdate(delta);
|
|
||||||
eventManager.onUpdate(delta);
|
eventManager.onUpdate(delta);
|
||||||
stateManager.onUpdate(delta);
|
stateManager.onUpdateGameState(delta);
|
||||||
if (stateManager.isEmpty()) {
|
if (stateManager.isEmpty()) {
|
||||||
Gdx.app.debug("GameApp", "No states running. Quitting.");
|
Gdx.app.debug("GameApp", "No states running. Quitting.");
|
||||||
Gdx.app.exit();
|
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() {
|
public void onPause() {
|
||||||
Gdx.app.debug("GameApp", "onPause");
|
Gdx.app.debug("GameApp", "onPause");
|
||||||
stateManager.onAppPause();
|
stateManager.onAppPause();
|
||||||
|
|
|
@ -61,12 +61,13 @@ public class GdxGameAppListener implements ApplicationListener, GameLooper {
|
||||||
accumulator += frameTime;
|
accumulator += frameTime;
|
||||||
|
|
||||||
while (accumulator >= updateDelta) {
|
while (accumulator >= updateDelta) {
|
||||||
gameApp.onUpdate(updateDelta);
|
gameApp.onUpdateGameState(updateDelta);
|
||||||
accumulator -= updateDelta;
|
accumulator -= updateDelta;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderDelta = accumulator / updateDelta;
|
renderDelta = accumulator / updateDelta;
|
||||||
|
|
||||||
|
gameApp.onUpdateFrame(frameTime);
|
||||||
gameApp.onRender(renderDelta);
|
gameApp.onRender(renderDelta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
package ca.blarg.gdx.entities;
|
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.Event;
|
||||||
import ca.blarg.gdx.events.EventHandler;
|
import ca.blarg.gdx.events.EventHandler;
|
||||||
import ca.blarg.gdx.events.EventManager;
|
import ca.blarg.gdx.events.EventManager;
|
||||||
|
import com.badlogic.gdx.utils.Disposable;
|
||||||
|
|
||||||
public abstract class ComponentSystem extends EventHandler implements Disposable {
|
public abstract class ComponentSystem extends EventHandler implements Disposable {
|
||||||
public final EntityManager entityManager;
|
public final EntityManager entityManager;
|
||||||
|
@ -29,7 +28,10 @@ public abstract class ComponentSystem extends EventHandler implements Disposable
|
||||||
public void onRender(float delta) {
|
public void onRender(float delta) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onUpdate(float delta) {
|
public void onUpdateGameState(float delta) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onUpdateFrame(float delta) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,13 +1,10 @@
|
||||||
package ca.blarg.gdx.entities;
|
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.ReflectionUtils;
|
||||||
import ca.blarg.gdx.entities.systemcomponents.EntityPresetComponent;
|
import ca.blarg.gdx.entities.systemcomponents.EntityPresetComponent;
|
||||||
import ca.blarg.gdx.entities.systemcomponents.InactiveComponent;
|
import ca.blarg.gdx.entities.systemcomponents.InactiveComponent;
|
||||||
import ca.blarg.gdx.events.EventManager;
|
import ca.blarg.gdx.events.EventManager;
|
||||||
|
import com.badlogic.gdx.utils.*;
|
||||||
|
|
||||||
public class EntityManager implements Disposable {
|
public class EntityManager implements Disposable {
|
||||||
public final EventManager eventManager;
|
public final EventManager eventManager;
|
||||||
|
@ -315,12 +312,17 @@ public class EntityManager implements Disposable {
|
||||||
componentSystems.get(i).onRender(delta);
|
componentSystems.get(i).onRender(delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onUpdate(float delta) {
|
public void onUpdateGameState(float delta) {
|
||||||
for (Entity i : getAllWith(InactiveComponent.class))
|
for (Entity i : getAllWith(InactiveComponent.class))
|
||||||
remove(i);
|
remove(i);
|
||||||
|
|
||||||
for (int i = 0; i < componentSystems.size; ++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 ***/
|
/*** private Entity/Component management ***/
|
||||||
|
|
|
@ -5,7 +5,6 @@ import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.graphics.Camera;
|
import com.badlogic.gdx.graphics.Camera;
|
||||||
import com.badlogic.gdx.graphics.OrthographicCamera;
|
import com.badlogic.gdx.graphics.OrthographicCamera;
|
||||||
import com.badlogic.gdx.graphics.PerspectiveCamera;
|
import com.badlogic.gdx.graphics.PerspectiveCamera;
|
||||||
import ca.blarg.gdx.math.MathHelpers;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages graphics state relating to the viewport dimensions and camera(s).
|
* 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();
|
perspectiveCamera.update();
|
||||||
orthographicCamera.update();
|
orthographicCamera.update();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
package ca.blarg.gdx.processes;
|
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.GameApp;
|
||||||
import ca.blarg.gdx.events.Event;
|
import ca.blarg.gdx.events.Event;
|
||||||
import ca.blarg.gdx.events.EventHandler;
|
import ca.blarg.gdx.events.EventHandler;
|
||||||
import ca.blarg.gdx.events.EventManager;
|
import ca.blarg.gdx.events.EventManager;
|
||||||
import ca.blarg.gdx.states.GameState;
|
import ca.blarg.gdx.states.GameState;
|
||||||
|
import com.badlogic.gdx.utils.Disposable;
|
||||||
|
|
||||||
public abstract class GameProcess extends EventHandler implements Disposable {
|
public abstract class GameProcess extends EventHandler implements Disposable {
|
||||||
public final ProcessManager processManager;
|
public final ProcessManager processManager;
|
||||||
|
@ -60,7 +57,10 @@ public abstract class GameProcess extends EventHandler implements Disposable {
|
||||||
public void onRender(float delta) {
|
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) {
|
public boolean onTransition(float delta, boolean isTransitioningOut, boolean started) {
|
||||||
|
|
|
@ -6,10 +6,6 @@ import ca.blarg.gdx.events.EventManager;
|
||||||
import ca.blarg.gdx.states.GameState;
|
import ca.blarg.gdx.states.GameState;
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.utils.Disposable;
|
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;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
@ -200,7 +196,7 @@ public class ProcessManager implements Disposable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onUpdate(float delta) {
|
public void onUpdateGameState(float delta) {
|
||||||
cleanupInactiveProcesses();
|
cleanupInactiveProcesses();
|
||||||
checkForFinishedProcesses();
|
checkForFinishedProcesses();
|
||||||
processQueue();
|
processQueue();
|
||||||
|
@ -209,7 +205,15 @@ public class ProcessManager implements Disposable {
|
||||||
for (int i = 0; i < processes.size(); ++i) {
|
for (int i = 0; i < processes.size(); ++i) {
|
||||||
ProcessInfo processInfo = processes.get(i);
|
ProcessInfo processInfo = processes.get(i);
|
||||||
if (!processInfo.isInactive)
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,12 @@
|
||||||
package ca.blarg.gdx.states;
|
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.GameApp;
|
||||||
import ca.blarg.gdx.events.Event;
|
import ca.blarg.gdx.events.Event;
|
||||||
import ca.blarg.gdx.events.EventHandler;
|
import ca.blarg.gdx.events.EventHandler;
|
||||||
import ca.blarg.gdx.events.EventManager;
|
import ca.blarg.gdx.events.EventManager;
|
||||||
import ca.blarg.gdx.graphics.screeneffects.ScreenEffectManager;
|
import ca.blarg.gdx.graphics.screeneffects.ScreenEffectManager;
|
||||||
import ca.blarg.gdx.processes.ProcessManager;
|
import ca.blarg.gdx.processes.ProcessManager;
|
||||||
|
import com.badlogic.gdx.utils.Disposable;
|
||||||
|
|
||||||
public abstract class GameState extends EventHandler implements Disposable {
|
public abstract class GameState extends EventHandler implements Disposable {
|
||||||
public final StateManager stateManager;
|
public final StateManager stateManager;
|
||||||
|
@ -90,9 +87,13 @@ public abstract class GameState extends EventHandler implements Disposable {
|
||||||
processManager.onRender(delta);
|
processManager.onRender(delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onUpdate(float delta) {
|
public void onUpdateGameState(float delta) {
|
||||||
|
processManager.onUpdateGameState(delta);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onUpdateFrame(float delta) {
|
||||||
effectManager.onUpdate(delta);
|
effectManager.onUpdate(delta);
|
||||||
processManager.onUpdate(delta);
|
processManager.onUpdateFrame(delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onTransition(float delta, boolean isTransitioningOut, boolean started) {
|
public boolean onTransition(float delta, boolean isTransitioningOut, boolean started) {
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
package ca.blarg.gdx.states;
|
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.GameApp;
|
||||||
import ca.blarg.gdx.ReflectionUtils;
|
import ca.blarg.gdx.ReflectionUtils;
|
||||||
import ca.blarg.gdx.Strings;
|
import ca.blarg.gdx.Strings;
|
||||||
import ca.blarg.gdx.events.EventManager;
|
import ca.blarg.gdx.events.EventManager;
|
||||||
|
import com.badlogic.gdx.Gdx;
|
||||||
|
import com.badlogic.gdx.utils.Disposable;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
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;
|
lastCleanedStatesWereAllOverlays = false;
|
||||||
|
|
||||||
cleanupInactiveStates();
|
cleanupInactiveStates();
|
||||||
|
@ -276,7 +275,15 @@ public class StateManager implements Disposable {
|
||||||
for (int i = getTopNonOverlayIndex(); i != -1 && i < states.size(); ++i) {
|
for (int i = getTopNonOverlayIndex(); i != -1 && i < states.size(); ++i) {
|
||||||
StateInfo stateInfo = states.get(i);
|
StateInfo stateInfo = states.get(i);
|
||||||
if (!stateInfo.isInactive)
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue