fix crouching collision
This commit is contained in:
@@ -13,11 +13,11 @@ window.GameWindow = class {
|
|||||||
document.getElementById(this.canvasWrapperId).appendChild(canvas);
|
document.getElementById(this.canvasWrapperId).appendChild(canvas);
|
||||||
|
|
||||||
// Init
|
// Init
|
||||||
this.initialize();
|
this.onResize();
|
||||||
|
|
||||||
// On resize
|
// On resize
|
||||||
let scope = this;
|
let scope = this;
|
||||||
window.addEventListener('resize', _ => scope.initialize(), false);
|
window.addEventListener('resize', _ => scope.onResize(), false);
|
||||||
|
|
||||||
// Request focus
|
// Request focus
|
||||||
canvas.onclick = function () {
|
canvas.onclick = function () {
|
||||||
@@ -29,12 +29,12 @@ window.GameWindow = class {
|
|||||||
|
|
||||||
// Mouse motion
|
// Mouse motion
|
||||||
document.addEventListener('mousemove', event => this.onMouseMove(event), false);
|
document.addEventListener('mousemove', event => this.onMouseMove(event), false);
|
||||||
}
|
|
||||||
|
|
||||||
initialize() {
|
|
||||||
// Create keyboard
|
// Create keyboard
|
||||||
Keyboard.create();
|
Keyboard.create();
|
||||||
|
}
|
||||||
|
|
||||||
|
onResize() {
|
||||||
// Get canvas size
|
// Get canvas size
|
||||||
let canvasElement = document.getElementById(this.canvasWrapperId);
|
let canvasElement = document.getElementById(this.canvasWrapperId);
|
||||||
this.canvasWidth = canvasElement.offsetWidth;
|
this.canvasWidth = canvasElement.offsetWidth;
|
||||||
|
|||||||
@@ -23,12 +23,12 @@ window.World = class {
|
|||||||
getCollisionBoxes(aabb) {
|
getCollisionBoxes(aabb) {
|
||||||
let boundingBoxList = [];
|
let boundingBoxList = [];
|
||||||
|
|
||||||
let minX = Math.floor(aabb.minX) - 1;
|
let minX = MathHelper.floor_double(aabb.minX);
|
||||||
let maxX = Math.ceil(aabb.maxX) + 1;
|
let maxX = MathHelper.floor_double(aabb.maxX + 1.0);
|
||||||
let minY = Math.floor(aabb.minY) - 1;
|
let minY = MathHelper.floor_double(aabb.minY);
|
||||||
let maxY = Math.ceil(aabb.maxY) + 1;
|
let maxY = MathHelper.floor_double(aabb.maxY + 1.0);
|
||||||
let minZ = Math.floor(aabb.minZ) - 1;
|
let minZ = MathHelper.floor_double(aabb.minZ);
|
||||||
let maxZ = Math.ceil(aabb.maxZ) + 1;
|
let maxZ = MathHelper.floor_double(aabb.maxZ + 1.0);
|
||||||
|
|
||||||
for (let x = minX; x < maxX; x++) {
|
for (let x = minX; x < maxX; x++) {
|
||||||
for (let y = minY; y < maxY; y++) {
|
for (let y = minY; y < maxY; y++) {
|
||||||
|
|||||||
@@ -3,8 +3,14 @@ window.Keyboard = class {
|
|||||||
static state = {};
|
static state = {};
|
||||||
|
|
||||||
static create() {
|
static create() {
|
||||||
window.addEventListener('keyup', (e) => Keyboard.state[e.code] = false);
|
window.addEventListener('keydown', function (event) {
|
||||||
window.addEventListener('keydown', (e) => Keyboard.state[e.code] = true);
|
Keyboard.state[event.code] = true;
|
||||||
|
//console.log("Key " + event.code + " down");
|
||||||
|
});
|
||||||
|
window.addEventListener('keyup', function (event) {
|
||||||
|
delete Keyboard.state[event.code];
|
||||||
|
//console.log("Key " + event.code + " up");
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
static isKeyDown(key) {
|
static isKeyDown(key) {
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
window.MathHelper = class {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the greatest integer less than or equal to the double argument
|
||||||
|
*/
|
||||||
|
static floor_double(value) {
|
||||||
|
let i = parseInt(value);
|
||||||
|
return value < i ? i - 1 : i;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -48,6 +48,7 @@ loadScripts([
|
|||||||
|
|
||||||
// Minecraft Source
|
// Minecraft Source
|
||||||
"src/net/minecraft/util/Timer.js",
|
"src/net/minecraft/util/Timer.js",
|
||||||
|
"src/net/minecraft/util/MathHelper.js",
|
||||||
"src/net/minecraft/util/BoundingBox.js",
|
"src/net/minecraft/util/BoundingBox.js",
|
||||||
"src/net/minecraft/util/Keyboard.js",
|
"src/net/minecraft/util/Keyboard.js",
|
||||||
"src/net/minecraft/client/GameWindow.js",
|
"src/net/minecraft/client/GameWindow.js",
|
||||||
|
|||||||
Reference in New Issue
Block a user