diff --git a/commons/src/main/com/mbrlabs/mundus/commons/Scene.java b/commons/src/main/com/mbrlabs/mundus/commons/Scene.java index 086518801..15b0ce365 100644 --- a/commons/src/main/com/mbrlabs/mundus/commons/Scene.java +++ b/commons/src/main/com/mbrlabs/mundus/commons/Scene.java @@ -18,6 +18,7 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.PerspectiveCamera; +import com.badlogic.gdx.graphics.g3d.ModelBatch; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Disposable; import com.mbrlabs.mundus.commons.assets.TerrainAsset; @@ -46,6 +47,7 @@ public class Scene implements Disposable { public GameObject currentSelection; public PerspectiveCamera cam; + public ModelBatch batch; public Scene() { environment = new MundusEnvironment(); @@ -69,6 +71,16 @@ public Scene() { sceneGraph = new SceneGraph(this); } + public void render() { + render(Gdx.graphics.getDeltaTime()); + } + + public void render(float delta) { + batch.begin(cam); + sceneGraph.render(delta); + batch.end(); + } + public String getName() { return name; } diff --git a/commons/src/main/com/mbrlabs/mundus/commons/scene3d/SceneGraph.java b/commons/src/main/com/mbrlabs/mundus/commons/scene3d/SceneGraph.java index e896c917f..117774df9 100644 --- a/commons/src/main/com/mbrlabs/mundus/commons/scene3d/SceneGraph.java +++ b/commons/src/main/com/mbrlabs/mundus/commons/scene3d/SceneGraph.java @@ -17,7 +17,6 @@ package com.mbrlabs.mundus.commons.scene3d; import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.g3d.ModelBatch; import com.badlogic.gdx.utils.Array; import com.mbrlabs.mundus.commons.Scene; @@ -30,7 +29,6 @@ public class SceneGraph { protected GameObject root; public Scene scene; - public ModelBatch batch; private GameObject selected; @@ -41,16 +39,10 @@ public SceneGraph(Scene scene) { this.scene = scene; } - public void render() { - render(Gdx.graphics.getDeltaTime()); - } - public void render(float delta) { - batch.begin(scene.cam); for (GameObject go : root.getChildren()) { go.render(delta); } - batch.end(); } public void update() { diff --git a/commons/src/main/com/mbrlabs/mundus/commons/scene3d/components/ModelComponent.java b/commons/src/main/com/mbrlabs/mundus/commons/scene3d/components/ModelComponent.java index 0ad27dd4e..9f7bd8797 100644 --- a/commons/src/main/com/mbrlabs/mundus/commons/scene3d/components/ModelComponent.java +++ b/commons/src/main/com/mbrlabs/mundus/commons/scene3d/components/ModelComponent.java @@ -89,7 +89,7 @@ public ModelInstance getModelInstance() { @Override public void render(float delta) { modelInstance.transform.set(gameObject.getTransform()); - gameObject.sceneGraph.batch.render(modelInstance, gameObject.sceneGraph.scene.environment, shader); + gameObject.sceneGraph.scene.batch.render(modelInstance, gameObject.sceneGraph.scene.environment, shader); } @Override diff --git a/commons/src/main/com/mbrlabs/mundus/commons/scene3d/components/TerrainComponent.java b/commons/src/main/com/mbrlabs/mundus/commons/scene3d/components/TerrainComponent.java index e3e98a1a5..90f3e10cf 100644 --- a/commons/src/main/com/mbrlabs/mundus/commons/scene3d/components/TerrainComponent.java +++ b/commons/src/main/com/mbrlabs/mundus/commons/scene3d/components/TerrainComponent.java @@ -55,7 +55,7 @@ public void setShader(Shader shader) { @Override public void render(float delta) { - gameObject.sceneGraph.batch.render(terrain.getTerrain(), gameObject.sceneGraph.scene.environment, shader); + gameObject.sceneGraph.scene.batch.render(terrain.getTerrain(), gameObject.sceneGraph.scene.environment, shader); } @Override diff --git a/editor/src/main/com/mbrlabs/mundus/editor/Editor.kt b/editor/src/main/com/mbrlabs/mundus/editor/Editor.kt index 4ab3e891a..f3f7d92e7 100644 --- a/editor/src/main/com/mbrlabs/mundus/editor/Editor.kt +++ b/editor/src/main/com/mbrlabs/mundus/editor/Editor.kt @@ -17,6 +17,7 @@ package com.mbrlabs.mundus.editor import com.badlogic.gdx.ApplicationListener +import com.badlogic.gdx.Gdx import com.badlogic.gdx.InputAdapter import com.badlogic.gdx.backends.lwjgl3.Lwjgl3WindowAdapter import com.badlogic.gdx.graphics.Color @@ -121,7 +122,7 @@ class Editor : Lwjgl3WindowAdapter(), ApplicationListener, } sg.update() - sg.render() + sg.render(Gdx.graphics.deltaTime) toolManager.render() compass.render(batch) diff --git a/editor/src/main/com/mbrlabs/mundus/editor/core/project/ProjectManager.java b/editor/src/main/com/mbrlabs/mundus/editor/core/project/ProjectManager.java index 72fb196ab..4809aaa3f 100644 --- a/editor/src/main/com/mbrlabs/mundus/editor/core/project/ProjectManager.java +++ b/editor/src/main/com/mbrlabs/mundus/editor/core/project/ProjectManager.java @@ -133,7 +133,7 @@ public ProjectContext createProject(String name, String folder) { scene.environment.setFog(new Fog()); scene.setId(newProjectContext.obtainID()); SceneManager.saveScene(newProjectContext, scene); - scene.sceneGraph.batch = modelBatch; + scene.sceneGraph.scene.batch = modelBatch; // save .pro file newProjectContext.scenes.add(scene.getName()); @@ -334,9 +334,9 @@ public EditorScene loadScene(ProjectContext context, String sceneName) throws Fi EditorScene scene = SceneConverter.convert(sceneDTO, context.assetManager.getAssetMap()); scene.skybox = SkyboxBuilder.createDefaultSkybox(); + scene.batch = modelBatch; SceneGraph sceneGraph = scene.sceneGraph; - sceneGraph.batch = modelBatch; for (GameObject go : sceneGraph.getGameObjects()) { initGameObject(context, go); } diff --git a/editor/src/main/com/mbrlabs/mundus/editor/scene3d/components/PickableModelComponent.java b/editor/src/main/com/mbrlabs/mundus/editor/scene3d/components/PickableModelComponent.java index 4edde469d..55cadee79 100644 --- a/editor/src/main/com/mbrlabs/mundus/editor/scene3d/components/PickableModelComponent.java +++ b/editor/src/main/com/mbrlabs/mundus/editor/scene3d/components/PickableModelComponent.java @@ -43,7 +43,7 @@ public void encodeRaypickColorId() { @Override public void renderPick() { - gameObject.sceneGraph.batch.render(modelInstance, Shaders.INSTANCE.getPickerShader()); + gameObject.sceneGraph.scene.batch.render(modelInstance, Shaders.INSTANCE.getPickerShader()); } @Override diff --git a/editor/src/main/com/mbrlabs/mundus/editor/scene3d/components/PickableTerrainComponent.java b/editor/src/main/com/mbrlabs/mundus/editor/scene3d/components/PickableTerrainComponent.java index 4f8dd2a25..7ca92b7e9 100644 --- a/editor/src/main/com/mbrlabs/mundus/editor/scene3d/components/PickableTerrainComponent.java +++ b/editor/src/main/com/mbrlabs/mundus/editor/scene3d/components/PickableTerrainComponent.java @@ -41,7 +41,7 @@ public void encodeRaypickColorId() { @Override public void renderPick() { - gameObject.sceneGraph.batch.render(terrain.getTerrain(), Shaders.INSTANCE.getPickerShader()); + gameObject.sceneGraph.scene.batch.render(terrain.getTerrain(), Shaders.INSTANCE.getPickerShader()); } } diff --git a/editor/src/main/com/mbrlabs/mundus/editor/tools/picker/GameObjectPicker.java b/editor/src/main/com/mbrlabs/mundus/editor/tools/picker/GameObjectPicker.java index 7b833ebf9..4b57f0c2d 100644 --- a/editor/src/main/com/mbrlabs/mundus/editor/tools/picker/GameObjectPicker.java +++ b/editor/src/main/com/mbrlabs/mundus/editor/tools/picker/GameObjectPicker.java @@ -62,11 +62,11 @@ public GameObject pick(EditorScene scene, int screenX, int screenY) { } private void renderPickableScene(SceneGraph sceneGraph) { - sceneGraph.batch.begin(sceneGraph.scene.cam); + sceneGraph.scene.batch.begin(sceneGraph.scene.cam); for (GameObject go : sceneGraph.getGameObjects()) { renderPickableGameObject(go); } - sceneGraph.batch.end(); + sceneGraph.scene.batch.end(); } private void renderPickableGameObject(GameObject go) { diff --git a/editor/src/main/com/mbrlabs/mundus/editor/tools/picker/ToolHandlePicker.java b/editor/src/main/com/mbrlabs/mundus/editor/tools/picker/ToolHandlePicker.java index 438137b15..a14644211 100644 --- a/editor/src/main/com/mbrlabs/mundus/editor/tools/picker/ToolHandlePicker.java +++ b/editor/src/main/com/mbrlabs/mundus/editor/tools/picker/ToolHandlePicker.java @@ -36,7 +36,7 @@ public ToolHandlePicker() { public ToolHandle pick(ToolHandle[] handles, EditorScene scene, int screenX, int screenY) { begin(scene.viewport); - renderPickableScene(handles, scene.sceneGraph.batch, scene.cam); + renderPickableScene(handles, scene.batch, scene.cam); end(); Pixmap pm = getFrameBufferPixmap(scene.viewport);