平滑部分HUD
This commit is contained in:
parent
9592fd561f
commit
280b1b9e16
3 changed files with 15 additions and 19 deletions
|
@ -11,12 +11,12 @@ import com.atsuishio.superbwarfare.tools.SeekTool;
|
|||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
@ -135,18 +135,18 @@ public class DroneUIOverlay {
|
|||
}
|
||||
}
|
||||
|
||||
Camera camera = mc.gameRenderer.getMainCamera();
|
||||
Vec3 cameraPos = camera.getPosition();
|
||||
|
||||
List<Entity> entities = SeekTool.seekLivingEntities(entity, entity.level(), 256, 30);
|
||||
float fovAdjust2 = (float) (mc.options.fov().get() / 30) - 1;
|
||||
double zoom = 0.975 * ClientEventHandler.droneFovLerp + 0.06 * fovAdjust2;
|
||||
|
||||
for (var e : entities) {
|
||||
Vec3 pos = new Vec3(e.getX(), e.getEyeY(), e.getZ());
|
||||
Vec3 lookAngle = entity.getLookAngle().normalize().scale(pos.distanceTo(cameraPos) * (1 - 1.0 / zoom));
|
||||
Vec3 droneVec = new Vec3(Mth.lerp(event.getPartialTick(), entity.xo, entity.getX()), Mth.lerp(event.getPartialTick(), entity.yo + entity.getEyeHeight(), entity.getEyeY()), Mth.lerp(event.getPartialTick(), entity.zo, entity.getZ()));
|
||||
Vec3 pos = new Vec3(Mth.lerp(event.getPartialTick(), e.xo, e.getX()), Mth.lerp(event.getPartialTick(), e.yo + e.getEyeHeight(), e.getEyeY()), Mth.lerp(event.getPartialTick(), e.zo, e.getZ()));
|
||||
|
||||
var cPos = cameraPos.add(lookAngle);
|
||||
Vec3 lookAngle = entity.getLookAngle().normalize().scale(pos.distanceTo(droneVec) * (1 - 1.0 / zoom));
|
||||
|
||||
var cPos = droneVec.add(lookAngle);
|
||||
Vec3 point = RenderHelper.worldToScreen(pos, cPos);
|
||||
if (point != null) {
|
||||
poseStack.pushPose();
|
||||
|
|
|
@ -12,7 +12,6 @@ import com.atsuishio.superbwarfare.tools.SeekTool;
|
|||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
|
@ -45,9 +44,6 @@ public class JavelinHudOverlay {
|
|||
int w = event.getWindow().getGuiScaledWidth();
|
||||
int h = event.getWindow().getGuiScaledHeight();
|
||||
Player player = Minecraft.getInstance().player;
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
Camera camera = mc.gameRenderer.getMainCamera();
|
||||
Vec3 cameraPos = camera.getPosition();
|
||||
PoseStack poseStack = event.getGuiGraphics().pose();
|
||||
|
||||
if (player != null) {
|
||||
|
@ -103,10 +99,11 @@ public class JavelinHudOverlay {
|
|||
double zoom = Minecraft.getInstance().options.fov().get() / ClientEventHandler.fov + 0.5 * fovAdjust2;
|
||||
|
||||
for (var e : entities) {
|
||||
Vec3 pos = new Vec3(e.getX(), e.getEyeY(), e.getZ());
|
||||
Vec3 lookAngle = player.getLookAngle().normalize().scale(pos.distanceTo(cameraPos) * (1 - 1.0 / zoom));
|
||||
Vec3 playerVec = new Vec3(Mth.lerp(event.getPartialTick(), player.xo, player.getX()), Mth.lerp(event.getPartialTick(), player.yo + player.getEyeHeight(), player.getEyeY()), Mth.lerp(event.getPartialTick(), player.zo, player.getZ()));
|
||||
Vec3 pos = new Vec3(Mth.lerp(event.getPartialTick(), e.xo, e.getX()), Mth.lerp(event.getPartialTick(), e.yo + e.getEyeHeight(), e.getEyeY()), Mth.lerp(event.getPartialTick(), e.zo, e.getZ()));
|
||||
Vec3 lookAngle = player.getLookAngle().normalize().scale(pos.distanceTo(playerVec) * (1 - 1.0 / zoom));
|
||||
|
||||
var cPos = cameraPos.add(lookAngle);
|
||||
var cPos = playerVec.add(lookAngle);
|
||||
Vec3 point = RenderHelper.worldToScreen(pos, cPos);
|
||||
if (point == null) return;
|
||||
|
||||
|
|
|
@ -7,9 +7,9 @@ import com.atsuishio.superbwarfare.init.ModItems;
|
|||
import com.atsuishio.superbwarfare.tools.SeekTool;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
@ -28,8 +28,6 @@ public class RedTriangleOverlay {
|
|||
@SubscribeEvent(priority = EventPriority.NORMAL)
|
||||
public static void eventHandler(RenderGuiEvent.Pre event) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
Camera camera = mc.gameRenderer.getMainCamera();
|
||||
Vec3 cameraPos = camera.getPosition();
|
||||
PoseStack poseStack = event.getGuiGraphics().pose();
|
||||
|
||||
Player player = mc.player;
|
||||
|
@ -42,9 +40,10 @@ public class RedTriangleOverlay {
|
|||
|
||||
Entity idf = SeekTool.seekLivingEntity(player, player.level(), 128, 6);
|
||||
if (idf == null) return;
|
||||
double distance = idf.position().distanceTo(cameraPos);
|
||||
|
||||
Vec3 point = RenderHelper.worldToScreen(new Vec3(idf.getX(), idf.getEyeY() + 0.5 + 0.07 * distance, idf.getZ()), cameraPos);
|
||||
Vec3 playerVec = new Vec3(Mth.lerp(event.getPartialTick(), player.xo, player.getX()), Mth.lerp(event.getPartialTick(), player.yo + player.getEyeHeight(), player.getEyeY()), Mth.lerp(event.getPartialTick(), player.zo, player.getZ()));
|
||||
double distance = idf.position().distanceTo(playerVec);
|
||||
Vec3 pos = new Vec3(Mth.lerp(event.getPartialTick(), idf.xo, idf.getX()), Mth.lerp(event.getPartialTick(), idf.yo + idf.getEyeHeight() + 0.5 + 0.07 * distance, idf.getEyeY() + 0.5 + 0.07 * distance), Mth.lerp(event.getPartialTick(), idf.zo, idf.getZ()));
|
||||
Vec3 point = RenderHelper.worldToScreen(pos, playerVec);
|
||||
if (point == null) return;
|
||||
|
||||
poseStack.pushPose();
|
||||
|
|
Loading…
Add table
Reference in a new issue