wip fixing rotations

This commit is contained in:
2026-07-04 00:02:42 -04:00
parent 38feb21951
commit c457509562
3 changed files with 106 additions and 33 deletions

View File

@@ -1,5 +1,5 @@
// geometry.js
import {mat4Identity, mat4RotateY, mat4Translate} from './math.js'; // Assuming you have mat4RotateX too
import {mat4Identity, mat4RotateX, mat4RotateY, mat4Translate} from './math.js';
const FACES = {
down: {n: [0, -1, 0], c: [[0, 0, 0], [1, 0, 0], [1, 0, 1], [0, 0, 1]]},
@@ -51,8 +51,8 @@ export function buildGeometry(model, atlas, variant = {}) {
// 1. Pre-calculate the blockstate rotation matrix (around block center)
const blockMatrix = mat4Identity(new Float32Array(16));
mat4Translate(blockMatrix, blockMatrix, [0.5, 0.5, 0.5]);
// NOTE: Vanilla blockstates also support `x` rotation. You'd add mat4RotateX here if needed.
if (variant.y) mat4RotateY(blockMatrix, blockMatrix, -variant.y * Math.PI / 180);
if (variant.x) mat4RotateX(blockMatrix, blockMatrix, variant.x * Math.PI / 180);
if (variant.y) mat4RotateY(blockMatrix, blockMatrix, variant.y * Math.PI / 180);
mat4Translate(blockMatrix, blockMatrix, [-0.5, -0.5, -0.5]);
for (const el of model.elements || []) {