修复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);
|
||||
|
||||
float x = 0.6f;
|
||||
float y = -0.85f;
|
||||
float y = -0.65f;
|
||||
float z = 1f;
|
||||
|
||||
int i = this.getOrderedPassengers().indexOf(passenger);
|
||||
|
|
|
@ -163,7 +163,7 @@ public abstract class CameraMixin {
|
|||
|
||||
var cameraPosition = vehicle.getThirdPersonCameraPosition(vehicle.getSeatIndex(entity));
|
||||
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 net.minecraft.client.Camera;
|
||||
import net.minecraft.client.CameraType;
|
||||
import net.minecraft.client.DeltaTracker;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
import net.minecraft.util.Mth;
|
||||
|
@ -44,14 +43,12 @@ public class GameRendererMixin {
|
|||
private Camera mainCamera;
|
||||
|
||||
@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"))
|
||||
public void superbWarfare$renderWorld(DeltaTracker deltaTracker, CallbackInfo ci) {
|
||||
@Inject(method = "bobHurt(Lcom/mojang/blaze3d/vertex/PoseStack;F)V", at = @At("HEAD"), cancellable = false)
|
||||
public void superbWarfare$renderWorld(PoseStack poseStack, float partialTicks, CallbackInfo ci) {
|
||||
Entity entity = mainCamera.getEntity();
|
||||
|
||||
if (entity != null && !mainCamera.isDetached() && entity.getRootVehicle() instanceof VehicleEntity vehicle) {
|
||||
// rotate camera
|
||||
var tickDelta = deltaTracker.getGameTimeDeltaPartialTick(true);
|
||||
float a = vehicle.getTurretYaw(tickDelta);
|
||||
float a = vehicle.getTurretYaw(partialTicks);
|
||||
|
||||
float r = (Mth.abs(a) - 90f) / 90f;
|
||||
|
||||
|
@ -67,8 +64,7 @@ public class GameRendererMixin {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO game render mixin matrices
|
||||
// matrices.mulPose(Axis.ZP.rotationDegrees(-r * vehicle.getRoll(tickDelta) + r2 * vehicle.getViewXRot(tickDelta)));
|
||||
poseStack.mulPose(Axis.ZP.rotationDegrees(-r * vehicle.getRoll(partialTicks) + r2 * vehicle.getViewXRot(partialTicks)));
|
||||
|
||||
if (!(vehicle instanceof SpeedboatEntity)) {
|
||||
// fetch eye offset
|
||||
|
@ -77,17 +73,17 @@ public class GameRendererMixin {
|
|||
// transform eye offset to match aircraft rotation
|
||||
Vector3f offset = new Vector3f(0, -eye, 0);
|
||||
Quaternionf quaternion = Axis.XP.rotationDegrees(0.0f);
|
||||
quaternion.mul(Axis.YP.rotationDegrees(-vehicle.getViewYRot(tickDelta)));
|
||||
quaternion.mul(Axis.XP.rotationDegrees(vehicle.getViewXRot(tickDelta)));
|
||||
quaternion.mul(Axis.ZP.rotationDegrees(vehicle.getRoll(tickDelta)));
|
||||
quaternion.mul(Axis.YP.rotationDegrees(-vehicle.getViewYRot(partialTicks)));
|
||||
quaternion.mul(Axis.XP.rotationDegrees(vehicle.getViewXRot(partialTicks)));
|
||||
quaternion.mul(Axis.ZP.rotationDegrees(vehicle.getRoll(partialTicks)));
|
||||
offset.rotate(quaternion);
|
||||
|
||||
// apply camera offset
|
||||
// matrices.mulPose(Axis.XP.rotationDegrees(mainCamera.getXRot()));
|
||||
// matrices.mulPose(Axis.YP.rotationDegrees(mainCamera.getYRot() + 180.0f));
|
||||
// matrices.translate(offset.x(), offset.y() + eye, offset.z());
|
||||
// matrices.mulPose(Axis.YP.rotationDegrees(-mainCamera.getYRot() - 180.0f));
|
||||
// matrices.mulPose(Axis.XP.rotationDegrees(-mainCamera.getXRot()));
|
||||
poseStack.mulPose(Axis.XP.rotationDegrees(mainCamera.getXRot()));
|
||||
poseStack.mulPose(Axis.YP.rotationDegrees(mainCamera.getYRot() + 180.0f));
|
||||
poseStack.translate(offset.x(), offset.y() + eye, offset.z());
|
||||
poseStack.mulPose(Axis.YP.rotationDegrees(-mainCamera.getYRot() - 180.0f));
|
||||
poseStack.mulPose(Axis.XP.rotationDegrees(-mainCamera.getXRot()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue