a few important regression fixes

This commit is contained in:
Vitaly Turovsky 2024-04-17 08:39:08 +03:00
commit d604ff12ae
3 changed files with 23 additions and 7 deletions

View file

@ -120,7 +120,7 @@ function getLiquidRenderHeight (world, block, type, pos) {
}
const isCube = (block) => {
if (!block) return false
if (!block || block.transparent) return false
if (block.isCube) return true
if (!block.variant) block.variant = getModelVariants(block)
return block.variant.every(v => v?.model?.elements.every(e => {
@ -147,7 +147,8 @@ function renderLiquid (world, cursor, texture, type, biome, water, attr) {
const { dir, corners } = elemFaces[face]
const isUp = dir[1] === 1
const neighbor = world.getBlock(cursor.offset(...dir))
const neighborPos = cursor.offset(...dir)
const neighbor = world.getBlock(neighborPos)
if (!neighbor) continue
if (neighbor.type === type) continue
if ((isCube(neighbor) && !isUp) || neighbor.material === 'plant' || neighbor.getProperties().waterlogged) continue
@ -161,6 +162,18 @@ function renderLiquid (world, cursor, texture, type, biome, water, attr) {
tint = [tint[0] * m, tint[1] * m, tint[2] * m]
}
if (needTiles) {
attr.tiles[`${cursor.x},${cursor.y},${cursor.z}`] ??= {
block: 'water',
faces: [],
}
attr.tiles[`${cursor.x},${cursor.y},${cursor.z}`].faces.push({
face,
neighbor: `${neighborPos.x},${neighborPos.y},${neighborPos.z}`,
// texture: eFace.texture.name,
})
}
const u = texture.u
const v = texture.v
const su = texture.su
@ -268,6 +281,7 @@ function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr
if (!neighbor.transparent && isCube(neighbor)) continue
} else {
needRecompute = true
continue
}
}

View file

@ -3,12 +3,12 @@ const THREE = require('three')
const textureCache = {}
function loadTexture (texture, cb, onLoad) {
if (!textureCache[texture]) {
const cached = textureCache[texture]
if (!cached) {
textureCache[texture] = new THREE.TextureLoader().load(texture, onLoad)
} else {
onLoad?.()
}
cb(textureCache[texture])
if (cached) onLoad?.()
}
function loadJSON (url, callback) {

View file

@ -69,7 +69,8 @@ export async function addPanoramaCubeMap () {
shouldDisplayPanorama = true
let time = 0
viewer.camera = new THREE.PerspectiveCamera(85, window.innerWidth / window.innerHeight, 0.05, 1000)
viewer.camera.fov = 85
viewer.camera.near = 0.05
viewer.camera.updateProjectionMatrix()
viewer.camera.position.set(0, 0, 0)
viewer.camera.rotation.set(0, 0, 0)
@ -119,7 +120,8 @@ export async function addPanoramaCubeMap () {
export function removePanorama () {
shouldDisplayPanorama = false
if (!panoramaCubeMap) return
viewer.camera = new THREE.PerspectiveCamera(options.fov, window.innerWidth / window.innerHeight, 0.1, 1000)
viewer.camera.fov = options.fov
viewer.camera.near = 0.1
viewer.camera.updateProjectionMatrix()
viewer.scene.remove(panoramaCubeMap)
panoramaCubeMap = null