diff --git a/marblegame.hl b/marblegame.hl index 51136fd7..279e0743 100644 Binary files a/marblegame.hl and b/marblegame.hl differ diff --git a/src/DtsObject.hx b/src/DtsObject.hx index 524b892e..93a3ba0f 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -386,8 +386,7 @@ class DtsObject extends GameObject { } if (flags & 4 > 0) { material.blendMode = BlendMode.Alpha; - // mmaterial.mainPass.depthWrite = false; - material.mainPass.culling = h3d.mat.Data.Face.Front; + material.mainPass.culling = h3d.mat.Data.Face.None; } // // TODO TRANSPARENCY SHIT if (flags & 8 > 0) { @@ -763,6 +762,8 @@ class DtsObject extends GameObject { meshIndex++; if (prim.buffer != null) { prim.addNormals(); + for (norm in prim.normals) + norm = norm.multiply(-1); prim.flush(); } mesh.primitive = prim; @@ -783,6 +784,8 @@ class DtsObject extends GameObject { } if (prim.buffer != null) { prim.addNormals(); + for (norm in prim.normals) + norm = norm.multiply(-1); prim.flush(); } if (_regenNormals) { diff --git a/src/Marble.hx b/src/Marble.hx index 604a291a..ffefd901 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -821,7 +821,7 @@ class Marble extends GameObject { var intersectT = this.getIntersectionTime(timeStep, velocity); - if (intersectT < timeStep && intersectT > 0.000001) { + if (intersectT < timeStep && intersectT >= 0.001) { // intersectT *= 0.8; // We uh tick the shit to not actually at the contact time cause bruh // intersectT /= 2; var diff = timeStep - intersectT; @@ -885,7 +885,7 @@ class Marble extends GameObject { } if (mode == Finish) { - this.velocity = this.velocity.multiply(0.7); + this.velocity = this.velocity.multiply(0.925); } var newPos = pos.add(this.velocity.multiply(timeStep)); diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index 147e5b11..a1b3a846 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -222,9 +222,12 @@ class MarbleWorld extends Scheduler { this.timeState.gameplayClock = 0; this.bonusTime = 0; this.outOfBounds = false; + this.outOfBoundsTime = null; this.finishTime = null; this.helpTextTimeState = Math.NEGATIVE_INFINITY; this.alertTextTimeState = Math.NEGATIVE_INFINITY; + if (this.endPad != null) + this.endPad.inFinish = false; if (this.totalGems > 0) { this.gemCount = 0; this.playGui.formatGemCounter(this.gemCount, this.totalGems); @@ -650,6 +653,12 @@ class MarbleWorld extends Scheduler { this.playGui.update(timeState); AudioManager.update(this.scene); + if (this.outOfBounds && this.finishTime == null && Key.isPressed(Settings.controlsSettings.powerup)) { + this.clearSchedule(); + this.restart(); + return; + } + this.updateTexts(); } @@ -715,27 +724,27 @@ class MarbleWorld extends Scheduler { var val = ""; if (funcdata[0] == "bind") { if (funcdata[1] == "moveforward") - val = Key.getKeyName(Settings.controlsSettings.forward); + val = Util.getKeyForButton(Settings.controlsSettings.forward); if (funcdata[1] == "movebackward") - val = Key.getKeyName(Settings.controlsSettings.backward); + val = Util.getKeyForButton(Settings.controlsSettings.backward); if (funcdata[1] == "moveleft") - val = Key.getKeyName(Settings.controlsSettings.left); + val = Util.getKeyForButton(Settings.controlsSettings.left); if (funcdata[1] == "moveright") - val = Key.getKeyName(Settings.controlsSettings.right); + val = Util.getKeyForButton(Settings.controlsSettings.right); if (funcdata[1] == "panup") - val = Key.getKeyName(Settings.controlsSettings.camForward); + val = Util.getKeyForButton(Settings.controlsSettings.camForward); if (funcdata[1] == "pandown") - val = Key.getKeyName(Settings.controlsSettings.camBackward); + val = Util.getKeyForButton(Settings.controlsSettings.camBackward); if (funcdata[1] == "turnleft") - val = Key.getKeyName(Settings.controlsSettings.camLeft); + val = Util.getKeyForButton(Settings.controlsSettings.camLeft); if (funcdata[1] == "turnright") - val = Key.getKeyName(Settings.controlsSettings.camRight); + val = Util.getKeyForButton(Settings.controlsSettings.camRight); if (funcdata[1] == "jump") - val = Key.getKeyName(Settings.controlsSettings.jump); + val = Util.getKeyForButton(Settings.controlsSettings.jump); if (funcdata[1] == "mousefire") - val = Key.getKeyName(Settings.controlsSettings.powerup); + val = Util.getKeyForButton(Settings.controlsSettings.powerup); if (funcdata[1] == "freelook") - val = Key.getKeyName(Settings.controlsSettings.freelook); + val = Util.getKeyForButton(Settings.controlsSettings.freelook); } start = val.length + pos; text = pre + val + post; diff --git a/src/Util.hx b/src/Util.hx index d7856280..89a552e5 100644 --- a/src/Util.hx +++ b/src/Util.hx @@ -1,5 +1,6 @@ package src; +import hxd.Key; import h2d.Tile; import h3d.mat.Texture; import hxd.BitmapData; @@ -175,4 +176,30 @@ class Util { return '${minutesTen}${minutesOne}:${secondsTen}${secondsOne}.${hundredthTen}${hundredthOne}${thousandth}'; } + + public static function getKeyForButton(button:Int) { + var keyName = Key.getKeyName(button); + if (keyName == "MouseLeft") + keyName = "the Left Mouse Button"; + if (keyName == "MouseRight") + keyName = "the Right Mouse Button"; + if (keyName == "MouseMiddle") + keyName = "the Middle Mouse Button"; + if (keyName == "Space") + keyName = "Space Bar"; + return keyName; + } + + public static function getKeyForButton2(button:Int) { + var keyName = Key.getKeyName(button); + if (keyName == "MouseLeft") + keyName = "Left Mouse"; + if (keyName == "MouseRight") + keyName = "Right Mouse"; + if (keyName == "MouseMiddle") + keyName = "Middle Mouse"; + if (keyName == "Space") + keyName = "Space Bar"; + return keyName; + } } diff --git a/src/collision/CollisionEntity.hx b/src/collision/CollisionEntity.hx index c27ddc52..ecd977b1 100644 --- a/src/collision/CollisionEntity.hx +++ b/src/collision/CollisionEntity.hx @@ -92,10 +92,9 @@ class CollisionEntity implements IOctreeObject { var invMatrix = transform.clone(); invMatrix.invert(); - var localpos = position.clone(); - localpos.transform(invMatrix); var sphereBounds = new Bounds(); - sphereBounds.addSpherePos(localpos.x, localpos.y, localpos.z, radius); + sphereBounds.addSpherePos(position.x, position.y, position.z, radius * 1.1); + sphereBounds.transform(invMatrix); var surfaces = octree.boundingSearch(sphereBounds); var tform = transform.clone(); @@ -123,7 +122,7 @@ class CollisionEntity implements IOctreeObject { var v = surface.points[surface.indices[i + 1]].transformed(tform); var v2 = surface.points[surface.indices[i + 2]].transformed(tform); - var surfacenormal = surface.normals[surface.indices[i]].transformed3x3(transform); + var surfacenormal = surface.normals[surface.indices[i]].transformed3x3(transform).normalized(); var res = Collision.IntersectTriangleSphere(v0, v, v2, surfacenormal, position, radius); var closest = res.point; diff --git a/src/gui/HelpCreditsGui.hx b/src/gui/HelpCreditsGui.hx index 5ed17e42..971be231 100644 --- a/src/gui/HelpCreditsGui.hx +++ b/src/gui/HelpCreditsGui.hx @@ -400,27 +400,27 @@ class HelpCreditsGui extends GuiImage { var val = ""; if (funcdata[0] == "bind") { if (funcdata[1] == "moveforward") - val = Key.getKeyName(Settings.controlsSettings.forward); + val = Util.getKeyForButton(Settings.controlsSettings.forward); if (funcdata[1] == "movebackward") - val = Key.getKeyName(Settings.controlsSettings.backward); + val = Util.getKeyForButton(Settings.controlsSettings.backward); if (funcdata[1] == "moveleft") - val = Key.getKeyName(Settings.controlsSettings.left); + val = Util.getKeyForButton(Settings.controlsSettings.left); if (funcdata[1] == "moveright") - val = Key.getKeyName(Settings.controlsSettings.right); + val = Util.getKeyForButton(Settings.controlsSettings.right); if (funcdata[1] == "panup") - val = Key.getKeyName(Settings.controlsSettings.camForward); + val = Util.getKeyForButton(Settings.controlsSettings.camForward); if (funcdata[1] == "pandown") - val = Key.getKeyName(Settings.controlsSettings.camBackward); + val = Util.getKeyForButton(Settings.controlsSettings.camBackward); if (funcdata[1] == "turnleft") - val = Key.getKeyName(Settings.controlsSettings.camLeft); + val = Util.getKeyForButton(Settings.controlsSettings.camLeft); if (funcdata[1] == "turnright") - val = Key.getKeyName(Settings.controlsSettings.camRight); + val = Util.getKeyForButton(Settings.controlsSettings.camRight); if (funcdata[1] == "jump") - val = Key.getKeyName(Settings.controlsSettings.jump); + val = Util.getKeyForButton(Settings.controlsSettings.jump); if (funcdata[1] == "mousefire") - val = Key.getKeyName(Settings.controlsSettings.powerup); + val = Util.getKeyForButton(Settings.controlsSettings.powerup); if (funcdata[1] == "freelook") - val = Key.getKeyName(Settings.controlsSettings.freelook); + val = Util.getKeyForButton(Settings.controlsSettings.freelook); } start = val.length + pos; text = pre + val + post; diff --git a/src/gui/OptionsDlg.hx b/src/gui/OptionsDlg.hx index a946be36..9d51b57b 100644 --- a/src/gui/OptionsDlg.hx +++ b/src/gui/OptionsDlg.hx @@ -9,6 +9,7 @@ import hxd.res.BitmapFont; import src.MarbleGame; import h3d.Vector; import src.ResourceLoader; +import src.Util; class OptionsDlg extends GuiImage { public function new() { @@ -392,14 +393,14 @@ Extensions: EAX 2.0, EAX 3.0, EAX Unified, and EAX-AC3"; var conflicting = getConflictingBinding(bindingName, key); if (conflicting == null) { - ctrl.txtCtrl.text.text = Key.getKeyName(key); + ctrl.txtCtrl.text.text = Util.getKeyForButton2(key); bindingFunc(key); } else { - var yesNoDlg = new MessageBoxYesNoDlg('
"${Key.getKeyName(key)}" is already bound to "${conflicting}"!
Do you want to undo this mapping?
"${Util.getKeyForButton2(key)}" is already bound to "${conflicting}"!
Do you want to undo this mapping?