优化飞行载具旋转轴
This commit is contained in:
parent
014145bf33
commit
eef5bc9a0c
5 changed files with 37 additions and 11 deletions
|
@ -242,7 +242,7 @@ public class HelicopterHudOverlay {
|
||||||
|
|
||||||
public static Matrix4f getVehicleTransform(VehicleEntity vehicle) {
|
public static Matrix4f getVehicleTransform(VehicleEntity vehicle) {
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate((float) vehicle.getX(), (float) vehicle.getY(), (float) vehicle.getZ());
|
transform.translate((float) vehicle.getX(), (float) vehicle.getY() + 1.45f, (float) vehicle.getZ());
|
||||||
transform.rotate(Axis.YP.rotationDegrees(-vehicle.getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(-vehicle.getYRot()));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(vehicle.getXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(vehicle.getXRot()));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(vehicle.getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(vehicle.getRoll()));
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
import net.minecraft.world.phys.Vec3;
|
||||||
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
||||||
import software.bernie.geckolib.cache.object.GeoBone;
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
import software.bernie.geckolib.renderer.GeoEntityRenderer;
|
import software.bernie.geckolib.renderer.GeoEntityRenderer;
|
||||||
|
@ -38,9 +39,10 @@ public class Ah6Renderer extends GeoEntityRenderer<Ah6Entity> {
|
||||||
@Override
|
@Override
|
||||||
public void render(Ah6Entity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
|
public void render(Ah6Entity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
|
||||||
poseStack.pushPose();
|
poseStack.pushPose();
|
||||||
poseStack.mulPose(Axis.YP.rotationDegrees(-entityYaw));
|
Vec3 root = new Vec3(0, 1.45, 0);
|
||||||
poseStack.mulPose(Axis.XP.rotationDegrees(Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())));
|
poseStack.rotateAround(Axis.YP.rotationDegrees(-entityYaw), (float) root.x, (float) root.y, (float) root.z);
|
||||||
poseStack.mulPose(Axis.ZP.rotationDegrees(Mth.lerp(partialTicks, entityIn.prevRoll, entityIn.getRoll())));
|
poseStack.rotateAround(Axis.XP.rotationDegrees(Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())), (float) root.x, (float) root.y, (float) root.z);
|
||||||
|
poseStack.rotateAround(Axis.ZP.rotationDegrees(Mth.lerp(partialTicks, entityIn.prevRoll, entityIn.getRoll())), (float) root.x, (float) root.y, (float) root.z);
|
||||||
super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
|
super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
|
||||||
poseStack.popPose();
|
poseStack.popPose();
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.client.renderer.RenderType;
|
||||||
import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
import net.minecraft.world.phys.Vec3;
|
||||||
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
||||||
import software.bernie.geckolib.cache.object.GeoBone;
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
import software.bernie.geckolib.renderer.GeoEntityRenderer;
|
import software.bernie.geckolib.renderer.GeoEntityRenderer;
|
||||||
|
@ -40,9 +41,10 @@ public class Tom6Renderer extends GeoEntityRenderer<Tom6Entity> {
|
||||||
@Override
|
@Override
|
||||||
public void render(Tom6Entity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
|
public void render(Tom6Entity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
|
||||||
poseStack.pushPose();
|
poseStack.pushPose();
|
||||||
poseStack.mulPose(Axis.YP.rotationDegrees(-entityYaw));
|
Vec3 root = new Vec3(0, 0.5, 0);
|
||||||
poseStack.mulPose(Axis.XP.rotationDegrees(Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())));
|
poseStack.rotateAround(Axis.YP.rotationDegrees(-entityYaw), (float) root.x, (float) root.y, (float) root.z);
|
||||||
poseStack.mulPose(Axis.ZP.rotationDegrees(Mth.lerp(partialTicks, entityIn.prevRoll, entityIn.getRoll())));
|
poseStack.rotateAround(Axis.XP.rotationDegrees(Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot())), (float) root.x, (float) root.y, (float) root.z);
|
||||||
|
poseStack.rotateAround(Axis.ZP.rotationDegrees(Mth.lerp(partialTicks, entityIn.prevRoll, entityIn.getRoll())), (float) root.x, (float) root.y, (float) root.z);
|
||||||
super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
|
super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
|
||||||
poseStack.popPose();
|
poseStack.popPose();
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ import com.atsuishio.superbwarfare.tools.EntityFindUtil;
|
||||||
import com.atsuishio.superbwarfare.tools.ParticleTool;
|
import com.atsuishio.superbwarfare.tools.ParticleTool;
|
||||||
import com.atsuishio.superbwarfare.tools.SoundTool;
|
import com.atsuishio.superbwarfare.tools.SoundTool;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
import com.mojang.math.Axis;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
@ -445,7 +446,7 @@ public class Ah6Entity extends ContainerMobileEntity implements GeoEntity, IHeli
|
||||||
Matrix4f transform = getVehicleTransform();
|
Matrix4f transform = getVehicleTransform();
|
||||||
|
|
||||||
float x = 0.6f;
|
float x = 0.6f;
|
||||||
float y = 1.2f;
|
float y = 1.2f - 1.45f;
|
||||||
float z = 1f;
|
float z = 1f;
|
||||||
y += (float) passenger.getMyRidingOffset();
|
y += (float) passenger.getMyRidingOffset();
|
||||||
|
|
||||||
|
@ -481,6 +482,16 @@ public class Ah6Entity extends ContainerMobileEntity implements GeoEntity, IHeli
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Matrix4f getVehicleTransform() {
|
||||||
|
Matrix4f transform = new Matrix4f();
|
||||||
|
transform.translate((float) getX(), (float) getY() + 1.45f, (float) getZ());
|
||||||
|
transform.rotate(Axis.YP.rotationDegrees(-getYRot()));
|
||||||
|
transform.rotate(Axis.XP.rotationDegrees(getXRot()));
|
||||||
|
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
||||||
|
return transform;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void destroy() {
|
public void destroy() {
|
||||||
Entity attacker = EntityFindUtil.findEntity(this.level(), this.entityData.get(LAST_ATTACKER_UUID));
|
Entity attacker = EntityFindUtil.findEntity(this.level(), this.entityData.get(LAST_ATTACKER_UUID));
|
||||||
|
@ -566,7 +577,7 @@ public class Ah6Entity extends ContainerMobileEntity implements GeoEntity, IHeli
|
||||||
if (this.cannotFire) return;
|
if (this.cannotFire) return;
|
||||||
|
|
||||||
x = 1.15f;
|
x = 1.15f;
|
||||||
y = 0.62f;
|
y = 0.62f - 1.45f;
|
||||||
z = 0.8f;
|
z = 0.8f;
|
||||||
|
|
||||||
worldPositionRight = transformPosition(transform, -x, y, z);
|
worldPositionRight = transformPosition(transform, -x, y, z);
|
||||||
|
@ -628,7 +639,7 @@ public class Ah6Entity extends ContainerMobileEntity implements GeoEntity, IHeli
|
||||||
}
|
}
|
||||||
} else if (entityData.get(WEAPON_TYPE) == 1 && this.getEntityData().get(LOADED_ROCKET) > 0) {
|
} else if (entityData.get(WEAPON_TYPE) == 1 && this.getEntityData().get(LOADED_ROCKET) > 0) {
|
||||||
x = 1.7f;
|
x = 1.7f;
|
||||||
y = 0.62f;
|
y = 0.62f - 1.45f;
|
||||||
z = 0.8f;
|
z = 0.8f;
|
||||||
|
|
||||||
worldPositionRight = transformPosition(transform, -x, y, z);
|
worldPositionRight = transformPosition(transform, -x, y, z);
|
||||||
|
|
|
@ -10,6 +10,7 @@ import com.atsuishio.superbwarfare.init.ModSounds;
|
||||||
import com.atsuishio.superbwarfare.tools.CustomExplosion;
|
import com.atsuishio.superbwarfare.tools.CustomExplosion;
|
||||||
import com.atsuishio.superbwarfare.tools.EntityFindUtil;
|
import com.atsuishio.superbwarfare.tools.EntityFindUtil;
|
||||||
import com.atsuishio.superbwarfare.tools.ParticleTool;
|
import com.atsuishio.superbwarfare.tools.ParticleTool;
|
||||||
|
import com.mojang.math.Axis;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.network.protocol.Packet;
|
import net.minecraft.network.protocol.Packet;
|
||||||
|
@ -259,7 +260,7 @@ public class Tom6Entity extends MobileVehicleEntity implements GeoEntity {
|
||||||
Matrix4f transform = getVehicleTransform();
|
Matrix4f transform = getVehicleTransform();
|
||||||
|
|
||||||
float x = 0f;
|
float x = 0f;
|
||||||
float y = 0.95f;
|
float y = 0.45f;
|
||||||
float z = -0.4f;
|
float z = -0.4f;
|
||||||
y += (float) passenger.getMyRidingOffset();
|
y += (float) passenger.getMyRidingOffset();
|
||||||
|
|
||||||
|
@ -287,6 +288,16 @@ public class Tom6Entity extends MobileVehicleEntity implements GeoEntity {
|
||||||
entity.setYBodyRot(getYRot());
|
entity.setYBodyRot(getYRot());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Matrix4f getVehicleTransform() {
|
||||||
|
Matrix4f transform = new Matrix4f();
|
||||||
|
transform.translate((float) getX(), (float) getY() + 0.5f, (float) getZ());
|
||||||
|
transform.rotate(Axis.YP.rotationDegrees(-getYRot()));
|
||||||
|
transform.rotate(Axis.XP.rotationDegrees(getXRot()));
|
||||||
|
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
||||||
|
return transform;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void destroy() {
|
public void destroy() {
|
||||||
Entity attacker = EntityFindUtil.findEntity(this.level(), this.entityData.get(LAST_ATTACKER_UUID));
|
Entity attacker = EntityFindUtil.findEntity(this.level(), this.entityData.get(LAST_ATTACKER_UUID));
|
||||||
|
|
Loading…
Add table
Reference in a new issue