From 0f4ccde6dc756325c60b6e5fd00e8c9f21e7dd6e Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Mon, 28 Jun 2021 16:31:41 +0530 Subject: [PATCH] camera controls stuff --- src/CameraController.hx | 20 ++++++++++++++++++++ src/Marble.hx | 13 +++++++------ src/Settings.hx | 6 ++++-- src/gui/OptionsDlg.hx | 4 ++++ 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/CameraController.hx b/src/CameraController.hx index cd182d41..4147da23 100644 --- a/src/CameraController.hx +++ b/src/CameraController.hx @@ -1,5 +1,7 @@ package src; +import src.Settings; +import hxd.Key; import src.Util; import h3d.Quat; #if hl @@ -100,6 +102,9 @@ class CameraController extends Object { var window = Window.getInstance(); var deltaposX = (window.width / 2) - mouseX; var deltaposY = (window.height / 2) - mouseY; + if (!Settings.controlsSettings.alwaysFreeLook && !Key.isDown(Settings.controlsSettings.freelook)) { + deltaposY = 0; + } var rotX = deltaposX * 0.001 * CameraSensitivity * Math.PI * 2; var rotY = deltaposY * 0.001 * CameraSensitivity * Math.PI * 2; CameraYaw -= rotX; @@ -123,6 +128,21 @@ class CameraController extends Object { // camera.position.add(cameraVerticalTranslation); var camera = level.scene.camera; + if (Key.isDown(Settings.controlsSettings.camForward)) { + CameraPitch += 0.75 * 5 * dt; + } + if (Key.isDown(Settings.controlsSettings.camBackward)) { + CameraPitch -= 0.75 * 5 * dt; + } + if (Key.isDown(Settings.controlsSettings.camLeft)) { + CameraYaw -= 0.75 * 5 * dt; + } + if (Key.isDown(Settings.controlsSettings.camRight)) { + CameraYaw += 0.75 * 5 * dt; + } + + CameraPitch = Util.clamp(CameraPitch, -Math.PI / 2, Math.PI / 2); + function getRotQuat(v1:Vector, v2:Vector) { function orthogonal(v:Vector) { var x = Math.abs(v.x); diff --git a/src/Marble.hx b/src/Marble.hx index 76f9c3c0..16f19151 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -1,5 +1,6 @@ package src; +import src.Settings; import h3d.scene.Mesh; import h3d.col.Bounds; import collision.CollisionEntity; @@ -811,22 +812,22 @@ class Marble extends GameObject { var move = new Move(); move.d = new Vector(); if (this.controllable && this.mode != Finish) { - if (Key.isDown(Key.W)) { + if (Key.isDown(Settings.controlsSettings.forward)) { move.d.x -= 1; } - if (Key.isDown(Key.S)) { + if (Key.isDown(Settings.controlsSettings.backward)) { move.d.x += 1; } - if (Key.isDown(Key.A)) { + if (Key.isDown(Settings.controlsSettings.left)) { move.d.y += 1; } - if (Key.isDown(Key.D)) { + if (Key.isDown(Settings.controlsSettings.right)) { move.d.y -= 1; } - if (Key.isDown(Key.SPACE)) { + if (Key.isDown(Settings.controlsSettings.jump)) { move.jump = true; } - if (Key.isDown(Key.MOUSE_LEFT)) { + if (Key.isDown(Settings.controlsSettings.powerup)) { move.powerup = true; } } diff --git a/src/Settings.hx b/src/Settings.hx index bd855c0e..9f197d85 100644 --- a/src/Settings.hx +++ b/src/Settings.hx @@ -36,6 +36,7 @@ typedef ControlsSettings = { var jump:Int; var powerup:Int; var freelook:Int; + var alwaysFreeLook:Bool; } class Settings { @@ -49,7 +50,7 @@ class Settings { colorDepth: 1, shadows: false, musicVolume: 0, - soundVolume: 0 + soundVolume: 0, }; public static var controlsSettings:ControlsSettings = { @@ -63,7 +64,8 @@ class Settings { camRight: Key.RIGHT, jump: Key.SPACE, powerup: Key.MOUSE_LEFT, - freelook: Key.MOUSE_RIGHT + freelook: Key.MOUSE_RIGHT, + alwaysFreeLook: true }; public static function applySettings() { diff --git a/src/gui/OptionsDlg.hx b/src/gui/OptionsDlg.hx index 8f254cd7..21845378 100644 --- a/src/gui/OptionsDlg.hx +++ b/src/gui/OptionsDlg.hx @@ -583,6 +583,10 @@ Extensions: EAX 2.0, EAX 3.0, EAX Unified, and EAX-AC3"; alwaysFreelook.position = new Vector(365, 269); alwaysFreelook.extent = new Vector(43, 53); alwaysFreelook.buttonType = Toggle; + alwaysFreelook.pressed = Settings.controlsSettings.alwaysFreeLook; + alwaysFreelook.pressedAction = (sender) -> { + Settings.controlsSettings.alwaysFreeLook = !Settings.controlsSettings.alwaysFreeLook; + } mouseControlsPane.addChild(alwaysFreelook); var mouseSensitivity = new GuiSlider(ResourceLoader.getImage("data/ui/options/cntrl_mous_knb.png").toTile());