From a94434778b28a086263f4e33b0c3f6a6bae7763e Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Wed, 23 Jun 2021 21:08:13 +0530 Subject: [PATCH] endgameshit and shadows --- src/DifBuilder.hx | 1 + src/DtsObject.hx | 8 +++++--- src/Marble.hx | 1 + src/MarbleGame.hx | 8 ++++++-- src/MarbleWorld.hx | 19 ++++++++++++++++++- src/Sky.hx | 2 +- src/gui/EndGameGui.hx | 18 ++++++++++++++---- 7 files changed, 46 insertions(+), 11 deletions(-) diff --git a/src/DifBuilder.hx b/src/DifBuilder.hx index acca5338..77dd852a 100644 --- a/src/DifBuilder.hx +++ b/src/DifBuilder.hx @@ -306,6 +306,7 @@ class DifBuilder { material = Material.create(); } material.shadows = false; + material.receiveShadows = true; // material.mainPass.addShader(new h3d.shader.pbr.PropsValues(1, 0, 0, 1)); // material.mainPass.wireframe = true; diff --git a/src/DtsObject.hx b/src/DtsObject.hx index 7ed262ac..554d4671 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -347,6 +347,7 @@ class DtsObject extends GameObject { // } // TODO TRANSLUENCY SHIT } + material.shadows = false; if (material.texture == null) { var dtsshader = new DtsTexture(); dtsshader.currentOpacity = 1; @@ -357,6 +358,7 @@ class DtsObject extends GameObject { texture.uploadBitmap(bitmap); dtsshader.texture = texture; material.mainPass.addShader(dtsshader); + material.receiveShadows = true; } if (flags & 4 > 0) { material.blendMode = BlendMode.Alpha; @@ -369,11 +371,13 @@ class DtsObject extends GameObject { // material.mainPass.setPassName("overlay"); // material.textureShader.additive = true; } - if (flags & 16 > 0) + if (flags & 16 > 0) { material.blendMode = BlendMode.Sub; + } if (flags & 32 > 0) { material.mainPass.enableLights = false; + // material.receiveShadows = false; // material.mainPass.setPassName("overlay"); // var pbrprops = material.mainPass.getShader(h3d.shader.pbr.PropsValues); // pbrprops.emissiveValue = 1; @@ -387,8 +391,6 @@ class DtsObject extends GameObject { // } // ((flags & 32) || environmentMaterial) ? new Materia - material.shadows = false; - // material.mainPass.addShader(new AlphaMult()); this.materials.push(material); diff --git a/src/Marble.hx b/src/Marble.hx index 0d23d90c..403950b1 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -165,6 +165,7 @@ class Marble extends GameObject { var marbleTexture = ResourceLoader.loader.load("data/shapes/balls/base.marble.png").toTexture(); var marbleMaterial = Material.create(marbleTexture); marbleMaterial.shadows = false; + marbleMaterial.castShadows = true; var obj = new Mesh(geom, marbleMaterial, this); obj.scale(_radius); diff --git a/src/MarbleGame.hx b/src/MarbleGame.hx index 532d26dd..afa12a11 100644 --- a/src/MarbleGame.hx +++ b/src/MarbleGame.hx @@ -31,10 +31,14 @@ class MarbleGame { public function update(dt:Float) { if (world != null) { + if (world._disposed) { + world = null; + return; + } if (!paused) { world.update(dt); } - if (Key.isPressed(Key.ESCAPE)) { + if (Key.isPressed(Key.ESCAPE) && world.finishTime == null) { paused = !paused; if (paused) { world.setCursorLock(false); @@ -79,7 +83,7 @@ class MarbleGame { } public function render(e:h3d.Engine) { - if (world != null) + if (world != null && !world._disposed) world.render(e); } } diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index c617b3ac..6e5bbfe7 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -1,5 +1,6 @@ package src; +import gui.PlayMissionGui; import src.MarbleGame; import gui.EndGameGui; import sdl.Cursor; @@ -107,6 +108,8 @@ class MarbleWorld extends Scheduler { /** The new target camera orientation quat */ public var newOrientationQuat = new Quat(); + public var _disposed:Bool = false; + public function new(scene:Scene, scene2d:h2d.Scene, mission:Mission) { this.scene = scene; this.scene2d = scene2d; @@ -170,6 +173,9 @@ class MarbleWorld extends Scheduler { scene.lightSystem.ambientLight.load(ambientColor); + var shadow = scene.renderer.getPass(h3d.pass.DefaultShadowMap); + shadow.power = 0.5; + var sunlight = new DirLight(sunDirection, scene); sunlight.color = directionalColor; } @@ -221,6 +227,7 @@ class MarbleWorld extends Scheduler { this.marble.camera.CameraYaw = euler.z - Math.PI / 2; this.marble.camera.CameraPitch = -0.45; this.marble.camera.oob = false; + this.marble.camera.finish = false; this.marble.mode = Start; this.marble.startPad = cast startquat.pad; sky.follow = marble; @@ -789,7 +796,16 @@ class MarbleWorld extends Scheduler { } function showFinishScreen() { - MarbleGame.canvas.pushDialog(new EndGameGui()); + var egg:EndGameGui = null; + egg = new EndGameGui((sender) -> { + this.dispose(); + MarbleGame.canvas.setContent(new PlayMissionGui()); + }, (sender) -> { + MarbleGame.canvas.popDialog(egg); + this.setCursorLock(true); + this.restart(); + }); + MarbleGame.canvas.pushDialog(egg); this.setCursorLock(false); return 0; } @@ -888,6 +904,7 @@ class MarbleWorld extends Scheduler { public function dispose() { this.playGui.dispose(); scene.removeChildren(); + this._disposed = true; } } diff --git a/src/Sky.hx b/src/Sky.hx index 04a756fe..d8d6a811 100644 --- a/src/Sky.hx +++ b/src/Sky.hx @@ -31,7 +31,7 @@ class Sky extends Object { // This is such a hack // skyMesh.material.mainPass.addShader(new h3d.shader.pbr.PropsValues(1, 0, 0, 1)); skyMesh.material.mainPass.enableLights = false; - skyMesh.material.receiveShadows = false; + skyMesh.material.shadows = false; skyMesh.material.blendMode = None; // var pbrprops = skyMesh.material.mainPass.getShader(PropsValues); // pbrprops.emissiveValue = 1; diff --git a/src/gui/EndGameGui.hx b/src/gui/EndGameGui.hx index 91e7fa01..496c60cf 100644 --- a/src/gui/EndGameGui.hx +++ b/src/gui/EndGameGui.hx @@ -6,7 +6,7 @@ import h3d.Vector; import src.ResourceLoader; class EndGameGui extends GuiControl { - public function new() { + public function new(continueFunc:GuiControl->Void, restartFunc:GuiControl->Void) { super(); this.horizSizing = Width; this.vertSizing = Height; @@ -31,12 +31,14 @@ class EndGameGui extends GuiControl { continueButton.vertSizing = Bottom; continueButton.position = new Vector(333, 386); continueButton.extent = new Vector(113, 47); + continueButton.pressedAction = continueFunc; var restartButton = new GuiButton(loadButtonImages("data/ui/endgame/replay")); restartButton.horizSizing = Right; restartButton.vertSizing = Bottom; restartButton.position = new Vector(51, 388); restartButton.extent = new Vector(104, 48); + restartButton.pressedAction = restartFunc; var arial14fontdata = ResourceLoader.loader.load("data/font/Arial14.fnt"); var arial14 = new BitmapFont(arial14fontdata.entry); @@ -65,12 +67,12 @@ class EndGameGui extends GuiControl { } } - var congrats = new GuiText(expo50); + var congrats = new GuiMLText(expo50, mlFontLoader); congrats.text.textColor = 0xffff00; - congrats.text.text = "Final Time:"; + congrats.text.text = 'Final Time: 99:59.999'; congrats.text.filter = new DropShadow(1.414, 0.785, 0, 1, 0, 0.4, 1, true); congrats.position = new Vector(43, 17); - congrats.extent = new Vector(208, 50); + congrats.extent = new Vector(408, 50); pg.addChild(congrats); var finishMessage = new GuiText(expo32); @@ -90,6 +92,14 @@ class EndGameGui extends GuiControl { leftColumn.extent = new Vector(208, 50); pg.addChild(leftColumn); + var rightColumn = new GuiMLText(domcasual32, mlFontLoader); + rightColumn.text.textColor = 0x000000; + rightColumn.text.text = '99:59.999
99:59.999
99:59.999
99:59.999


99:59.999
99:59.999
99:59.999'; + rightColumn.text.filter = new DropShadow(1.414, 0.785, 0xffffff, 1, 0, 0.4, 1, true); + rightColumn.position = new Vector(274, 103); + rightColumn.extent = new Vector(208, 50); + pg.addChild(rightColumn); + pg.addChild(continueButton); pg.addChild(restartButton);