Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import net.minecraftforge.fml.relauncher.SideOnly;

import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;

import java.io.IOException;
import java.util.Set;
Expand Down
77 changes: 45 additions & 32 deletions src/main/java/com/cleanroommc/modularui/test/ResizerTest.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package com.cleanroommc.modularui.test;

import com.cleanroommc.modularui.api.drawable.IKey;
import com.cleanroommc.modularui.api.layout.IViewportStack;
import com.cleanroommc.modularui.drawable.GuiTextures;
import com.cleanroommc.modularui.screen.CustomModularScreen;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.screen.viewport.GuiContext;
import com.cleanroommc.modularui.widget.Widget;

import net.minecraft.client.Minecraft;
import com.cleanroommc.modularui.utils.fakeworld.ArraySchema;
import com.cleanroommc.modularui.utils.fakeworld.ISchema;
import com.cleanroommc.modularui.widgets.SchemaWidget;

import org.jetbrains.annotations.NotNull;

Expand All @@ -24,34 +21,50 @@ public class ResizerTest extends CustomModularScreen {
.background(new SpriteDrawable(sprite))
.size(20)
.align(Alignment.Center));*/
return ModularPanel.defaultPanel("main")
/*TrackedDummyWorld world = new TrackedDummyWorld();
world.addBlock(new BlockPos(0, 0, 0), new BlockInfo(Blocks.DIAMOND_BLOCK.getDefaultState()));
world.addBlock(new BlockPos(0, 1, 0), new BlockInfo(Blocks.BEDROCK.getDefaultState()));
world.addBlock(new BlockPos(1, 0, 1), new BlockInfo(Blocks.GOLD_BLOCK.getDefaultState()));*/
/* return ModularPanel.defaultPanel("main")
.size(150)
.child(new SpinningWidget()
.size(80, 20)
.center()
.background(GuiTextures.MC_BUTTON)
.overlay(IKey.str("Text"))
.addTooltipLine("Long Tooltip Line"));
/*.child(new Column()
.alignX(0.5f)
.heightRel(1f)
.margin(0, 7)
.coverChildrenWidth()
.mainAxisAlignment(Alignment.MainAxis.SPACE_BETWEEN)
.child(new ButtonWidget<>().width(40))
.child(new Row().height(30).widthRel(1f).background(GuiTextures.CHECKBOARD).debugName("row"))
.child(new ButtonWidget<>()));*/
}
.overlay(new SchemaRenderer(BoxSchema.of(Minecraft.getMinecraft().world, new BlockPos(Minecraft.getMinecraft().player), 5))
.cameraFunc((camera, schema) -> {
double pitch = Math.PI / 4;
double T = 4000D;
double yaw = Minecraft.getSystemTime() % T / T * Math.PI * 2;
camera.setLookAt(new BlockPos(Minecraft.getMinecraft().player), 20, yaw, pitch);
})
.isometric(true)
.asIcon().size(140));*/


/*MapSchema world = new MapSchema.Builder()
.add(new BlockPos(0, 0, 0), Blocks.DIAMOND_BLOCK.getDefaultState())
.add(new BlockPos(0, 1, 0), Blocks.BEDROCK.getDefaultState())
.add(new BlockPos(0, 2, 0), Blocks.WOOL.getDefaultState())
.add(new BlockPos(1, 0, 1), Blocks.GOLD_BLOCK.getDefaultState())
.add(new BlockPos(0, 3, 0), Blocks.BEACON.getDefaultState())
.build();*/

private static class SpinningWidget extends Widget<SpinningWidget> {
ISchema schema = ArraySchema.builder()
.layer("D D", " ", " ", " ")
.layer(" DDD ", " E E ", " ", " ")
.layer(" DDD ", " E ", " G ", " B ")
.layer(" DDD ", " E E ", " ", " ")
.layer("D D", " ", " ", " ")
.where('D', "minecraft:gold_block")
.where('E', "minecraft:emerald_block")
.where('G', "minecraft:diamond_block")
.where('B', "minecraft:beacon")
.build();

@Override
public void transform(IViewportStack stack) {
super.transform(stack);
stack.translate(getArea().width / 2f, getArea().height / 2f);
float p = Minecraft.getSystemTime() % 4000 / 4000f;
stack.rotateZ((float) (p * Math.PI * 2));
stack.translate(-getArea().width / 2f, -getArea().height / 2f);
}
var panel = ModularPanel.defaultPanel("main").size(170);
panel.child(new SchemaWidget(schema)
.full())
.child(new SchemaWidget.LayerButton(schema, 0, 3)
.bottom(1)
.left(1)
.size(16));
return panel;
}
}
10 changes: 5 additions & 5 deletions src/main/java/com/cleanroommc/modularui/utils/GuiUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,23 +25,23 @@ public static Matrix4f getTransformationMatrix() {
}

public static Matrix4f getTransformationMatrix(Matrix4f matrix4f) {
floatBuffer.position(0);
floatBuffer.rewind();
getTransformationBuffer(floatBuffer);
matrix4f.load(floatBuffer);
return matrix4f;
}

public static void setTransformationMatrix(Matrix4f matrix) {
floatBuffer.position(0);
floatBuffer.rewind();
matrix.store(floatBuffer);
floatBuffer.position(0);
floatBuffer.rewind();
GL11.glLoadMatrix(floatBuffer);
}

public static void applyTransformationMatrix(Matrix4f matrix) {
floatBuffer.position(0);
floatBuffer.rewind();
matrix.store(floatBuffer);
floatBuffer.position(0);
floatBuffer.rewind();
GL11.glMultMatrix(floatBuffer);
}
}
52 changes: 52 additions & 0 deletions src/main/java/com/cleanroommc/modularui/utils/VectorUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.cleanroommc.modularui.utils;

import net.minecraft.util.math.Vec3d;
import net.minecraft.util.math.Vec3i;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.lwjgl.util.vector.Vector3f;

public class VectorUtil {

public static Vector3f set(Vector3f target, float x, float y, float z) {
if (target == null) target = new Vector3f();
target.set(x, y, z);
return target;
}

@NotNull
public static Vector3f set(@Nullable Vector3f target, Vec3d vec) {
return set(target, (float) vec.x, (float) vec.y, (float) vec.z);
}

@NotNull
public static Vector3f set(@Nullable Vector3f target, Vec3i vec) {
return set(target, vec.getX(), vec.getY(), vec.getZ());
}

public static Vector3f vec3f(Vec3d vec3d) {
return set(null, vec3d);
}

public static Vector3f vec3f(Vec3i vec3i) {
return set(null, vec3i);
}

public static Vector3f vec3fAdd(Vector3f source, Vector3f target, float x, float y, float z) {
if (target == null) target = new Vector3f();
if (source == null) return set(target, x, y, z);
if (target != source) target.set(source);
return target.translate(x, y, z);
}

@NotNull
public static Vector3f vec3fAdd(Vector3f source, @Nullable Vector3f target, Vec3i vec) {
return vec3fAdd(source, target, vec.getX(), vec.getY(), vec.getZ());
}

@NotNull
public static Vector3f vec3fAdd(Vector3f source, @Nullable Vector3f target, Vec3d vec) {
return vec3fAdd(source, target, (float) vec.x, (float) vec.y, (float) vec.z);
}
}
Loading