mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
fix js and camera stuff
This commit is contained in:
parent
f019160c3f
commit
9c7c8f318e
23 changed files with 166 additions and 18 deletions
|
|
@ -27,6 +27,7 @@ import h3d.Vector;
|
|||
import hxsl.Types.Matrix;
|
||||
import h3d.scene.Scene;
|
||||
import src.Gamepad;
|
||||
import src.MarbleGame;
|
||||
|
||||
enum CameraMode {
|
||||
FreeOrbit;
|
||||
|
|
@ -63,6 +64,10 @@ class CameraController extends Object {
|
|||
|
||||
var _ignoreCursor:Bool = false;
|
||||
|
||||
var hasXInput:Bool = false;
|
||||
var hasYInput:Bool = false;
|
||||
var dt:Float;
|
||||
|
||||
public function new(marble:Marble) {
|
||||
super();
|
||||
this.marble = marble;
|
||||
|
|
@ -127,8 +132,8 @@ class CameraController extends Object {
|
|||
}
|
||||
}
|
||||
|
||||
var factor = isTouch ? Util.lerp(1 / 250, 1 / 25,
|
||||
Settings.controlsSettings.cameraSensitivity) : Util.lerp(1 / 2500, 1 / 100, Settings.controlsSettings.cameraSensitivity);
|
||||
var factor = isTouch ? Util.lerp(1 / 25, 1 / 15,
|
||||
Settings.controlsSettings.cameraSensitivity) : Util.lerp(1 / 750, 1 / 50, Settings.controlsSettings.cameraSensitivity);
|
||||
|
||||
// CameraPitch += deltaposY * factor;
|
||||
// CameraYaw += deltaposX * factor;
|
||||
|
|
@ -136,6 +141,20 @@ class CameraController extends Object {
|
|||
nextCameraPitch = CameraPitch + deltaposY * factor;
|
||||
nextCameraYaw = CameraYaw + deltaposX * factor;
|
||||
|
||||
if (Math.abs(deltaposX) > 0.001)
|
||||
hasXInput = true;
|
||||
else
|
||||
hasXInput = false;
|
||||
if (Math.abs(deltaposY) > 0.001)
|
||||
hasYInput = true;
|
||||
else
|
||||
hasYInput = false;
|
||||
|
||||
if (MarbleGame.instance.touchInput.cameraInput.pressed) {
|
||||
hasXInput = true;
|
||||
hasYInput = true;
|
||||
}
|
||||
|
||||
// var rotX = deltaposX * 0.001 * Settings.controlsSettings.cameraSensitivity * Math.PI * 2;
|
||||
// var rotY = deltaposY * 0.001 * Settings.controlsSettings.cameraSensitivity * Math.PI * 2;
|
||||
// CameraYaw -= rotX;
|
||||
|
|
@ -191,8 +210,9 @@ class CameraController extends Object {
|
|||
// this.level.scene.camera.target = marblePosition.add(cameraVerticalTranslation);
|
||||
// camera.position.add(cameraVerticalTranslation);
|
||||
var camera = level.scene.camera;
|
||||
this.dt = dt;
|
||||
|
||||
var lerpt = Math.pow(0.5, dt / 0.032); // Math.min(1, 1 - Math.pow(0.6, dt / 0.032)); // hxd.Math.min(1, 1 - Math.pow(0.6, dt * 600));
|
||||
var lerpt = 1 - Math.pow(0.5, dt / 0.016); // Math.min(1, 1 - Math.pow(0.6, dt / 0.032)); // hxd.Math.min(1, 1 - Math.pow(0.6, dt * 600));
|
||||
|
||||
var cameraPitchDelta = (Key.isDown(Settings.controlsSettings.camBackward) ? 1 : 0)
|
||||
- (Key.isDown(Settings.controlsSettings.camForward) ? 1 : 0)
|
||||
|
|
@ -232,7 +252,7 @@ class CameraController extends Object {
|
|||
deltaX = deltaNew;
|
||||
|
||||
// Center the pitch
|
||||
if (!Settings.controlsSettings.alwaysFreeLook && !Key.isDown(Settings.controlsSettings.freelook)) {
|
||||
if (!Settings.controlsSettings.alwaysFreeLook && !Key.isDown(Settings.controlsSettings.freelook) && !(hasXInput || hasYInput)) {
|
||||
var rescaledY = deltaY;
|
||||
if (rescaledY <= 0.0)
|
||||
rescaledY = 0.4 - rescaledY * -0.75;
|
||||
|
|
@ -252,6 +272,11 @@ class CameraController extends Object {
|
|||
deltaY = movePitchSpeed;
|
||||
}
|
||||
|
||||
if (!MarbleGame.instance.touchInput.cameraInput.pressed) {
|
||||
hasXInput = false;
|
||||
hasYInput = false;
|
||||
}
|
||||
|
||||
nextCameraYaw += deltaX;
|
||||
nextCameraPitch += deltaY;
|
||||
nextCameraPitch = Math.max(-Math.PI / 2 + Math.PI / 4, Math.min(Math.PI / 2 - 0.0001, nextCameraPitch));
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package src;
|
||||
|
||||
import h3d.pass.PassList;
|
||||
import hxd.Window;
|
||||
import src.ResourceLoader;
|
||||
import shaders.GammaRamp;
|
||||
|
|
@ -147,17 +148,28 @@ class Renderer extends h3d.scene.Renderer {
|
|||
if (!cubemapPass || Settings.optionsSettings.reflectionDetail >= 4) {
|
||||
var glowObjects = get("glow");
|
||||
if (!glowObjects.isEmpty()) {
|
||||
if (dirtyBuffers) {
|
||||
ctx.engine.pushTarget(glowBuffer);
|
||||
ctx.engine.clear(0);
|
||||
renderPass(defaultPass, glowObjects);
|
||||
bloomPass(ctx);
|
||||
ctx.engine.popTarget();
|
||||
var frustum = ctx.camera.frustum;
|
||||
var hasOne = false;
|
||||
for (obj in glowObjects) {
|
||||
var bounds = obj.obj.getBounds();
|
||||
if (frustum.hasBounds(bounds)) {
|
||||
hasOne = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (hasOne) {
|
||||
if (dirtyBuffers) {
|
||||
ctx.engine.pushTarget(glowBuffer);
|
||||
ctx.engine.clear(0);
|
||||
renderPass(defaultPass, glowObjects);
|
||||
bloomPass(ctx);
|
||||
ctx.engine.popTarget();
|
||||
}
|
||||
copyPass.shader.texture = growBufferTemps[0];
|
||||
copyPass.pass.blend(One, One);
|
||||
copyPass.pass.depth(false, Always);
|
||||
copyPass.render();
|
||||
}
|
||||
copyPass.shader.texture = growBufferTemps[0];
|
||||
copyPass.pass.blend(One, One);
|
||||
copyPass.pass.depth(false, Always);
|
||||
copyPass.render();
|
||||
}
|
||||
}
|
||||
if (!cubemapPass)
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ class Settings {
|
|||
marbleCategoryIndex: 0,
|
||||
marbleSkin: "base",
|
||||
marbleModel: "data/shapes/balls/marble01.dts",
|
||||
marbleShader: "Default",
|
||||
marbleShader: "ClassicGlassPureSphere",
|
||||
rewindEnabled: false,
|
||||
rewindTimescale: 1,
|
||||
reflectionDetail: 3,
|
||||
|
|
@ -412,7 +412,7 @@ class Settings {
|
|||
optionsSettings.marbleCategoryIndex = 0;
|
||||
}
|
||||
if (optionsSettings.marbleShader == null) {
|
||||
optionsSettings.marbleShader = "Default";
|
||||
optionsSettings.marbleShader = "ClassicGlassPureSphere";
|
||||
}
|
||||
if (controlsSettings.blast == null) {
|
||||
controlsSettings.blast = Key.E;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,12 @@ class AboutMenuOptionsGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,12 @@ class AchievementsGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,12 @@ class DifficultySelectGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -39,7 +39,12 @@ class EndGameGui extends GuiImage {
|
|||
return [normal, hover, pressed];
|
||||
}
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -32,7 +32,12 @@ class ExitGameDlg extends GuiImage {
|
|||
return [normal, hover, pressed];
|
||||
}
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -33,7 +33,12 @@ class HelpCreditsGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,12 @@ class InputOptionsGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -84,7 +84,12 @@ class KeyBindingsGui extends GuiImage {
|
|||
}
|
||||
}
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -99,7 +99,12 @@ class LevelSelectGui extends GuiImage {
|
|||
this.vertSizing = Height;
|
||||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -29,7 +29,12 @@ class MainMenuGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -245,7 +245,12 @@ class MarblePickerGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -23,7 +23,12 @@ class MiscOptionsGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -23,7 +23,12 @@ class OptionsListGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -111,7 +111,12 @@ class PlayGui {
|
|||
playGuiCtrlOuter.horizSizing = Width;
|
||||
playGuiCtrlOuter.vertSizing = Height;
|
||||
|
||||
#if hl
|
||||
var wnd = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var wnd = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var safeVerMargin = 1 + (wnd.height * 0.15) / 2;
|
||||
var safeHorMargin = 1 + (wnd.width * 0.15) / 2;
|
||||
|
|
@ -181,7 +186,12 @@ class PlayGui {
|
|||
}
|
||||
|
||||
public function initTimer() {
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
var safeVerMargin = 1 + (scene2d.height * 0.15) / 2;
|
||||
|
||||
var timerCtrl = new GuiImage(ResourceLoader.getResource('data/ui/game/timebackdrop0.png', ResourceLoader.getImage, this.imageResources).toTile());
|
||||
|
|
@ -287,7 +297,12 @@ class PlayGui {
|
|||
}
|
||||
|
||||
public function initGemCounter() {
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
var safeVerMargin = 1 + (scene2d.height * 0.15) / 2;
|
||||
|
||||
var gemBox = new GuiControl();
|
||||
|
|
@ -374,7 +389,12 @@ class PlayGui {
|
|||
}
|
||||
|
||||
function initPowerupBox() {
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
var safeVerMargin = 1 + (scene2d.height * 0.15) / 2;
|
||||
|
||||
var powerupImgs = [
|
||||
|
|
@ -526,7 +546,12 @@ class PlayGui {
|
|||
}
|
||||
|
||||
function initBlastBar() {
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
var safeVerMargin = 1 + (scene2d.height * 0.15) / 2;
|
||||
|
||||
blastBar = new GuiControl();
|
||||
|
|
|
|||
|
|
@ -29,7 +29,12 @@ class ReplayCenterGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -21,7 +21,12 @@ class TouchCtrlsEditGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,12 @@ class VersionGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -23,7 +23,12 @@ class VideoOptionsGui extends GuiImage {
|
|||
this.position = new Vector();
|
||||
this.extent = new Vector(640, 480);
|
||||
|
||||
#if hl
|
||||
var scene2d = hxd.Window.getInstance();
|
||||
#end
|
||||
#if js
|
||||
var scene2d = MarbleGame.instance.scene2d;
|
||||
#end
|
||||
|
||||
var offsetX = (scene2d.width - 1280) / 2;
|
||||
var offsetY = (scene2d.height - 720) / 2;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ class CameraInput {
|
|||
var identifier:Int = -1;
|
||||
|
||||
public var enabled = false;
|
||||
public var pressed = false;
|
||||
|
||||
var added = false;
|
||||
|
||||
|
|
@ -35,7 +36,7 @@ class CameraInput {
|
|||
this.collider.horizSizing = Width;
|
||||
this.collider.vertSizing = Height;
|
||||
|
||||
var pressed = false;
|
||||
pressed = false;
|
||||
|
||||
var prevMouse = new Vector(0, 0);
|
||||
interactive.onPush = (e) -> {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class TouchEventState {
|
|||
}
|
||||
|
||||
class TouchInput {
|
||||
var cameraInput:CameraInput;
|
||||
public var cameraInput:CameraInput;
|
||||
|
||||
public var movementInput:MovementInput;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue