From 35a86a1aacf77fccb718dd23d61565a985130947 Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sat, 17 Oct 2020 15:34:00 +0100 Subject: [PATCH 1/2] add universe draw events --- core/src/mindustry/game/EventType.java | 5 ++- .../graphics/g3d/PlanetRenderer.java | 31 +++++++++++-------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index 0ffb2f7369..b786bb47f7 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -35,7 +35,10 @@ public class EventType{ preDraw, postDraw, uiDrawBegin, - uiDrawEnd + uiDrawEnd, + //before/after bloom used, skybox or planets drawn - use Vars.renderer.planets + universeDrawBegin, + universeDrawEnd } public static class WinEvent{} diff --git a/core/src/mindustry/graphics/g3d/PlanetRenderer.java b/core/src/mindustry/graphics/g3d/PlanetRenderer.java index e3eb74a7b5..14a4cc8820 100644 --- a/core/src/mindustry/graphics/g3d/PlanetRenderer.java +++ b/core/src/mindustry/graphics/g3d/PlanetRenderer.java @@ -10,6 +10,7 @@ import arc.math.geom.*; import arc.struct.*; import arc.util.*; import mindustry.content.*; +import mindustry.game.EventType.*; import mindustry.graphics.*; import mindustry.graphics.g3d.PlanetGrid.*; import mindustry.type.*; @@ -38,19 +39,19 @@ public class PlanetRenderer implements Disposable{ public float zoom = 1f; private final Mesh[] outlines = new Mesh[10]; - private final PlaneBatch3D projector = new PlaneBatch3D(); - private final Mat3D mat = new Mat3D(); - private final FrameBuffer buffer = new FrameBuffer(2, 2, true); - private PlanetInterfaceRenderer irenderer; + public final PlaneBatch3D projector = new PlaneBatch3D(); + public final Mat3D mat = new Mat3D(); + public final FrameBuffer buffer = new FrameBuffer(2, 2, true); + public PlanetInterfaceRenderer irenderer; - private final Bloom bloom = new Bloom(Core.graphics.getWidth()/4, Core.graphics.getHeight()/4, true, false){{ + public final Bloom bloom = new Bloom(Core.graphics.getWidth()/4, Core.graphics.getHeight()/4, true, false){{ setThreshold(0.8f); blurPasses = 6; }}; - private final Mesh atmosphere = MeshBuilder.buildHex(Color.white, 2, false, 1.5f); + public final Mesh atmosphere = MeshBuilder.buildHex(Color.white, 2, false, 1.5f); //seed: 8kmfuix03fw - private final CubemapMesh skybox = new CubemapMesh(new Cubemap("cubemaps/stars/")); + public final CubemapMesh skybox = new CubemapMesh(new Cubemap("cubemaps/stars/")); public PlanetRenderer(){ camPos.set(0, 0f, camLength); @@ -82,6 +83,8 @@ public class PlanetRenderer implements Disposable{ projector.proj(cam.combined); batch.proj(cam.combined); + Events.fire(Trigger.universeDrawBegin); + beginBloom(); skybox.render(cam.combined); @@ -90,6 +93,8 @@ public class PlanetRenderer implements Disposable{ endBloom(); + Events.fire(Trigger.universeDrawEnd); + Gl.enable(Gl.blend); irenderer.renderProjections(); @@ -100,16 +105,16 @@ public class PlanetRenderer implements Disposable{ cam.update(); } - private void beginBloom(){ + public void beginBloom(){ bloom.resize(Core.graphics.getWidth() / 4, Core.graphics.getHeight() / 4); bloom.capture(); } - private void endBloom(){ + public void endBloom(){ bloom.render(); } - private void renderPlanet(Planet planet){ + public void renderPlanet(Planet planet){ //render planet at offsetted position in the world planet.mesh.render(cam.combined, planet.getTransform(mat)); @@ -137,7 +142,7 @@ public class PlanetRenderer implements Disposable{ } } - private void renderOrbit(Planet planet){ + public void renderOrbit(Planet planet){ if(planet.parent == null) return; Vec3 center = planet.parent.position; @@ -147,7 +152,7 @@ public class PlanetRenderer implements Disposable{ batch.flush(Gl.lineLoop); } - private void renderSectors(Planet planet){ + public void renderSectors(Planet planet){ //apply transformed position batch.proj().mul(planet.getTransform(mat)); @@ -268,7 +273,7 @@ public class PlanetRenderer implements Disposable{ } } - private Mesh outline(int size){ + public Mesh outline(int size){ if(outlines[size] == null){ outlines[size] = MeshBuilder.buildHex(new HexMesher(){ @Override From ef2bf2e12906b7e61005dc2d9e59f27d9c819c54 Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sat, 17 Oct 2020 15:38:12 +0100 Subject: [PATCH 2/2] add universeDraw event --- core/src/mindustry/game/EventType.java | 5 ++++- core/src/mindustry/graphics/g3d/PlanetRenderer.java | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index b786bb47f7..cc71e17224 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -36,8 +36,11 @@ public class EventType{ postDraw, uiDrawBegin, uiDrawEnd, - //before/after bloom used, skybox or planets drawn - use Vars.renderer.planets + //before/after bloom used, skybox or planets drawn universeDrawBegin, + //skybox drawn and bloom is enabled - use Vars.renderer.planets + universeDraw, + //planets drawn and bloom disabled universeDrawEnd } diff --git a/core/src/mindustry/graphics/g3d/PlanetRenderer.java b/core/src/mindustry/graphics/g3d/PlanetRenderer.java index 14a4cc8820..6398839677 100644 --- a/core/src/mindustry/graphics/g3d/PlanetRenderer.java +++ b/core/src/mindustry/graphics/g3d/PlanetRenderer.java @@ -89,6 +89,8 @@ public class PlanetRenderer implements Disposable{ skybox.render(cam.combined); + Events.fire(Trigger.universeDraw); + renderPlanet(solarSystem); endBloom();