翻新ntw20,优化载具瞄准视角,大量lerp仙人
This commit is contained in:
parent
0436765576
commit
51e7aa5fa0
20 changed files with 3786 additions and 7439 deletions
|
@ -19,6 +19,10 @@ import static com.atsuishio.superbwarfare.event.ClientEventHandler.isProne;
|
||||||
|
|
||||||
public class Ntw20Model extends GeoModel<Ntw20Item> {
|
public class Ntw20Model extends GeoModel<Ntw20Item> {
|
||||||
|
|
||||||
|
public static float fireRotY = 0f;
|
||||||
|
public static float fireRotZ = 0f;
|
||||||
|
public static float rotXBipod = 0f;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResourceLocation getAnimationResource(Ntw20Item animatable) {
|
public ResourceLocation getAnimationResource(Ntw20Item animatable) {
|
||||||
return ModUtils.loc("animations/ntw_20.animation.json");
|
return ModUtils.loc("animations/ntw_20.animation.json");
|
||||||
|
@ -37,8 +41,7 @@ public class Ntw20Model extends GeoModel<Ntw20Item> {
|
||||||
@Override
|
@Override
|
||||||
public void setCustomAnimations(Ntw20Item animatable, long instanceId, AnimationState animationState) {
|
public void setCustomAnimations(Ntw20Item animatable, long instanceId, AnimationState animationState) {
|
||||||
CoreGeoBone gun = getAnimationProcessor().getBone("bone");
|
CoreGeoBone gun = getAnimationProcessor().getBone("bone");
|
||||||
CoreGeoBone shen = getAnimationProcessor().getBone("shen");
|
// CoreGeoBone scope = getAnimationProcessor().getBone("scope");
|
||||||
CoreGeoBone scope = getAnimationProcessor().getBone("scope");
|
|
||||||
CoreGeoBone l = getAnimationProcessor().getBone("l");
|
CoreGeoBone l = getAnimationProcessor().getBone("l");
|
||||||
CoreGeoBone r = getAnimationProcessor().getBone("r");
|
CoreGeoBone r = getAnimationProcessor().getBone("r");
|
||||||
CoreGeoBone action = getAnimationProcessor().getBone("action");
|
CoreGeoBone action = getAnimationProcessor().getBone("action");
|
||||||
|
@ -67,24 +70,45 @@ public class Ntw20Model extends GeoModel<Ntw20Item> {
|
||||||
double fp = ClientEventHandler.firePos;
|
double fp = ClientEventHandler.firePos;
|
||||||
double fr = ClientEventHandler.fireRot;
|
double fr = ClientEventHandler.fireRot;
|
||||||
|
|
||||||
|
int type = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE);
|
||||||
|
int stockType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.STOCK);
|
||||||
|
int barrelType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.BARREL);
|
||||||
|
int gripType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP);
|
||||||
|
|
||||||
if (isProne(player)) {
|
if (isProne(player)) {
|
||||||
l.setRotX(-1.5f);
|
l.setRotX(-1.5f);
|
||||||
r.setRotX(-1.5f);
|
r.setRotX(-1.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
shen.setPosX((float) (0.95f * ClientEventHandler.recoilHorizon * fpz * fp));
|
CoreGeoBone shen;
|
||||||
shen.setPosY((float) (0.4f * fp + 0.44f * fr));
|
if (zt < 0.5) {
|
||||||
shen.setPosZ((float) (5.825 * fp + 0.34f * fr + 2.35 * fpz));
|
shen = getAnimationProcessor().getBone("fireRootNormal");
|
||||||
shen.setRotX((float) (0.01f * fp + 0.2f * fr + 0.01f * fpz));
|
} else {
|
||||||
shen.setRotY((float) (0.1f * ClientEventHandler.recoilHorizon * fpz));
|
shen = switch (type) {
|
||||||
shen.setRotZ((float) ((0.08f + 0.1 * fr) * ClientEventHandler.recoilHorizon));
|
case 0 -> getAnimationProcessor().getBone("fireRoot0");
|
||||||
|
case 1 -> getAnimationProcessor().getBone("fireRoot1");
|
||||||
|
case 2 -> getAnimationProcessor().getBone("fireRoot2");
|
||||||
|
case 3 -> getAnimationProcessor().getBone("fireRoot3");
|
||||||
|
default -> getAnimationProcessor().getBone("fireRootNormal");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
fireRotY = (float) Mth.lerp(0.3f * times, fireRotY, 0.6f * ClientEventHandler.recoilHorizon * fpz);
|
||||||
|
fireRotZ = (float) Mth.lerp(2f * times, fireRotZ, (0.4f + 0.5f * fpz) * ClientEventHandler.recoilHorizon);
|
||||||
|
|
||||||
|
shen.setPosX(-0.4f * (float) (ClientEventHandler.recoilHorizon * (0.5 + 0.4 * ClientEventHandler.fireSpread)));
|
||||||
|
shen.setPosY((float) (0.15f * fp + 0.18f * fr));
|
||||||
|
shen.setPosZ((float) (2.935 * fp + 0.23f * fr + 1.325 * fpz));
|
||||||
|
shen.setRotX((float) (0.015f * fp + 0.12f * fr + 0.015f * fpz + 0.15f * (float) ClientEventHandler.actionMove));
|
||||||
|
shen.setRotY(fireRotY);
|
||||||
|
shen.setRotZ(fireRotZ);
|
||||||
|
|
||||||
shen.setPosX((float) (shen.getPosX() * (1 - 0.4 * zt)));
|
shen.setPosX((float) (shen.getPosX() * (1 - 0.4 * zt)));
|
||||||
shen.setPosY((float) (shen.getPosY() * (1 - 0.5 * zt)));
|
shen.setPosY((float) (shen.getPosY() * (-1 + 0.8 * zt)));
|
||||||
shen.setPosZ((float) (shen.getPosZ() * (1 - 0.7 * zt)));
|
shen.setPosZ((float) (shen.getPosZ() * (1 - 0.6 * zt)));
|
||||||
shen.setRotX((float) (shen.getRotX() * (1 - 0.87 * zt)));
|
shen.setRotX((float) (shen.getRotX() * (1 - 0.8 * zt)));
|
||||||
shen.setRotY((float) (shen.getRotY() * (1 - 0.7 * zt)));
|
shen.setRotY((float) (shen.getRotY() * (1 - 0.85 * zt)));
|
||||||
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.65 * zt)));
|
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.4 * zt)));
|
||||||
|
|
||||||
CrossHairOverlay.gunRot = shen.getRotZ();
|
CrossHairOverlay.gunRot = shen.getRotZ();
|
||||||
|
|
||||||
|
@ -93,12 +117,12 @@ public class Ntw20Model extends GeoModel<Ntw20Item> {
|
||||||
gun.setPosZ(10.0f * (float) zp + (float) (0.3f * zpz));
|
gun.setPosZ(10.0f * (float) zp + (float) (0.3f * zpz));
|
||||||
gun.setRotZ((float) (0.02f * zpz));
|
gun.setRotZ((float) (0.02f * zpz));
|
||||||
gun.setScaleZ(1f - (0.8f * (float) zp));
|
gun.setScaleZ(1f - (0.8f * (float) zp));
|
||||||
scope.setScaleZ(1f - (0.85f * (float) zp));
|
// scope.setScaleZ(1f - (0.85f * (float) zp));
|
||||||
|
|
||||||
stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 4.3));
|
stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 4.3));
|
||||||
|
|
||||||
action.setPosZ(6f * (float) ClientEventHandler.actionMove);
|
action.setPosZ(3f * (float) ClientEventHandler.actionMove);
|
||||||
lh.setPosZ(-6f * (float) ClientEventHandler.actionMove);
|
lh.setPosZ(-3f * (float) ClientEventHandler.actionMove);
|
||||||
|
|
||||||
CoreGeoBone root = getAnimationProcessor().getBone("root");
|
CoreGeoBone root = getAnimationProcessor().getBone("root");
|
||||||
root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph));
|
root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph));
|
||||||
|
|
|
@ -154,7 +154,7 @@ public class VehicleHudOverlay {
|
||||||
&& !(player.getVehicle() instanceof SpeedboatEntity)) {
|
&& !(player.getVehicle() instanceof SpeedboatEntity)) {
|
||||||
poseStack.pushPose();
|
poseStack.pushPose();
|
||||||
|
|
||||||
poseStack.translate(Mth.clamp(-8 * ClientEventHandler.turnRot[1], -10, 10), Mth.clamp(-8 * ClientEventHandler.turnRot[0], -10, 10) - 0.3 * ClientEventHandler.shakeTime + 5 * ClientEventHandler.cameraRoll, 0);
|
poseStack.translate(0.2 * ClientEventHandler.shakeTime + 5 * ClientEventHandler.cameraRoll, 0 - 0.3 * ClientEventHandler.shakeTime + 5 * ClientEventHandler.cameraRoll, 0);
|
||||||
poseStack.rotateAround(Axis.ZP.rotationDegrees(-0.5f * ClientEventHandler.cameraRoll), w / 2f, h / 2f, 0);
|
poseStack.rotateAround(Axis.ZP.rotationDegrees(-0.5f * ClientEventHandler.cameraRoll), w / 2f, h / 2f, 0);
|
||||||
RenderSystem.disableDepthTest();
|
RenderSystem.disableDepthTest();
|
||||||
RenderSystem.depthMask(false);
|
RenderSystem.depthMask(false);
|
||||||
|
|
|
@ -3,14 +3,17 @@ package com.atsuishio.superbwarfare.client.renderer.entity;
|
||||||
import com.atsuishio.superbwarfare.client.layer.Bmp2Layer;
|
import com.atsuishio.superbwarfare.client.layer.Bmp2Layer;
|
||||||
import com.atsuishio.superbwarfare.client.model.entity.Bmp2Model;
|
import com.atsuishio.superbwarfare.client.model.entity.Bmp2Model;
|
||||||
import com.atsuishio.superbwarfare.entity.vehicle.Bmp2Entity;
|
import com.atsuishio.superbwarfare.entity.vehicle.Bmp2Entity;
|
||||||
|
import com.atsuishio.superbwarfare.event.ClientEventHandler;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
import com.mojang.math.Axis;
|
import com.mojang.math.Axis;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
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.entity.player.Player;
|
||||||
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;
|
||||||
|
@ -57,6 +60,10 @@ public class Bmp2Renderer extends GeoEntityRenderer<Bmp2Entity> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name.equals("cannon")) {
|
if (name.equals("cannon")) {
|
||||||
|
|
||||||
|
Player player = Minecraft.getInstance().player;
|
||||||
|
bone.setHidden(ClientEventHandler.zoomVehicle && animatable.getFirstPassenger() == player);
|
||||||
|
|
||||||
bone.setRotY(Mth.lerp(partialTick, animatable.turretYRotO, animatable.getTurretYRot()) * Mth.DEG_TO_RAD);
|
bone.setRotY(Mth.lerp(partialTick, animatable.turretYRotO, animatable.getTurretYRot()) * Mth.DEG_TO_RAD);
|
||||||
}
|
}
|
||||||
if (name.equals("barrel")) {
|
if (name.equals("barrel")) {
|
||||||
|
|
|
@ -3,14 +3,17 @@ package com.atsuishio.superbwarfare.client.renderer.entity;
|
||||||
import com.atsuishio.superbwarfare.client.layer.Lav150Layer;
|
import com.atsuishio.superbwarfare.client.layer.Lav150Layer;
|
||||||
import com.atsuishio.superbwarfare.client.model.entity.Lav150Model;
|
import com.atsuishio.superbwarfare.client.model.entity.Lav150Model;
|
||||||
import com.atsuishio.superbwarfare.entity.vehicle.Lav150Entity;
|
import com.atsuishio.superbwarfare.entity.vehicle.Lav150Entity;
|
||||||
|
import com.atsuishio.superbwarfare.event.ClientEventHandler;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
import com.mojang.math.Axis;
|
import com.mojang.math.Axis;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
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.entity.player.Player;
|
||||||
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;
|
||||||
|
@ -62,6 +65,10 @@ public class Lav150Renderer extends GeoEntityRenderer<Lav150Entity> {
|
||||||
bone.setRotX(1.5f * Mth.lerp(partialTick, animatable.leftWheelRotO, animatable.getLeftWheelRot()));
|
bone.setRotX(1.5f * Mth.lerp(partialTick, animatable.leftWheelRotO, animatable.getLeftWheelRot()));
|
||||||
}
|
}
|
||||||
if (name.equals("cannon")) {
|
if (name.equals("cannon")) {
|
||||||
|
|
||||||
|
Player player = Minecraft.getInstance().player;
|
||||||
|
bone.setHidden(ClientEventHandler.zoomVehicle && animatable.getFirstPassenger() == player);
|
||||||
|
|
||||||
bone.setRotY(Mth.lerp(partialTick, animatable.turretYRotO, animatable.getTurretYRot()) * Mth.DEG_TO_RAD);
|
bone.setRotY(Mth.lerp(partialTick, animatable.turretYRotO, animatable.getTurretYRot()) * Mth.DEG_TO_RAD);
|
||||||
}
|
}
|
||||||
if (name.equals("barrel")) {
|
if (name.equals("barrel")) {
|
||||||
|
|
|
@ -3,14 +3,17 @@ package com.atsuishio.superbwarfare.client.renderer.entity;
|
||||||
import com.atsuishio.superbwarfare.client.layer.Yx100GlowLayer;
|
import com.atsuishio.superbwarfare.client.layer.Yx100GlowLayer;
|
||||||
import com.atsuishio.superbwarfare.client.model.entity.Yx100Model;
|
import com.atsuishio.superbwarfare.client.model.entity.Yx100Model;
|
||||||
import com.atsuishio.superbwarfare.entity.vehicle.Yx100Entity;
|
import com.atsuishio.superbwarfare.entity.vehicle.Yx100Entity;
|
||||||
|
import com.atsuishio.superbwarfare.event.ClientEventHandler;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
import com.mojang.math.Axis;
|
import com.mojang.math.Axis;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.MultiBufferSource;
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
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.entity.player.Player;
|
||||||
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;
|
||||||
|
@ -84,6 +87,10 @@ public class Yx100Renderer extends GeoEntityRenderer<Yx100Entity> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name.equals("base")) {
|
if (name.equals("base")) {
|
||||||
|
|
||||||
|
Player player = Minecraft.getInstance().player;
|
||||||
|
bone.setHidden(ClientEventHandler.zoomVehicle && animatable.getFirstPassenger() == player);
|
||||||
|
|
||||||
float a = animatable.getEntityData().get(YAW);
|
float a = animatable.getEntityData().get(YAW);
|
||||||
float r = (Mth.abs(a) - 90f) / 90f;
|
float r = (Mth.abs(a) - 90f) / 90f;
|
||||||
|
|
||||||
|
|
|
@ -124,12 +124,12 @@ public class Ntw20Renderer extends GeoItemRenderer<Ntw20Item> {
|
||||||
VertexConsumer sleeveBuilder = this.currentBuffer.getBuffer(RenderType.entityTranslucent(loc));
|
VertexConsumer sleeveBuilder = this.currentBuffer.getBuffer(RenderType.entityTranslucent(loc));
|
||||||
if (name.equals("Lefthand")) {
|
if (name.equals("Lefthand")) {
|
||||||
stack.translate(-1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
|
stack.translate(-1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
|
||||||
AnimationHelper.renderPartOverBone(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
AnimationHelper.renderPartOverBone2(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
||||||
AnimationHelper.renderPartOverBone(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
AnimationHelper.renderPartOverBone2(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
||||||
} else {
|
} else {
|
||||||
stack.translate(SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
|
stack.translate(SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
|
||||||
AnimationHelper.renderPartOverBone(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
AnimationHelper.renderPartOverBone2(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
||||||
AnimationHelper.renderPartOverBone(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
AnimationHelper.renderPartOverBone2(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.currentBuffer.getBuffer(this.renderType);
|
this.currentBuffer.getBuffer(this.renderType);
|
||||||
|
|
|
@ -412,7 +412,7 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix4f transform = getVehicleTransform();
|
Matrix4f transform = getVehicleTransform(1);
|
||||||
|
|
||||||
float x = 0.6f;
|
float x = 0.6f;
|
||||||
float y = 1.2f - 1.45f;
|
float y = 1.2f - 1.45f;
|
||||||
|
@ -472,12 +472,12 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Matrix4f getVehicleTransform() {
|
public Matrix4f getVehicleTransform(float ticks) {
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate((float) getX(), (float) getY() + 1.45f, (float) getZ());
|
transform.translate((float) Mth.lerp(ticks, xo, getX()), (float) Mth.lerp(ticks, yo + 1.45f, getY() + 1.45f), (float) Mth.lerp(ticks, zo, getZ()));
|
||||||
transform.rotate(Axis.YP.rotationDegrees(-getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(-Mth.lerp(ticks, yRotO, getYRot())));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(getXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(Mth.lerp(ticks, xRotO, getXRot())));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(Mth.lerp(ticks, prevRoll, getRoll())));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -529,7 +529,7 @@ public class Ah6Entity extends ContainerMobileVehicleEntity implements GeoEntity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix4f transform = getVehicleTransform();
|
Matrix4f transform = getVehicleTransform(1);
|
||||||
float x;
|
float x;
|
||||||
float y;
|
float y;
|
||||||
float z;
|
float z;
|
||||||
|
|
|
@ -269,7 +269,7 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix4f transform = getBarrelTransform();
|
Matrix4f transform = getBarrelTransform(1);
|
||||||
if (getWeaponIndex(0) == 0) {
|
if (getWeaponIndex(0) == 0) {
|
||||||
if (this.cannotFire) return;
|
if (this.cannotFire) return;
|
||||||
float x = -0.1125f;
|
float x = -0.1125f;
|
||||||
|
@ -355,7 +355,7 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (getWeaponIndex(0) == 2 && this.getEntityData().get(LOADED_MISSILE) > 0) {
|
} else if (getWeaponIndex(0) == 2 && this.getEntityData().get(LOADED_MISSILE) > 0) {
|
||||||
Matrix4f transformT = getBarrelTransform();
|
Matrix4f transformT = getBarrelTransform(1);
|
||||||
Vector4f worldPosition = transformPosition(transformT, 0, 1, 0);
|
Vector4f worldPosition = transformPosition(transformT, 0, 1, 0);
|
||||||
|
|
||||||
var wgMissileEntity = ((WgMissileWeapon) getWeapon(0)).create(player);
|
var wgMissileEntity = ((WgMissileWeapon) getWeapon(0)).create(player);
|
||||||
|
@ -448,8 +448,8 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix4f transform = getTurretTransform();
|
Matrix4f transform = getTurretTransform(1);
|
||||||
Matrix4f transformV = getVehicleTransform();
|
Matrix4f transformV = getVehicleTransform(1);
|
||||||
|
|
||||||
float x = 0.5f;
|
float x = 0.5f;
|
||||||
float y = 0.1f;
|
float y = 0.1f;
|
||||||
|
@ -472,8 +472,14 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Matrix4f getBarrelTransform() {
|
public Vec3 driverZoomPos(float ticks) {
|
||||||
Matrix4f transformT = getTurretTransform();
|
Matrix4f transform = getTurretTransform(ticks);
|
||||||
|
Vector4f worldPosition = transformPosition(transform, 0, 0, 0.75f);
|
||||||
|
return new Vec3(worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Matrix4f getBarrelTransform(float ticks) {
|
||||||
|
Matrix4f transformT = getTurretTransform(ticks);
|
||||||
float x = 0f;
|
float x = 0f;
|
||||||
float y = 0.5541f;
|
float y = 0.5541f;
|
||||||
float z = 0.83004375f;
|
float z = 0.83004375f;
|
||||||
|
@ -481,14 +487,14 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
|
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
transform.rotate(Axis.YP.rotationDegrees(getTurretYRot() - getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(Mth.lerp(ticks, turretYRotO - yRotO, getTurretYRot() - getYRot())));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(getTurretXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(Mth.lerp(ticks, turretXRotO, getTurretXRot())));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(Mth.lerp(ticks, prevRoll, getRoll())));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Matrix4f getTurretTransform() {
|
public Matrix4f getTurretTransform(float ticks) {
|
||||||
Matrix4f transformT = getVehicleTransform();
|
Matrix4f transformT = getVehicleTransform(ticks);
|
||||||
float x = 0f;
|
float x = 0f;
|
||||||
float y = 2f;
|
float y = 2f;
|
||||||
float z = -0.703125f;
|
float z = -0.703125f;
|
||||||
|
@ -496,9 +502,9 @@ public class Bmp2Entity extends ContainerMobileVehicleEntity implements GeoEntit
|
||||||
|
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
transform.rotate(Axis.YP.rotationDegrees(getTurretYRot() - getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(Mth.lerp(ticks, turretYRotO - yRotO, getTurretYRot() - getYRot())));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(getXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(Mth.lerp(ticks, xRotO, getXRot())));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(Mth.lerp(ticks, prevRoll, getRoll())));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -229,7 +229,7 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix4f transform = getBarrelTransform();
|
Matrix4f transform = getBarrelTransform(1);
|
||||||
if (getWeaponIndex(0) == 0) {
|
if (getWeaponIndex(0) == 0) {
|
||||||
if (this.cannotFire) return;
|
if (this.cannotFire) return;
|
||||||
float x = -0.0234375f;
|
float x = -0.0234375f;
|
||||||
|
@ -385,8 +385,8 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix4f transform = getTurretTransform();
|
Matrix4f transform = getTurretTransform(1);
|
||||||
Matrix4f transformV = getVehicleTransform();
|
Matrix4f transformV = getVehicleTransform(1);
|
||||||
|
|
||||||
float x = 0.36f;
|
float x = 0.36f;
|
||||||
float y = -0.3f;
|
float y = -0.3f;
|
||||||
|
@ -409,8 +409,14 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt
|
||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Matrix4f getBarrelTransform() {
|
public Vec3 driverZoomPos(float ticks) {
|
||||||
Matrix4f transformT = getTurretTransform();
|
Matrix4f transform = getTurretTransform(ticks);
|
||||||
|
Vector4f worldPosition = transformPosition(transform, 0, 0, 0.56f);
|
||||||
|
return new Vec3(worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Matrix4f getBarrelTransform(float ticks) {
|
||||||
|
Matrix4f transformT = getTurretTransform(ticks);
|
||||||
float x = 0f;
|
float x = 0f;
|
||||||
float y = 0.33795f;
|
float y = 0.33795f;
|
||||||
float z = 0.825f;
|
float z = 0.825f;
|
||||||
|
@ -418,18 +424,18 @@ public class Lav150Entity extends ContainerMobileVehicleEntity implements GeoEnt
|
||||||
|
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
transform.rotate(Axis.YP.rotationDegrees(getTurretYRot() - getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(Mth.lerp(ticks, turretYRotO - yRotO, getTurretYRot() - getYRot())));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(getTurretXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(Mth.lerp(ticks, turretXRotO, getTurretXRot())));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(Mth.lerp(ticks, prevRoll, getRoll())));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Matrix4f getTurretTransform() {
|
public Matrix4f getTurretTransform(float ticks) {
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate((float) getX(), (float) getY() + 2.4f, (float) getZ());
|
transform.translate((float) Mth.lerp(ticks, xo, getX()), (float) Mth.lerp(ticks, yo + 2.4f, getY() + 2.4f), (float) Mth.lerp(ticks, zo, getZ()));
|
||||||
transform.rotate(Axis.YP.rotationDegrees(getTurretYRot() - getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(Mth.lerp(ticks, turretYRotO - yRotO, getTurretYRot() - getYRot())));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(getXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(Mth.lerp(ticks, xRotO, getXRot())));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(Mth.lerp(ticks, prevRoll, getRoll())));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -188,22 +188,23 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
/**
|
/**
|
||||||
* 机枪塔开火
|
* 机枪塔开火
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
public Vec3 shootPos(float ticks) {
|
||||||
|
Matrix4f transform = getBarrelTransform(ticks);
|
||||||
|
Vector4f worldPosition = transformPosition(transform, 0, 0, 0);
|
||||||
|
return new Vec3(worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void vehicleShoot(Player player, int type) {
|
public void vehicleShoot(Player player, int type) {
|
||||||
if (this.cannotFire) return;
|
if (this.cannotFire) return;
|
||||||
Matrix4f transform = getBarrelTransform();
|
|
||||||
|
|
||||||
float x = 0;
|
|
||||||
float y = 0;
|
|
||||||
float z = 0;
|
|
||||||
|
|
||||||
Vector4f worldPosition = transformPosition(transform, x, y, z);
|
|
||||||
|
|
||||||
|
|
||||||
var projectile = ((ProjectileWeapon) getWeapon(0)).create(player);
|
var projectile = ((ProjectileWeapon) getWeapon(0)).create(player);
|
||||||
|
|
||||||
projectile.bypassArmorRate(0.4f);
|
projectile.bypassArmorRate(0.4f);
|
||||||
projectile.setPos(worldPosition.x - 1.1 * this.getDeltaMovement().x, worldPosition.y, worldPosition.z - 1.1 * this.getDeltaMovement().z);
|
projectile.setPos(shootPos(1).x - 1.1 * this.getDeltaMovement().x, shootPos(1).y, shootPos(1).z - 1.1 * this.getDeltaMovement().z);
|
||||||
projectile.shoot(player, getBarrelVector(1).x, getBarrelVector(1).y + 0.005f, getBarrelVector(1).z, 20,
|
projectile.shoot(player, getBarrelVector(1).x, getBarrelVector(1).y + 0.005f, getBarrelVector(1).z, 20,
|
||||||
(float) 0.4);
|
(float) 0.4);
|
||||||
this.level().addFreshEntity(projectile);
|
this.level().addFreshEntity(projectile);
|
||||||
|
@ -305,8 +306,8 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Matrix4f getBarrelTransform() {
|
public Matrix4f getBarrelTransform(float ticks) {
|
||||||
Matrix4f transformT = getTurretTransform();
|
Matrix4f transformT = getTurretTransform(ticks);
|
||||||
float x = 0f;
|
float x = 0f;
|
||||||
float y = 0.5088375f;
|
float y = 0.5088375f;
|
||||||
float z = 0.04173125f;
|
float z = 0.04173125f;
|
||||||
|
@ -314,14 +315,14 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
|
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
transform.rotate(Axis.YP.rotationDegrees(getTurretYRot() - getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(Mth.lerp(ticks, turretYRotO - yRotO, getTurretYRot() - getYRot())));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(getTurretXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(Mth.lerp(ticks, turretXRotO, getTurretXRot())));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(Mth.lerp(ticks, prevRoll, getRoll())));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Matrix4f getTurretTransform() {
|
public Matrix4f getTurretTransform(float ticks) {
|
||||||
Matrix4f transformT = getVehicleTransform();
|
Matrix4f transformT = getVehicleTransform(ticks);
|
||||||
float x = 0f;
|
float x = 0f;
|
||||||
float y = 2.4616625f;
|
float y = 2.4616625f;
|
||||||
float z = -0.565625f;
|
float z = -0.565625f;
|
||||||
|
@ -329,9 +330,9 @@ public class SpeedboatEntity extends ContainerMobileVehicleEntity implements Geo
|
||||||
|
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
transform.rotate(Axis.YP.rotationDegrees(getTurretYRot() - getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(Mth.lerp(ticks, turretYRotO - yRotO, getTurretYRot() - getYRot())));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(getXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(Mth.lerp(ticks, xRotO, getXRot())));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(Mth.lerp(ticks, prevRoll, getRoll())));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -197,7 +197,7 @@ public class Tom6Entity extends MobileVehicleEntity implements GeoEntity {
|
||||||
if (upInputDown && !onGround() && entityData.get(MELON)) {
|
if (upInputDown && !onGround() && entityData.get(MELON)) {
|
||||||
entityData.set(MELON, false);
|
entityData.set(MELON, false);
|
||||||
|
|
||||||
Matrix4f transform = getVehicleTransform();
|
Matrix4f transform = getVehicleTransform(1);
|
||||||
Vector4f worldPosition;
|
Vector4f worldPosition;
|
||||||
worldPosition = transformPosition(transform, 0, -0.2f, 0);
|
worldPosition = transformPosition(transform, 0, -0.2f, 0);
|
||||||
|
|
||||||
|
@ -252,7 +252,7 @@ public class Tom6Entity extends MobileVehicleEntity implements GeoEntity {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix4f transform = getVehicleTransform();
|
Matrix4f transform = getVehicleTransform(1);
|
||||||
|
|
||||||
float x = 0f;
|
float x = 0f;
|
||||||
float y = 0.45f;
|
float y = 0.45f;
|
||||||
|
@ -284,12 +284,12 @@ public class Tom6Entity extends MobileVehicleEntity implements GeoEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Matrix4f getVehicleTransform() {
|
public Matrix4f getVehicleTransform(float ticks) {
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate((float) getX(), (float) getY() + 0.5f, (float) getZ());
|
transform.translate((float) Mth.lerp(ticks, xo, getX()), (float) Mth.lerp(ticks, yo + 0.5f, getY() + 0.5f), (float) Mth.lerp(ticks, zo, getZ()));
|
||||||
transform.rotate(Axis.YP.rotationDegrees(-getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(-Mth.lerp(ticks, yRotO, getYRot())));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(getXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(Mth.lerp(ticks, xRotO, getXRot())));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(Mth.lerp(ticks, prevRoll, getRoll())));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -302,7 +302,7 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix4f transform = getBarrelTransform();
|
Matrix4f transform = getBarrelTransform(1);
|
||||||
Vector4f worldPosition = transformPosition(transform, 0, 0, 0);
|
Vector4f worldPosition = transformPosition(transform, 0, 0, 0);
|
||||||
|
|
||||||
var cannonShell = (CannonShellWeapon) getWeapon(0);
|
var cannonShell = (CannonShellWeapon) getWeapon(0);
|
||||||
|
@ -383,7 +383,7 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
if (type == 1) {
|
if (type == 1) {
|
||||||
if (this.cannotFire) return;
|
if (this.cannotFire) return;
|
||||||
|
|
||||||
Matrix4f transform = getGunTransform();
|
Matrix4f transform = getGunTransform(1);
|
||||||
Vector4f worldPosition = transformPosition(transform, 0, -0.25f, 0);
|
Vector4f worldPosition = transformPosition(transform, 0, -0.25f, 0);
|
||||||
|
|
||||||
var projectile = (ProjectileWeapon) getWeapon(1);
|
var projectile = (ProjectileWeapon) getWeapon(1);
|
||||||
|
@ -506,7 +506,7 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix4f transform = getTurretTransform();
|
Matrix4f transform = getTurretTransform(1);
|
||||||
|
|
||||||
int i = this.getOrderedPassengers().indexOf(passenger);
|
int i = this.getOrderedPassengers().indexOf(passenger);
|
||||||
|
|
||||||
|
@ -521,12 +521,18 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
callback.accept(passenger, worldPosition.x, worldPosition.y, worldPosition.z);
|
callback.accept(passenger, worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Vec3 driverZoomPos(float ticks) {
|
||||||
|
Matrix4f transform = getTurretTransform(ticks);
|
||||||
|
Vector4f worldPosition = transformPosition(transform, 0, 0, 0.6076875f);
|
||||||
|
return new Vec3(worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
|
}
|
||||||
|
|
||||||
public int getMaxPassengers() {
|
public int getMaxPassengers() {
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Matrix4f getBarrelTransform() {
|
public Matrix4f getBarrelTransform(float ticks) {
|
||||||
Matrix4f transformT = getTurretTransform();
|
Matrix4f transformT = getTurretTransform(ticks);
|
||||||
float x = 0f;
|
float x = 0f;
|
||||||
float y = 0.653275f;
|
float y = 0.653275f;
|
||||||
float z = 0.750975f;
|
float z = 0.750975f;
|
||||||
|
@ -534,14 +540,14 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
|
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
transform.rotate(Axis.YP.rotationDegrees(getTurretYRot() - getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(Mth.lerp(ticks, turretYRotO - yRotO, getTurretYRot() - getYRot())));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(getTurretXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(Mth.lerp(ticks, turretXRotO, getTurretXRot())));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(Mth.lerp(ticks, prevRoll, getRoll())));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Matrix4f getGunTransform() {
|
public Matrix4f getGunTransform(float ticks) {
|
||||||
Matrix4f transformT = getTurretTransform();
|
Matrix4f transformT = getTurretTransform(ticks);
|
||||||
float x = -0.87890625f;
|
float x = -0.87890625f;
|
||||||
float y = 2f;
|
float y = 2f;
|
||||||
float z = -0.6640625f;
|
float z = -0.6640625f;
|
||||||
|
@ -555,8 +561,8 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Matrix4f getTurretTransform() {
|
public Matrix4f getTurretTransform(float ticks) {
|
||||||
Matrix4f transformT = getVehicleTransform();
|
Matrix4f transformT = getVehicleTransform(ticks);
|
||||||
float x = 0f;
|
float x = 0f;
|
||||||
float y = 2.1484375f;
|
float y = 2.1484375f;
|
||||||
float z = 0;
|
float z = 0;
|
||||||
|
@ -564,9 +570,9 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
|
||||||
|
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
transform.translate(worldPosition.x, worldPosition.y, worldPosition.z);
|
||||||
transform.rotate(Axis.YP.rotationDegrees(getTurretYRot() - getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(Mth.lerp(ticks, turretYRotO - yRotO, getTurretYRot() - getYRot())));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(getXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(Mth.lerp(ticks, xRotO, getXRot())));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(Mth.lerp(ticks, prevRoll, getRoll())));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -704,12 +704,12 @@ public abstract class VehicleEntity extends Entity {
|
||||||
}
|
}
|
||||||
|
|
||||||
// From Immersive_Aircraft
|
// From Immersive_Aircraft
|
||||||
public Matrix4f getVehicleTransform() {
|
public Matrix4f getVehicleTransform(float ticks) {
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate((float) getX(), (float) getY(), (float) getZ());
|
transform.translate((float) Mth.lerp(ticks, xo, getX()), (float) Mth.lerp(ticks, yo, getY()), (float) Mth.lerp(ticks, zo, getZ()));
|
||||||
transform.rotate(Axis.YP.rotationDegrees(-getYRot()));
|
transform.rotate(Axis.YP.rotationDegrees(-Mth.lerp(ticks, yRotO, getYRot())));
|
||||||
transform.rotate(Axis.XP.rotationDegrees(getXRot()));
|
transform.rotate(Axis.XP.rotationDegrees(Mth.lerp(ticks, xRotO, getXRot())));
|
||||||
transform.rotate(Axis.ZP.rotationDegrees(getRoll()));
|
transform.rotate(Axis.ZP.rotationDegrees(Mth.lerp(ticks, prevRoll, getRoll())));
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -592,7 +592,7 @@ public class ClientEventHandler {
|
||||||
|
|
||||||
public static void gunPartMove(float times) {
|
public static void gunPartMove(float times) {
|
||||||
chamberRot = Mth.lerp(0.07 * times, chamberRot, 0);
|
chamberRot = Mth.lerp(0.07 * times, chamberRot, 0);
|
||||||
actionMove = Mth.lerp(0.2 * times, actionMove, 0);
|
actionMove = Mth.lerp(0.125 * times, actionMove, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handleClientShoot() {
|
public static void handleClientShoot() {
|
||||||
|
|
|
@ -18,7 +18,6 @@ import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.BlockGetter;
|
import net.minecraft.world.level.BlockGetter;
|
||||||
import org.joml.Math;
|
import org.joml.Math;
|
||||||
import org.joml.Matrix4f;
|
import org.joml.Matrix4f;
|
||||||
import org.joml.Vector3d;
|
|
||||||
import org.joml.Vector4f;
|
import org.joml.Vector4f;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
@ -51,7 +50,7 @@ public abstract class CameraMixin {
|
||||||
if (stack.is(ModItems.MONITOR.get()) && stack.getOrCreateTag().getBoolean("Using") && stack.getOrCreateTag().getBoolean("Linked")) {
|
if (stack.is(ModItems.MONITOR.get()) && stack.getOrCreateTag().getBoolean("Using") && stack.getOrCreateTag().getBoolean("Linked")) {
|
||||||
DroneEntity drone = EntityFindUtil.findDrone(player.level(), stack.getOrCreateTag().getString("LinkedDrone"));
|
DroneEntity drone = EntityFindUtil.findDrone(player.level(), stack.getOrCreateTag().getString("LinkedDrone"));
|
||||||
if (drone != null) {
|
if (drone != null) {
|
||||||
Matrix4f transform = superbWarfare$getVehicleTransform(drone, partialTicks);
|
Matrix4f transform = superbWarfare$getDroneTransform(drone, partialTicks);
|
||||||
float x0 = 0f;
|
float x0 = 0f;
|
||||||
float y0 = 0.075f;
|
float y0 = 0.075f;
|
||||||
float z0 = 0.18f;
|
float z0 = 0.18f;
|
||||||
|
@ -66,17 +65,10 @@ public abstract class CameraMixin {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((player.getVehicle() != null && player.getVehicle() instanceof SpeedboatEntity boat && boat.getFirstPassenger() == player) && ClientEventHandler.zoomVehicle) {
|
if ((player.getVehicle() != null && player.getVehicle() instanceof SpeedboatEntity boat && boat.getFirstPassenger() == player) && ClientEventHandler.zoomVehicle) {
|
||||||
float yRot = Mth.lerp(partialTicks, boat.yRotO, boat.getYRot());
|
float yRot = -Mth.lerp(partialTicks, boat.turretYRotO - boat.yRotO, boat.getTurretYRot() - boat.getYRot());
|
||||||
if (yRot < 0) {
|
float xRot = Mth.lerp(partialTicks, boat.turretXRotO - boat.xRotO, boat.getTurretXRot() - boat.getXRot());
|
||||||
yRot += 360;
|
setRotation(yRot, xRot);
|
||||||
}
|
setPosition(boat.shootPos(partialTicks).x - 0.35 * boat.getBarrelVector(partialTicks).x, boat.shootPos(partialTicks).y + 0.35, boat.shootPos(partialTicks).z - 0.35 * boat.getBarrelVector(partialTicks).z);
|
||||||
yRot = yRot + 90 % 360;
|
|
||||||
var CameraPos = new Vector3d(-0.57, 3.3, 0);
|
|
||||||
CameraPos.rotateZ(-Mth.lerp(partialTicks, boat.xRotO, boat.getXRot()) * Mth.DEG_TO_RAD);
|
|
||||||
CameraPos.rotateY(-yRot * Mth.DEG_TO_RAD);
|
|
||||||
|
|
||||||
setRotation(-Mth.lerp(partialTicks, boat.turretYRotO - boat.yRotO, boat.getTurretYRot() - boat.getYRot()), Mth.lerp(partialTicks, boat.turretXRotO - boat.xRotO, boat.getTurretXRot() - boat.getXRot()));
|
|
||||||
setPosition(Mth.lerp(partialTicks, boat.xo + CameraPos.x, boat.getX() + CameraPos.x), Mth.lerp(partialTicks, boat.yo + CameraPos.y, boat.getY() + CameraPos.y), Mth.lerp(partialTicks, boat.zo + CameraPos.z, boat.getZ() + CameraPos.z));
|
|
||||||
info.cancel();
|
info.cancel();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -84,7 +76,11 @@ public abstract class CameraMixin {
|
||||||
if (player.getVehicle() instanceof Lav150Entity lav150 && (Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON || ClientEventHandler.zoomVehicle)) {
|
if (player.getVehicle() instanceof Lav150Entity lav150 && (Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON || ClientEventHandler.zoomVehicle)) {
|
||||||
if (lav150.getFirstPassenger() == player) {
|
if (lav150.getFirstPassenger() == player) {
|
||||||
setRotation(-Mth.lerp(partialTicks, lav150.turretYRotO - lav150.yRotO, lav150.getTurretYRot() - lav150.getYRot()), Mth.lerp(partialTicks, lav150.turretXRotO - lav150.xRotO, lav150.getTurretXRot() - lav150.getXRot()));
|
setRotation(-Mth.lerp(partialTicks, lav150.turretYRotO - lav150.yRotO, lav150.getTurretYRot() - lav150.getYRot()), Mth.lerp(partialTicks, lav150.turretXRotO - lav150.xRotO, lav150.getTurretXRot() - lav150.getXRot()));
|
||||||
setPosition(Mth.lerp(partialTicks, player.xo, player.getX()), Mth.lerp(partialTicks, player.yo + player.getEyeHeight(), player.getEyeY()), Mth.lerp(partialTicks, player.zo, player.getZ()));
|
if (ClientEventHandler.zoomVehicle) {
|
||||||
|
setPosition(lav150.driverZoomPos(partialTicks).x, Mth.lerp(partialTicks, player.yo + player.getEyeHeight(), player.getEyeY()), lav150.driverZoomPos(partialTicks).z);
|
||||||
|
} else {
|
||||||
|
setPosition(Mth.lerp(partialTicks, player.xo, player.getX()), Mth.lerp(partialTicks, player.yo + player.getEyeHeight(), player.getEyeY()), Mth.lerp(partialTicks, player.zo, player.getZ()));
|
||||||
|
}
|
||||||
info.cancel();
|
info.cancel();
|
||||||
} else {
|
} else {
|
||||||
setRotation(Mth.lerp(partialTicks, player.yHeadRotO, player.getYHeadRot()), Mth.lerp(partialTicks, player.xRotO, player.getXRot()));
|
setRotation(Mth.lerp(partialTicks, player.yHeadRotO, player.getYHeadRot()), Mth.lerp(partialTicks, player.xRotO, player.getXRot()));
|
||||||
|
@ -97,7 +93,11 @@ public abstract class CameraMixin {
|
||||||
if (player.getVehicle() instanceof Bmp2Entity bmp2 && (Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON || ClientEventHandler.zoomVehicle)) {
|
if (player.getVehicle() instanceof Bmp2Entity bmp2 && (Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON || ClientEventHandler.zoomVehicle)) {
|
||||||
if (bmp2.getFirstPassenger() == player) {
|
if (bmp2.getFirstPassenger() == player) {
|
||||||
setRotation(-Mth.lerp(partialTicks, bmp2.turretYRotO - bmp2.yRotO, bmp2.getTurretYRot() - bmp2.getYRot()), Mth.lerp(partialTicks, bmp2.turretXRotO - bmp2.xRotO, bmp2.getTurretXRot() - bmp2.getXRot()));
|
setRotation(-Mth.lerp(partialTicks, bmp2.turretYRotO - bmp2.yRotO, bmp2.getTurretYRot() - bmp2.getYRot()), Mth.lerp(partialTicks, bmp2.turretXRotO - bmp2.xRotO, bmp2.getTurretXRot() - bmp2.getXRot()));
|
||||||
setPosition(Mth.lerp(partialTicks, player.xo, player.getX()), Mth.lerp(partialTicks, player.yo + player.getEyeHeight(), player.getEyeY()), Mth.lerp(partialTicks, player.zo, player.getZ()));
|
if (ClientEventHandler.zoomVehicle) {
|
||||||
|
setPosition(bmp2.driverZoomPos(partialTicks).x, Mth.lerp(partialTicks, player.yo + player.getEyeHeight(), player.getEyeY()), bmp2.driverZoomPos(partialTicks).z);
|
||||||
|
} else {
|
||||||
|
setPosition(Mth.lerp(partialTicks, player.xo, player.getX()), Mth.lerp(partialTicks, player.yo + player.getEyeHeight(), player.getEyeY()), Mth.lerp(partialTicks, player.zo, player.getZ()));
|
||||||
|
}
|
||||||
info.cancel();
|
info.cancel();
|
||||||
} else {
|
} else {
|
||||||
setRotation(Mth.lerp(partialTicks, player.yHeadRotO, player.getYHeadRot()), Mth.lerp(partialTicks, player.xRotO, player.getXRot()));
|
setRotation(Mth.lerp(partialTicks, player.yHeadRotO, player.getYHeadRot()), Mth.lerp(partialTicks, player.xRotO, player.getXRot()));
|
||||||
|
@ -110,7 +110,11 @@ public abstract class CameraMixin {
|
||||||
if (player.getVehicle() instanceof Yx100Entity yx100 && (Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON || ClientEventHandler.zoomVehicle)) {
|
if (player.getVehicle() instanceof Yx100Entity yx100 && (Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON || ClientEventHandler.zoomVehicle)) {
|
||||||
if (yx100.getFirstPassenger() == player) {
|
if (yx100.getFirstPassenger() == player) {
|
||||||
setRotation(-Mth.lerp(partialTicks, yx100.turretYRotO - yx100.yRotO, yx100.getTurretYRot() - yx100.getYRot()), Mth.lerp(partialTicks, yx100.turretXRotO - yx100.xRotO, yx100.getTurretXRot() - yx100.getXRot()));
|
setRotation(-Mth.lerp(partialTicks, yx100.turretYRotO - yx100.yRotO, yx100.getTurretYRot() - yx100.getYRot()), Mth.lerp(partialTicks, yx100.turretXRotO - yx100.xRotO, yx100.getTurretXRot() - yx100.getXRot()));
|
||||||
setPosition(Mth.lerp(partialTicks, player.xo, player.getX()), Mth.lerp(partialTicks, player.yo + player.getEyeHeight() + 1.5, player.getEyeY() + 1.5), Mth.lerp(partialTicks, player.zo, player.getZ()));
|
if (ClientEventHandler.zoomVehicle) {
|
||||||
|
setPosition(yx100.driverZoomPos(partialTicks).x, Mth.lerp(partialTicks, player.yo + player.getEyeHeight() + 1.5, player.getEyeY() + 1.5), yx100.driverZoomPos(partialTicks).z);
|
||||||
|
} else {
|
||||||
|
setPosition(Mth.lerp(partialTicks, player.xo, player.getX()), Mth.lerp(partialTicks, player.yo + player.getEyeHeight() + 1.5, player.getEyeY() + 1.5), Mth.lerp(partialTicks, player.zo, player.getZ()));
|
||||||
|
}
|
||||||
info.cancel();
|
info.cancel();
|
||||||
} else if (yx100.getNthEntity(1) == player) {
|
} else if (yx100.getNthEntity(1) == player) {
|
||||||
setRotation(-Mth.lerp(partialTicks, yx100.gunYRotO - yx100.yRotO, yx100.getGunYRot() - yx100.getYRot()), Mth.lerp(partialTicks, yx100.gunXRotO - yx100.xRotO, yx100.getGunXRot() - yx100.getXRot()));
|
setRotation(-Mth.lerp(partialTicks, yx100.gunYRotO - yx100.yRotO, yx100.getGunYRot() - yx100.getYRot()), Mth.lerp(partialTicks, yx100.gunXRotO - yx100.xRotO, yx100.getGunXRot() - yx100.getXRot()));
|
||||||
|
@ -129,7 +133,7 @@ public abstract class CameraMixin {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Unique
|
@Unique
|
||||||
private static Matrix4f superbWarfare$getVehicleTransform(DroneEntity vehicle, float ticks) {
|
private static Matrix4f superbWarfare$getDroneTransform(DroneEntity vehicle, float ticks) {
|
||||||
Matrix4f transform = new Matrix4f();
|
Matrix4f transform = new Matrix4f();
|
||||||
transform.translate((float) Mth.lerp(ticks, vehicle.xo, vehicle.getX()), (float) Mth.lerp(ticks, vehicle.yo, vehicle.getY()), (float) Mth.lerp(ticks, vehicle.zo, vehicle.getZ()));
|
transform.translate((float) Mth.lerp(ticks, vehicle.xo, vehicle.getX()), (float) Mth.lerp(ticks, vehicle.yo, vehicle.getY()), (float) Mth.lerp(ticks, vehicle.zo, vehicle.getZ()));
|
||||||
transform.rotate(Axis.YP.rotationDegrees(-vehicle.getYaw(ticks)));
|
transform.rotate(Axis.YP.rotationDegrees(-vehicle.getYaw(ticks)));
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 29 KiB |
Binary file not shown.
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
Loading…
Add table
Reference in a new issue