修复GameRendererMixin视角旋转
This commit is contained in:
parent
395ee785eb
commit
848404872c
3 changed files with 14 additions and 18 deletions
|
@ -440,7 +440,7 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
Matrix4f transform = getVehicleTransform(1);
|
Matrix4f transform = getVehicleTransform(1);
|
||||||
|
|
||||||
float x = 0.6f;
|
float x = 0.6f;
|
||||||
float y = -0.85f;
|
float y = -0.65f;
|
||||||
float z = 1f;
|
float z = 1f;
|
||||||
|
|
||||||
int i = this.getOrderedPassengers().indexOf(passenger);
|
int i = this.getOrderedPassengers().indexOf(passenger);
|
||||||
|
|
|
@ -163,7 +163,7 @@ public abstract class CameraMixin {
|
||||||
|
|
||||||
var cameraPosition = vehicle.getThirdPersonCameraPosition(vehicle.getSeatIndex(entity));
|
var cameraPosition = vehicle.getThirdPersonCameraPosition(vehicle.getSeatIndex(entity));
|
||||||
if (cameraPosition != null) {
|
if (cameraPosition != null) {
|
||||||
move(-getMaxZoom((float) cameraPosition.distance()), (float) cameraPosition.y(), (float) cameraPosition.z());
|
move(-getMaxZoom((float) cameraPosition.distance()), (float) cameraPosition.y(), -(float) cameraPosition.z());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.math.Axis;
|
import com.mojang.math.Axis;
|
||||||
import net.minecraft.client.Camera;
|
import net.minecraft.client.Camera;
|
||||||
import net.minecraft.client.CameraType;
|
import net.minecraft.client.CameraType;
|
||||||
import net.minecraft.client.DeltaTracker;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.GameRenderer;
|
import net.minecraft.client.renderer.GameRenderer;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
@ -44,14 +43,12 @@ public class GameRendererMixin {
|
||||||
private Camera mainCamera;
|
private Camera mainCamera;
|
||||||
|
|
||||||
@SuppressWarnings("ConstantValue")
|
@SuppressWarnings("ConstantValue")
|
||||||
@Inject(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;setup(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/world/entity/Entity;ZZF)V"))
|
@Inject(method = "bobHurt(Lcom/mojang/blaze3d/vertex/PoseStack;F)V", at = @At("HEAD"), cancellable = false)
|
||||||
public void superbWarfare$renderWorld(DeltaTracker deltaTracker, CallbackInfo ci) {
|
public void superbWarfare$renderWorld(PoseStack poseStack, float partialTicks, CallbackInfo ci) {
|
||||||
Entity entity = mainCamera.getEntity();
|
Entity entity = mainCamera.getEntity();
|
||||||
|
|
||||||
if (entity != null && !mainCamera.isDetached() && entity.getRootVehicle() instanceof VehicleEntity vehicle) {
|
if (entity != null && !mainCamera.isDetached() && entity.getRootVehicle() instanceof VehicleEntity vehicle) {
|
||||||
// rotate camera
|
// rotate camera
|
||||||
var tickDelta = deltaTracker.getGameTimeDeltaPartialTick(true);
|
float a = vehicle.getTurretYaw(partialTicks);
|
||||||
float a = vehicle.getTurretYaw(tickDelta);
|
|
||||||
|
|
||||||
float r = (Mth.abs(a) - 90f) / 90f;
|
float r = (Mth.abs(a) - 90f) / 90f;
|
||||||
|
|
||||||
|
@ -67,8 +64,7 @@ public class GameRendererMixin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO game render mixin matrices
|
poseStack.mulPose(Axis.ZP.rotationDegrees(-r * vehicle.getRoll(partialTicks) + r2 * vehicle.getViewXRot(partialTicks)));
|
||||||
// matrices.mulPose(Axis.ZP.rotationDegrees(-r * vehicle.getRoll(tickDelta) + r2 * vehicle.getViewXRot(tickDelta)));
|
|
||||||
|
|
||||||
if (!(vehicle instanceof SpeedboatEntity)) {
|
if (!(vehicle instanceof SpeedboatEntity)) {
|
||||||
// fetch eye offset
|
// fetch eye offset
|
||||||
|
@ -77,17 +73,17 @@ public class GameRendererMixin {
|
||||||
// transform eye offset to match aircraft rotation
|
// transform eye offset to match aircraft rotation
|
||||||
Vector3f offset = new Vector3f(0, -eye, 0);
|
Vector3f offset = new Vector3f(0, -eye, 0);
|
||||||
Quaternionf quaternion = Axis.XP.rotationDegrees(0.0f);
|
Quaternionf quaternion = Axis.XP.rotationDegrees(0.0f);
|
||||||
quaternion.mul(Axis.YP.rotationDegrees(-vehicle.getViewYRot(tickDelta)));
|
quaternion.mul(Axis.YP.rotationDegrees(-vehicle.getViewYRot(partialTicks)));
|
||||||
quaternion.mul(Axis.XP.rotationDegrees(vehicle.getViewXRot(tickDelta)));
|
quaternion.mul(Axis.XP.rotationDegrees(vehicle.getViewXRot(partialTicks)));
|
||||||
quaternion.mul(Axis.ZP.rotationDegrees(vehicle.getRoll(tickDelta)));
|
quaternion.mul(Axis.ZP.rotationDegrees(vehicle.getRoll(partialTicks)));
|
||||||
offset.rotate(quaternion);
|
offset.rotate(quaternion);
|
||||||
|
|
||||||
// apply camera offset
|
// apply camera offset
|
||||||
// matrices.mulPose(Axis.XP.rotationDegrees(mainCamera.getXRot()));
|
poseStack.mulPose(Axis.XP.rotationDegrees(mainCamera.getXRot()));
|
||||||
// matrices.mulPose(Axis.YP.rotationDegrees(mainCamera.getYRot() + 180.0f));
|
poseStack.mulPose(Axis.YP.rotationDegrees(mainCamera.getYRot() + 180.0f));
|
||||||
// matrices.translate(offset.x(), offset.y() + eye, offset.z());
|
poseStack.translate(offset.x(), offset.y() + eye, offset.z());
|
||||||
// matrices.mulPose(Axis.YP.rotationDegrees(-mainCamera.getYRot() - 180.0f));
|
poseStack.mulPose(Axis.YP.rotationDegrees(-mainCamera.getYRot() - 180.0f));
|
||||||
// matrices.mulPose(Axis.XP.rotationDegrees(-mainCamera.getXRot()));
|
poseStack.mulPose(Axis.XP.rotationDegrees(-mainCamera.getXRot()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue