Fix transformations

This commit is contained in:
SD 2021-01-10 18:46:12 +05:30
parent 96204976b8
commit d050f6d976
No known key found for this signature in database
GPG key ID: E36B57EE08544BC5
3 changed files with 11 additions and 20 deletions

View file

@ -1,6 +1,7 @@
package org.dimdev.dimdoors.client; package org.dimdev.dimdoors.client;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.Vector3f;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
public enum DefaultTransformation implements Transformer { public enum DefaultTransformation implements Transformer {
@ -13,19 +14,18 @@ public enum DefaultTransformation implements Transformer {
@Override @Override
public void transform(MatrixStack matrices) { public void transform(MatrixStack matrices) {
// TODO // TODO
matrices.translate(0, 0, 0.5F);
} }
}, },
NORTH_DOOR { NORTH_DOOR {
@Override @Override
public void transform(MatrixStack matrices) { public void transform(MatrixStack matrices) {
// TODO
matrices.translate(0, 0, 0.81F); matrices.translate(0, 0, 0.81F);
} }
}, },
SOUTH_DOOR { SOUTH_DOOR {
@Override @Override
public void transform(MatrixStack matrices) { public void transform(MatrixStack matrices) {
// TODO
matrices.translate(0, 0, 0.19F); matrices.translate(0, 0, 0.19F);
} }
}, },
@ -33,16 +33,16 @@ public enum DefaultTransformation implements Transformer {
@Override @Override
public void transform(MatrixStack matrices) { public void transform(MatrixStack matrices) {
// TODO // TODO
// matrices.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(90.0F)); matrices.multiply(Vector3f.NEGATIVE_Y.getDegreesQuaternion(90.0F));
matrices.translate(-0.2F, 0, 0); matrices.translate(0, 0, -0.81F);
} }
}, },
EAST_DOOR { EAST_DOOR {
@Override @Override
public void transform(MatrixStack matrices) { public void transform(MatrixStack matrices) {
// TODO // TODO
// matrices.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(90.0F)); matrices.multiply(Vector3f.NEGATIVE_Y.getDegreesQuaternion(90.0F));
matrices.translate(0.8F, 0, 0); matrices.translate(0, 0, -0.19F);
} }
}; };
@ -51,9 +51,4 @@ public enum DefaultTransformation implements Transformer {
public static DefaultTransformation fromDirection(Direction direction) { public static DefaultTransformation fromDirection(Direction direction) {
return VALUES[direction.ordinal()]; return VALUES[direction.ordinal()];
} }
@Override
public void setupTallTransform(MatrixStack matrices) {
matrices.translate(0, 1, 0);
}
} }

View file

@ -24,6 +24,7 @@ import net.fabricmc.api.Environment;
public final class DimensionalPortalRenderer { public final class DimensionalPortalRenderer {
private static final Random RANDOM = new Random(31100L); private static final Random RANDOM = new Random(31100L);
private static final ModelPart MODEL; private static final ModelPart MODEL;
private static final ModelPart TALL_MODEL;
private static final EntityRenderDispatcher ENTITY_RENDER_DISPATCHER; private static final EntityRenderDispatcher ENTITY_RENDER_DISPATCHER;
private static final List<RenderLayer> RENDER_LAYERS = ImmutableList.copyOf(IntStream.range(0, 16).mapToObj(MyRenderLayer::getPortal).collect(Collectors.toList())); private static final List<RenderLayer> RENDER_LAYERS = ImmutableList.copyOf(IntStream.range(0, 16).mapToObj(MyRenderLayer::getPortal).collect(Collectors.toList()));
@ -49,13 +50,8 @@ public final class DimensionalPortalRenderer {
float g = MathHelper.clamp((RANDOM.nextFloat() * 0.4F + 0.1F) * v, 0, 1); float g = MathHelper.clamp((RANDOM.nextFloat() * 0.4F + 0.1F) * v, 0, 1);
float b = MathHelper.clamp((RANDOM.nextFloat() * 0.5F + 0.6F) * v, 0, 1); float b = MathHelper.clamp((RANDOM.nextFloat() * 0.5F + 0.6F) * v, 0, 1);
MODEL.render(matrices, vertexConsumer, light, overlay, r, g, b, 1); ModelPart model = tall ? TALL_MODEL : MODEL;
if (tall) { model.render(matrices, vertexConsumer, light, overlay, r, g, b, 1);
matrices.push();
transformer.setupTallTransform(matrices);
MODEL.render(matrices, vertexConsumer, light, overlay, r, g, b, 1);
matrices.pop();
}
} }
private static int getOffset(double d) { private static int getOffset(double d) {
@ -80,7 +76,9 @@ public final class DimensionalPortalRenderer {
static { static {
MODEL = new ModelPart(1024, 1024, 0, 0); MODEL = new ModelPart(1024, 1024, 0, 0);
TALL_MODEL = new ModelPart(1024, 1024, 0, 0);
MODEL.addCuboid(0, 0, 0, 16, 16, 0); MODEL.addCuboid(0, 0, 0, 16, 16, 0);
TALL_MODEL.addCuboid(0, 0, 0, 16, 32, 0);
ENTITY_RENDER_DISPATCHER = MinecraftClient.getInstance().getEntityRenderDispatcher(); ENTITY_RENDER_DISPATCHER = MinecraftClient.getInstance().getEntityRenderDispatcher();
} }
} }

View file

@ -4,6 +4,4 @@ import net.minecraft.client.util.math.MatrixStack;
public interface Transformer { public interface Transformer {
void transform(MatrixStack matrices); void transform(MatrixStack matrices);
void setupTallTransform(MatrixStack matrices);
} }