Fix rendering issues with the debug bounding boxes

This commit is contained in:
Sollace 2020-04-19 23:40:25 +02:00
parent afb38ab71f
commit b6df11db78
3 changed files with 19 additions and 26 deletions

View file

@ -7,7 +7,6 @@ import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.WorldRenderer; import net.minecraft.client.render.WorldRenderer;
import net.minecraft.client.render.entity.EntityRenderer; import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.Vector3f;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.util.math.Box; import net.minecraft.util.math.Box;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
@ -18,9 +17,10 @@ import com.minelittlepony.pony.IPony;
public final class DebugBoundingBoxRenderer { public final class DebugBoundingBoxRenderer {
public static <T extends LivingEntity> void render(IPony pony, EntityRenderer<T> renderer, T entity, MatrixStack stack, VertexConsumerProvider renderContext, float tickDelta) { public static <T extends LivingEntity> void render(IPony pony, EntityRenderer<T> renderer, T entity, MatrixStack stack, VertexConsumerProvider renderContext, float tickDelta) {
MinecraftClient mc = MinecraftClient.getInstance();
if (!mc.getEntityRenderManager().shouldRenderHitboxes() || entity.squaredDistanceTo(mc.player) > 70) { MinecraftClient client = MinecraftClient.getInstance();
if (!client.getEntityRenderManager().shouldRenderHitboxes() || entity.isInvisible() || client.hasReducedDebugInfo()) {
return; return;
} }
@ -29,10 +29,6 @@ public final class DebugBoundingBoxRenderer {
stack.push(); stack.push();
stack.translate(-offset.x, -offset.y, -offset.z); stack.translate(-offset.x, -offset.y, -offset.z);
float yaw = MathHelper.lerp(tickDelta, entity.prevBodyYaw, entity.bodyYaw);
stack.multiply(Vector3f.NEGATIVE_Y.getDegreesQuaternion(yaw));
Box boundingBox = pony.getComputedBoundingBox(entity); Box boundingBox = pony.getComputedBoundingBox(entity);
Vec3d pos = entity.getPos(); Vec3d pos = entity.getPos();

View file

@ -83,15 +83,12 @@ public class PlayerPonyRenderer extends PlayerEntityRenderer implements IPonyRen
@Override @Override
public void render(AbstractClientPlayerEntity entity, float entityYaw, float tickDelta, MatrixStack stack, VertexConsumerProvider renderContext, int lightUv) { public void render(AbstractClientPlayerEntity entity, float entityYaw, float tickDelta, MatrixStack stack, VertexConsumerProvider renderContext, int lightUv) {
manager.preRenderCallback(entity, stack, tickDelta);
shadowSize = manager.getShadowScale(); shadowSize = manager.getShadowScale();
super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv); super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv);
DebugBoundingBoxRenderer.render(manager.getPony(entity), this, entity, stack, renderContext, tickDelta); DebugBoundingBoxRenderer.render(manager.getPony(entity), this, entity, stack, renderContext, tickDelta);
// Translate the shadow position after everything is done // Translate the shadow position after everything is done
// (shadows are drawn after us) // (shadows are drawn after us)
// TODO: Get a proper shadow renderer going
if (!entity.hasVehicle() && !entity.isSleeping()) { if (!entity.hasVehicle() && !entity.isSleeping()) {
float yaw = MathHelper.lerpAngleDegrees(tickDelta, entity.prevBodyYaw, entity.bodyYaw); float yaw = MathHelper.lerpAngleDegrees(tickDelta, entity.prevBodyYaw, entity.bodyYaw);
float l = entity.getWidth() / 2 * manager.getPony(entity).getMetadata().getSize().getScaleFactor(); float l = entity.getWidth() / 2 * manager.getPony(entity).getMetadata().getSize().getScaleFactor();
@ -102,6 +99,15 @@ public class PlayerPonyRenderer extends PlayerEntityRenderer implements IPonyRen
} }
@Override
protected void setupTransforms(AbstractClientPlayerEntity entity, MatrixStack stack, float ageInTicks, float rotationYaw, float partialTicks) {
manager.preRenderCallback(entity, stack, partialTicks);
rotationYaw = manager.getRenderYaw(entity, rotationYaw, partialTicks);
super.setupTransforms(entity, stack, ageInTicks, rotationYaw, partialTicks);
manager.applyPostureTransform(entity, stack, rotationYaw, partialTicks);
}
@Override @Override
public boolean shouldRender(AbstractClientPlayerEntity entity, Frustum camera, double camX, double camY, double camZ) { public boolean shouldRender(AbstractClientPlayerEntity entity, Frustum camera, double camX, double camY, double camZ) {
if (entity.isSleeping() && entity == MinecraftClient.getInstance().player) { if (entity.isSleeping() && entity == MinecraftClient.getInstance().player) {
@ -151,14 +157,6 @@ public class PlayerPonyRenderer extends PlayerEntityRenderer implements IPonyRen
stack.pop(); stack.pop();
} }
@Override
protected void setupTransforms(AbstractClientPlayerEntity entity, MatrixStack stack, float ageInTicks, float rotationYaw, float partialTicks) {
rotationYaw = manager.getRenderYaw(entity, rotationYaw, partialTicks);
super.setupTransforms(entity, stack, ageInTicks, rotationYaw, partialTicks);
manager.applyPostureTransform(entity, stack, rotationYaw, partialTicks);
}
@Override @Override
public Identifier getTexture(AbstractClientPlayerEntity player) { public Identifier getTexture(AbstractClientPlayerEntity player) {
return manager.getPony(player).getTexture(); return manager.getPony(player).getTexture();

View file

@ -56,7 +56,13 @@ public abstract class PonyRenderer<T extends MobEntity, M extends EntityModel<T>
@Override @Override
public void render(T entity, float entityYaw, float tickDelta, MatrixStack stack, VertexConsumerProvider renderContext, int lightUv) { public void render(T entity, float entityYaw, float tickDelta, MatrixStack stack, VertexConsumerProvider renderContext, int lightUv) {
manager.preRenderCallback(entity, stack, tickDelta); super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv);
DebugBoundingBoxRenderer.render(manager.getPony(entity), this, entity, stack, renderContext, tickDelta);
}
@Override
protected void setupTransforms(T entity, MatrixStack stack, float ageInTicks, float rotationYaw, float partialTicks) {
manager.preRenderCallback(entity, stack, partialTicks);
if (getModel() instanceof PlayerEntityModel) { if (getModel() instanceof PlayerEntityModel) {
((PlayerEntityModel<?>)getModel()).setVisible(true); ((PlayerEntityModel<?>)getModel()).setVisible(true);
} }
@ -65,13 +71,6 @@ public abstract class PonyRenderer<T extends MobEntity, M extends EntityModel<T>
stack.translate(0, 0.125D, 0); stack.translate(0, 0.125D, 0);
} }
super.render(entity, entityYaw, tickDelta, stack, renderContext, lightUv);
DebugBoundingBoxRenderer.render(manager.getPony(entity), this, entity, stack, renderContext, tickDelta);
}
@Override
protected void setupTransforms(T entity, MatrixStack stack, float ageInTicks, float rotationYaw, float partialTicks) {
rotationYaw = manager.getRenderYaw(entity, rotationYaw, partialTicks); rotationYaw = manager.getRenderYaw(entity, rotationYaw, partialTicks);
super.setupTransforms(entity, stack, ageInTicks, rotationYaw, partialTicks); super.setupTransforms(entity, stack, ageInTicks, rotationYaw, partialTicks);