2019-03-23 20:49:34 +01:00
|
|
|
package com.minelittlepony.client.render;
|
2018-09-20 14:32:54 +02:00
|
|
|
|
2019-05-27 17:59:15 +02:00
|
|
|
import net.minecraft.client.MinecraftClient;
|
2019-11-23 18:28:42 +01:00
|
|
|
import net.minecraft.client.render.RenderLayer;
|
|
|
|
import net.minecraft.client.render.VertexConsumer;
|
|
|
|
import net.minecraft.client.render.VertexConsumerProvider;
|
2019-05-27 17:59:15 +02:00
|
|
|
import net.minecraft.client.render.WorldRenderer;
|
2019-12-09 23:30:43 +01:00
|
|
|
import net.minecraft.client.render.entity.EntityRenderer;
|
2019-11-23 18:28:42 +01:00
|
|
|
import net.minecraft.client.util.math.MatrixStack;
|
2019-12-09 23:30:43 +01:00
|
|
|
import net.minecraft.client.util.math.Vector3f;
|
2019-05-27 17:59:15 +02:00
|
|
|
import net.minecraft.entity.LivingEntity;
|
2019-06-27 19:28:21 +02:00
|
|
|
import net.minecraft.util.math.Box;
|
2019-12-09 23:30:43 +01:00
|
|
|
import net.minecraft.util.math.MathHelper;
|
2019-11-23 18:28:42 +01:00
|
|
|
import net.minecraft.util.math.Vec3d;
|
2018-09-20 14:32:54 +02:00
|
|
|
|
2019-03-23 20:58:50 +01:00
|
|
|
import com.minelittlepony.pony.IPony;
|
2018-09-20 14:32:54 +02:00
|
|
|
|
2019-11-29 16:26:19 +01:00
|
|
|
public final class DebugBoundingBoxRenderer {
|
2018-09-20 14:32:54 +02:00
|
|
|
|
2019-12-09 23:30:43 +01:00
|
|
|
public static <T extends LivingEntity> void render(IPony pony, EntityRenderer<T> renderer, T entity, MatrixStack stack, VertexConsumerProvider renderContext, float tickDelta) {
|
2019-05-27 17:59:15 +02:00
|
|
|
MinecraftClient mc = MinecraftClient.getInstance();
|
2018-09-20 14:57:24 +02:00
|
|
|
|
2019-06-11 14:10:36 +02:00
|
|
|
if (!mc.getEntityRenderManager().shouldRenderHitboxes() || entity.squaredDistanceTo(mc.player) > 70) {
|
2018-09-20 14:57:24 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2019-12-09 23:30:43 +01:00
|
|
|
Vec3d offset = renderer.getPositionOffset(entity, tickDelta);
|
|
|
|
|
|
|
|
stack.push();
|
|
|
|
stack.translate(-offset.x, -offset.y, -offset.z);
|
|
|
|
|
|
|
|
float yaw = MathHelper.lerp(tickDelta, entity.prevBodyYaw, entity.bodyYaw);
|
|
|
|
|
|
|
|
stack.multiply(Vector3f.NEGATIVE_Y.getDegreesQuaternion(yaw));
|
|
|
|
|
2019-06-27 19:28:21 +02:00
|
|
|
Box boundingBox = pony.getComputedBoundingBox(entity);
|
2018-09-20 14:32:54 +02:00
|
|
|
|
2019-12-09 23:30:43 +01:00
|
|
|
Vec3d pos = entity.getPos();
|
|
|
|
|
|
|
|
double x = - MathHelper.lerp(tickDelta, entity.lastRenderX, pos.x);
|
|
|
|
double y = - MathHelper.lerp(tickDelta, entity.lastRenderY, pos.y);
|
|
|
|
double z = - MathHelper.lerp(tickDelta, entity.lastRenderZ, pos.z);
|
2018-09-20 14:32:54 +02:00
|
|
|
|
2019-11-23 18:28:42 +01:00
|
|
|
VertexConsumer vertices = renderContext.getBuffer(RenderLayer.getLines());
|
2018-09-20 14:32:54 +02:00
|
|
|
|
2019-12-09 23:30:43 +01:00
|
|
|
WorldRenderer.drawBox(stack, vertices, boundingBox.offset(x, y, z), 1, 1, 0, 1);
|
|
|
|
stack.pop();
|
2018-09-20 14:32:54 +02:00
|
|
|
}
|
|
|
|
}
|