implement block picking and remove water collision

This commit is contained in:
LabyStudio
2022-02-01 11:21:34 +01:00
parent cc3da60a6e
commit bda4e01807
4 changed files with 31 additions and 8 deletions
+11 -6
View File
@@ -132,10 +132,12 @@ window.World = class {
let blockId = this.getBlockAt(x, y, z);
let block = Block.getById(blockId);
let hit = block == null ? null : block.collisionRayTrace(x, y, z, from, to);
if (hit != null) {
return hit;
if (block != null && block.canCollide()) {
let hit = block.collisionRayTrace(x, y, z, from, to);
if (hit != null) {
return hit;
}
}
let lastHit = null;
@@ -224,9 +226,12 @@ window.World = class {
let blockId = this.getBlockAt(x, y, z);
let block = Block.getById(blockId);
let hit = block == null ? null : block.collisionRayTrace(x, y, z, from, to);
if (hit != null) {
return hit;
if (block != null && block.canCollide()) {
let hit = block.collisionRayTrace(x, y, z, from, to);
if (hit != null) {
return hit;
}
}
}
@@ -47,6 +47,10 @@ window.Block = class {
return 1.0;
}
canCollide() {
return true;
}
getBoundingBox(world, x, y, z) {
return this.boundingBox;
}
@@ -12,6 +12,10 @@ window.BlockWater = class extends Block {
return false;
}
canCollide() {
return false;
}
shouldRenderFace(world, x, y, z, face) {
let typeId = world.getBlockAtFace(x, y, z, face);
return typeId === 0 || typeId !== this.id && Block.getById(typeId).isTransparent();
@@ -24,5 +28,4 @@ window.BlockWater = class extends Block {
}
return box;
}
}