From 92fff518cd1e2f003932b1c44f5ade12a39201a6 Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Sun, 2 Feb 2025 12:09:45 -0800 Subject: [PATCH 1/2] matrix rotat e - Add rotateTo method for non-object vectors and directions --- .../dev/engine_room/flywheel/lib/transform/Rotate.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java b/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java index 56b8b7f6e..4ab93ab49 100644 --- a/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java +++ b/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java @@ -99,8 +99,16 @@ public interface Rotate> { }; } + default Self rotateTo(float fromX, float fromY, float fromZ, float toX, float toY, float toZ) { + return rotate(new Quaternionf().rotateTo(fromX, fromY, fromZ, toX, toY, toZ)); + } + default Self rotateTo(Vector3fc from, Vector3fc to) { - return rotate(new Quaternionf().rotateTo(from, to)); + return rotateTo(from.x(), from.y(), from.z(), to.x(), to.y(), to.z()); + } + + default Self rotateTo(Direction from, Direction to) { + return rotateTo(from.getStepX(), from.getStepY(), from.getStepZ(), to.getStepX(), to.getStepY(), to.getStepZ()); } @SuppressWarnings("unchecked") From 77cd4fb8982abd91ed6a800625377db897180f6e Mon Sep 17 00:00:00 2001 From: Jozufozu Date: Mon, 3 Feb 2025 20:31:13 -0800 Subject: [PATCH 2/2] Asking permission - Check BlockState#canOcclude in light storage - Should fix issues with framed glass blocks --- .../engine_room/flywheel/backend/engine/LightStorage.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/src/backend/java/dev/engine_room/flywheel/backend/engine/LightStorage.java b/common/src/backend/java/dev/engine_room/flywheel/backend/engine/LightStorage.java index ada3ed24c..db248009b 100644 --- a/common/src/backend/java/dev/engine_room/flywheel/backend/engine/LightStorage.java +++ b/common/src/backend/java/dev/engine_room/flywheel/backend/engine/LightStorage.java @@ -250,10 +250,9 @@ public class LightStorage implements Effect { for (int x = -1; x < 17; x++) { blockPos.set(xMin + x, yMin + y, zMin + z); - boolean isFullBlock = level.getBlockState(blockPos) - .isCollisionShapeFullBlock(level, blockPos); + var blockState = level.getBlockState(blockPos); - if (isFullBlock) { + if (blockState.canOcclude() && blockState.isCollisionShapeFullBlock(level, blockPos)) { bitSet.set(index); }