Fix crash and shaders, add controller support
This commit is contained in:
parent
b713c4e31d
commit
0fda59393f
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -83,9 +83,7 @@ let upDownAxis1 = 0;
|
|||
let leftRightAxis2 = 0;
|
||||
let upDownAxis2 = 0;
|
||||
|
||||
//in-game controller
|
||||
let jump = false;
|
||||
let crouch = false;
|
||||
const buttonStates = {};
|
||||
|
||||
window.addEventListener("gamepadconnected", (event) => {
|
||||
const gamepad = event.gamepad;
|
||||
|
@ -124,22 +122,6 @@ function controllerConnected() {
|
|||
return false;
|
||||
}
|
||||
|
||||
function handleButtons(buttons) {
|
||||
for(let i = 0; i < buttons.length; i++) {
|
||||
const button = buttons[i];
|
||||
|
||||
if(button.value > 0) {
|
||||
if(i == 0) {
|
||||
jump = true;
|
||||
}
|
||||
|
||||
if(i == 1) {
|
||||
crouch = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getCameraX() {
|
||||
return leftRightAxis2;
|
||||
}
|
||||
|
@ -176,14 +158,32 @@ function isWalkingRight() {
|
|||
return false;
|
||||
}
|
||||
|
||||
function isKeyDown(buttonID) {
|
||||
const gamepad = navigator.getGamepads()[controllerIndex];
|
||||
const buttons = gamepad.buttons;
|
||||
const button = buttons[buttonID];
|
||||
if (gamepad) {
|
||||
const buttons = gamepad.buttons;
|
||||
const button = buttons[buttonID];
|
||||
return button.value > 0;
|
||||
function isKeyDown(keyCode) {
|
||||
const gamepads = navigator.getGamepads();
|
||||
if (gamepads.length > 0) {
|
||||
const gamepad = gamepads[0];
|
||||
if (gamepad) {
|
||||
const button = gamepad.buttons.find(btn => btn.value !== 0 && btn.keyCode === keyCode);
|
||||
return !!button;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function isPressed(keyCode) {
|
||||
const gamepads = navigator.getGamepads();
|
||||
if (gamepads.length > 0) {
|
||||
const gamepad = gamepads[0];
|
||||
if (gamepad) {
|
||||
const button = gamepad.buttons.find(btn => btn.keyCode === keyCode);
|
||||
if (button.pressed && !buttonStates[keyCode]) {
|
||||
buttonStates[keyCode] = true;
|
||||
return true;
|
||||
} else {
|
||||
buttonStates[keyCode] = button.pressed;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -193,10 +193,12 @@ function updateController() {
|
|||
if(controllerIndex != null) {
|
||||
const gamepad = navigator.getGamepads()[controllerIndex];
|
||||
handleSticks(gamepad.axes);
|
||||
handleButtons(gamepad.buttons);
|
||||
}
|
||||
}
|
||||
requestAnimationFrame(updateController);
|
||||
}
|
||||
|
||||
requestAnimationFrame(updateController);
|
||||
</script>
|
||||
<link type="image/png" rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAR/SURBVEhLtZXZK3ZRFMYPcqXc+gv413DHxVuGIpIhkciQWaRccCNjSCkligwXSOZ5nmfv9zvn2e8+58V753sudmuvvdZ61l5r7XOc8H+GS/D19aUNkPz5+aktQH5/f//4+LBKZKuRkpUtQjCUYG5gD2T38vLy/PwsDfL9/f3Dw8PT05M0b29vnKLhCKCBT4L4gvBLBIei4//4+Hh1dUVEQutUuLu7E83FxQUGnKLBWKfQaA3S+AREVxaEOD8/Pzk50XpzcyMDcH19zdZG3N3d3dzc3Nvb01aX5pQUpQGGQJxcQpfNysoKhUIdHR1o1tbWbInYAgxIPDMzMy8vLzc3FxqOdMoRqwJK8G8ALUYIhHMiSEhIwI6CyIb0qQzC4eGhsXCc1tZWnZIEKzdQJQSXgKxfX18RCM3Z5eWlcfVAxKOjo+Pj49PTU88lTOk2NjbMsePc3t6SAfcgFdszOyMuAdeBg0CQi2lhYUHOeOLDCisN8FzcPFZXV3t7ezHY3t5GQ+6it+2xMASsKhEEWKsmRLRBBUpPvpJ/TpFKFBwKYAiITmicsbYhdHfJAltqhUCVsCQhwslmeXmZxiBQT9c0Ar9E2O3v72sYSE0N1yQArkKy0kBMXLqlZqIZHR3t6empqqqSDcBdhXEJSJ/bUc3q6uq+vj629GB9fR1WsLW1NTs7u7S0RN2locMjIyOEm5ubQ7+4uJienk4/+vv77Y1hwhLBEKhwWHitdVFfX9/Y2Gg2HuLi4owUAysrK8yCG97rh0+ApP5Q2ZycHFlPTExUVFRIBvn5+WhKSkp2dnaMKhptbW2426GgQ/rwuAQCZ1hwFayLiork9hMFBQV1dXVmE0BLS4vqw3QFB8kn4IAxoGPkYpxi4FeDmpqas7Mz4pClAgqGwD48rjY2NmacYqC0tJQ1KSlJWyE5OZkpUKkBAxZVIntAoZh04+Q48fHxPNGBgYHExMT29naj9cBodnZ2mo3jlJWVMeW2OGQck4B1amqqoaGhqamJjx2lGxwcpL0mUgR8fJhsWqJtSkoKU2SbHHUDpkhPBujd8xuQG6PJRM/Pz09PT7O1NNnZ2Tw3fgZkXVhYKCUlUhBATP+hCVyKZGky17RV0g04laayslJ6hlVeFHB4eFhKaogGd0LxtmTgE+hbhKDnPjMzgw8E3qGL2tpaBWpubjYqj2BoaEj6rq4uNATRZ0ZwCbiL6gXEzINk5vCBQJ9rMD4+rkA8QNK036uDg4Py8vLu7m680KjIBNR3zBDoWQM1g98snyB+VSoRW8C/UwR81/SvhgNj9JOTkwwVERUdRBEI0BAdLRVERkhLS8vIyEDQlrsTPTU1lVFhKxARvZgUlFLbegCf4BvIsbi4mIg4E5EogIHhiKCMtU0WUFiVy06j5fAJIDdSBDQw+PegDfBRcbOPwH4F9LuFWIIQdQNKwWqzIE0aoFUaBsw+SQuFw0uNtC9A+F4i3QNrbg3IDn+SAsHh+wYiEpeyBEMLv/cAO6KzAijxxB+Y4wisBhssJUhjEbPJf4Nw+B+JXqLW3bw+wQAAAABJRU5ErkJggg==" />
|
||||
</head>
|
||||
|
|
71425
javascript/classes.js
71425
javascript/classes.js
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -8,9 +8,7 @@ let upDownAxis1 = 0;
|
|||
let leftRightAxis2 = 0;
|
||||
let upDownAxis2 = 0;
|
||||
|
||||
//in-game controller
|
||||
let jump = false;
|
||||
let crouch = false;
|
||||
const buttonStates = {};
|
||||
|
||||
window.addEventListener("gamepadconnected", (event) => {
|
||||
const gamepad = event.gamepad;
|
||||
|
@ -49,22 +47,6 @@ function controllerConnected() {
|
|||
return false;
|
||||
}
|
||||
|
||||
function handleButtons(buttons) {
|
||||
for(let i = 0; i < buttons.length; i++) {
|
||||
const button = buttons[i];
|
||||
|
||||
if(button.value > 0) {
|
||||
if(i == 0) {
|
||||
jump = true;
|
||||
}
|
||||
|
||||
if(i == 1) {
|
||||
crouch = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getCameraX() {
|
||||
return leftRightAxis2;
|
||||
}
|
||||
|
@ -101,14 +83,32 @@ function isWalkingRight() {
|
|||
return false;
|
||||
}
|
||||
|
||||
function isKeyDown(buttonID) {
|
||||
const gamepad = navigator.getGamepads()[controllerIndex];
|
||||
const buttons = gamepad.buttons;
|
||||
const button = buttons[buttonID];
|
||||
if (gamepad) {
|
||||
const buttons = gamepad.buttons;
|
||||
const button = buttons[buttonID];
|
||||
return button.value > 0;
|
||||
function isKeyDown(keyCode) {
|
||||
const gamepads = navigator.getGamepads();
|
||||
if (gamepads.length > 0) {
|
||||
const gamepad = gamepads[0];
|
||||
if (gamepad) {
|
||||
const button = gamepad.buttons.find(btn => btn.value !== 0 && btn.keyCode === keyCode);
|
||||
return !!button;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function isPressed(keyCode) {
|
||||
const gamepads = navigator.getGamepads();
|
||||
if (gamepads.length > 0) {
|
||||
const gamepad = gamepads[0];
|
||||
if (gamepad) {
|
||||
const button = gamepad.buttons.find(btn => btn.keyCode === keyCode);
|
||||
if (button.pressed && !buttonStates[keyCode]) {
|
||||
buttonStates[keyCode] = true;
|
||||
return true;
|
||||
} else {
|
||||
buttonStates[keyCode] = button.pressed;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -118,7 +118,9 @@ function updateController() {
|
|||
if(controllerIndex != null) {
|
||||
const gamepad = navigator.getGamepads()[controllerIndex];
|
||||
handleSticks(gamepad.axes);
|
||||
handleButtons(gamepad.buttons);
|
||||
}
|
||||
}
|
||||
}
|
||||
requestAnimationFrame(updateController);
|
||||
}
|
||||
|
||||
requestAnimationFrame(updateController);
|
|
@ -12,6 +12,7 @@
|
|||
<meta property="og:description" content="test directory HTML page" />
|
||||
<link type="image/png" rel="shortcut icon" href="favicon.png" />
|
||||
<script type="text/javascript" src="classes.js"></script>
|
||||
<script type="text/javascript" src="controller.js"></script>
|
||||
<script type="text/javascript" src="fix-webm-duration.js"></script>
|
||||
<script type="text/javascript">
|
||||
"use strict";
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
package net.PeytonPlayz585.shadow.input;
|
||||
|
||||
import org.teavm.jso.JSBody;
|
||||
|
||||
public class Controller {
|
||||
|
||||
@JSBody(params = {"i"}, script = "return isKeyDown(i);")
|
||||
private static native boolean isKeyDown2(int i);
|
||||
|
||||
@JSBody(params = {"i"}, script = "return isPressed(i);")
|
||||
private static native boolean isPressed2(int i);
|
||||
|
||||
@JSBody(params = {}, script = "return isWalkingForward();")
|
||||
public static native boolean isWalkingForward();
|
||||
|
||||
@JSBody(params = {}, script = "return isWalkingBackward();")
|
||||
public static native boolean isWalkingBackward();
|
||||
|
||||
@JSBody(params = {}, script = "return isWalkingLeft();")
|
||||
public static native boolean isWalkingLeft();
|
||||
|
||||
@JSBody(params = {}, script = "return isWalkingRight();")
|
||||
public static native boolean isWalkingRight();
|
||||
|
||||
@JSBody(params = {}, script = "return getCameraX();")
|
||||
public static native int getCameraX();
|
||||
|
||||
@JSBody(params = {}, script = "return getCameraY();")
|
||||
public static native int getCameraY();
|
||||
|
||||
public static boolean isKeyDown(String i) {
|
||||
if(keyboardToGamepad(i) == -1) {
|
||||
return false;
|
||||
}
|
||||
return isKeyDown2(keyboardToGamepad(i));
|
||||
}
|
||||
|
||||
public static boolean isPressed(String i) {
|
||||
if(keyboardToGamepad(i) == -1) {
|
||||
return false;
|
||||
}
|
||||
return isPressed2(keyboardToGamepad(i));
|
||||
}
|
||||
|
||||
public static int getEventDWheel() {
|
||||
if(isPressed2(4)) {
|
||||
return -1;
|
||||
} else if(isPressed2(5)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static int keyboardToGamepad(String s) {
|
||||
if(s.contains("attack")) {
|
||||
return 7;
|
||||
} else if(s.contains("use")) {
|
||||
return 6;
|
||||
} else if(s.contains("drop")) {
|
||||
return 13;
|
||||
} else if(s.contains("togglePerspective")) {
|
||||
return 12;
|
||||
} else if(s.contains("inventory")) {
|
||||
return 3;
|
||||
} else if(s.contains("jump")) {
|
||||
return 0;
|
||||
} else if(s.contains("sneak")) {
|
||||
return 1;
|
||||
} else if(s.contains("sprint")) {
|
||||
return 10;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
|
@ -83,8 +83,8 @@ public class ImageData {
|
|||
if (cw != dx2 - dx1 || ch != dy2 - dy1) {
|
||||
throw new IllegalArgumentException("Width and height of the copied region must match the width and height of the pasted region");
|
||||
}
|
||||
int[] srcPixels = input.pixels.array();
|
||||
int[] dstPixels = pixels.array();
|
||||
int[] srcPixels = input.getPixels();
|
||||
int[] dstPixels = getPixels();
|
||||
int srcOffset = sx1 + sy1 * input.width;
|
||||
int dstOffset = dx1 + dy1 * width;
|
||||
for (int y = 0; y < ch; y++) {
|
||||
|
@ -101,8 +101,8 @@ public class ImageData {
|
|||
if (cw != dx2 - dx1 || ch != dy2 - dy1) {
|
||||
throw new IllegalArgumentException("Width and height of the copied region must match the width and height of the pasted region");
|
||||
}
|
||||
int[] srcPixels = input.pixels.array();
|
||||
int[] dstPixels = pixels.array();
|
||||
int[] srcPixels = input.getPixels();
|
||||
int[] dstPixels = getPixels();
|
||||
int srcOffset = sx1 + sy1 * input.width;
|
||||
int dstOffset = dx1 + dy1 * width;
|
||||
for (int y = 0; y < ch; y++) {
|
||||
|
@ -134,7 +134,7 @@ public class ImageData {
|
|||
}
|
||||
|
||||
public ImageData swapRB() {
|
||||
int[] dstPixels = pixels.array();
|
||||
int[] dstPixels = getPixels();
|
||||
for (int i = 0; i < dstPixels.length; i++) {
|
||||
int j = dstPixels[i];
|
||||
dstPixels[i] = (j & 0xFF00FF00) | ((j & 0x00FF0000) >> 16) | ((j & 0x000000FF) << 16);
|
||||
|
|
|
@ -22,6 +22,7 @@ import net.FatalCodes.shadow.Shadow;
|
|||
import net.PeytonPlayz585.shadow.Config;
|
||||
import net.PeytonPlayz585.shadow.chunk.ChunkBorders;
|
||||
import net.PeytonPlayz585.shadow.gui.GuiSecretMainMenu;
|
||||
import net.PeytonPlayz585.shadow.input.Controller;
|
||||
import net.lax1dude.eaglercraft.v1_8.Display;
|
||||
import net.lax1dude.eaglercraft.v1_8.EagRuntime;
|
||||
import net.lax1dude.eaglercraft.v1_8.HString;
|
||||
|
@ -1337,7 +1338,7 @@ public class Minecraft implements IThreadListener {
|
|||
|
||||
long i1 = getSystemTime() - this.systemTime;
|
||||
if (i1 <= 200L) {
|
||||
int j = Mouse.getEventDWheel();
|
||||
int j = Mouse.getEventDWheel() + Controller.getEventDWheel();
|
||||
if (j != 0) {
|
||||
if (this.thePlayer.isSpectator()) {
|
||||
j = j < 0 ? -1 : 1;
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.Set;
|
|||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import net.PeytonPlayz585.shadow.input.Controller;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.util.IntHashMap;
|
||||
|
||||
|
@ -106,7 +107,7 @@ public class KeyBinding implements Comparable<KeyBinding> {
|
|||
* querying). Should be used in tickers.
|
||||
*/
|
||||
public boolean isKeyDown() {
|
||||
return this.pressed;
|
||||
return this.pressed | Controller.isKeyDown(keyDescription);
|
||||
}
|
||||
|
||||
public String getKeyCategory() {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package net.minecraft.util;
|
||||
|
||||
import net.PeytonPlayz585.shadow.input.Controller;
|
||||
import net.lax1dude.eaglercraft.v1_8.Display;
|
||||
import net.lax1dude.eaglercraft.v1_8.Mouse;
|
||||
|
||||
|
@ -44,7 +45,7 @@ public class MouseHelper {
|
|||
}
|
||||
|
||||
public void mouseXYChange() {
|
||||
this.deltaX = Mouse.getDX();
|
||||
this.deltaY = Mouse.getDY();
|
||||
this.deltaX = Mouse.getDX() + Controller.getCameraX();
|
||||
this.deltaY = Mouse.getDY() + Controller.getCameraY() * -1;
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package net.minecraft.util;
|
||||
|
||||
import net.PeytonPlayz585.shadow.input.Controller;
|
||||
import net.minecraft.client.settings.GameSettings;
|
||||
|
||||
/**+
|
||||
|
@ -30,19 +31,19 @@ public class MovementInputFromOptions extends MovementInput {
|
|||
public void updatePlayerMoveState() {
|
||||
this.moveStrafe = 0.0F;
|
||||
this.moveForward = 0.0F;
|
||||
if (this.gameSettings.keyBindForward.isKeyDown()) {
|
||||
if (this.gameSettings.keyBindForward.isKeyDown() || Controller.isWalkingForward()) {
|
||||
++this.moveForward;
|
||||
}
|
||||
|
||||
if (this.gameSettings.keyBindBack.isKeyDown()) {
|
||||
if (this.gameSettings.keyBindBack.isKeyDown() || Controller.isWalkingBackward()) {
|
||||
--this.moveForward;
|
||||
}
|
||||
|
||||
if (this.gameSettings.keyBindLeft.isKeyDown()) {
|
||||
if (this.gameSettings.keyBindLeft.isKeyDown() || Controller.isWalkingLeft()) {
|
||||
++this.moveStrafe;
|
||||
}
|
||||
|
||||
if (this.gameSettings.keyBindRight.isKeyDown()) {
|
||||
if (this.gameSettings.keyBindRight.isKeyDown() || Controller.isWalkingRight()) {
|
||||
--this.moveStrafe;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user