平滑标枪的瞄准动画
This commit is contained in:
parent
c6e6bd76a9
commit
d95552900e
2 changed files with 14 additions and 26 deletions
|
@ -43,16 +43,14 @@ public class JavelinItemModel extends GeoModel<JavelinItem> {
|
||||||
double p = player.getPersistentData().getDouble("zoom_pos");
|
double p = player.getPersistentData().getDouble("zoom_pos");
|
||||||
double zp = player.getPersistentData().getDouble("zoom_pos_z");
|
double zp = player.getPersistentData().getDouble("zoom_pos_z");
|
||||||
|
|
||||||
|
gun.setPosX(1.66f * (float) p + (float) (0.2f * zp));
|
||||||
|
gun.setPosY(5.5f * (float) p + (float) (0.8f * zp));
|
||||||
gun.setPosX(1.62f * (float) p);
|
gun.setPosZ(15.9f * (float) p);
|
||||||
gun.setPosY(6.3f * (float) p - (float) (0.2f * zp));
|
gun.setScaleZ(1f - (0.8f * (float) p));
|
||||||
gun.setPosZ(22.95f * (float) p + (float) (0.3f * zp));
|
|
||||||
gun.setScaleZ(1f - (0.77f * (float) p));
|
|
||||||
gun.setRotZ(-4.75f * Mth.DEG_TO_RAD * (float) p + (float) (0.02f * zp));
|
gun.setRotZ(-4.75f * Mth.DEG_TO_RAD * (float) p + (float) (0.02f * zp));
|
||||||
|
|
||||||
javelin.setHidden(gun.getPosX() > 1.55);
|
javelin.setHidden(gun.getPosZ() > 15.85);
|
||||||
stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 1.55));
|
stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosZ() > 15.85));
|
||||||
|
|
||||||
double fp = player.getPersistentData().getDouble("fire_pos");
|
double fp = player.getPersistentData().getDouble("fire_pos");
|
||||||
double fr = player.getPersistentData().getDouble("fire_rot");
|
double fr = player.getPersistentData().getDouble("fire_rot");
|
||||||
|
@ -111,22 +109,6 @@ public class JavelinItemModel extends GeoModel<JavelinItem> {
|
||||||
move.setRotZ(2.7f * (float) m + Mth.DEG_TO_RAD * (float) zRot);
|
move.setRotZ(2.7f * (float) m + Mth.DEG_TO_RAD * (float) zRot);
|
||||||
|
|
||||||
CoreGeoBone camera = getAnimationProcessor().getBone("camera");
|
CoreGeoBone camera = getAnimationProcessor().getBone("camera");
|
||||||
CoreGeoBone main = getAnimationProcessor().getBone("0");
|
|
||||||
var data = player.getPersistentData();
|
|
||||||
float numR = (float) (1 - 0.98 * data.getDouble("zoom_time"));
|
|
||||||
float numP = (float) (1 - 0.97 * data.getDouble("zoom_time"));
|
|
||||||
|
|
||||||
if (stack.getOrCreateTag().getInt("gun_reloading_time") > 0) {
|
|
||||||
main.setRotX(numR * main.getRotX());
|
|
||||||
main.setRotY(numR * main.getRotY());
|
|
||||||
main.setRotZ(numR * main.getRotZ());
|
|
||||||
main.setPosX(numP * main.getPosX());
|
|
||||||
main.setPosY(numP * main.getPosY());
|
|
||||||
main.setPosZ(numP * main.getPosZ());
|
|
||||||
camera.setRotX(numR * camera.getRotX());
|
|
||||||
camera.setRotY(numR * camera.getRotY());
|
|
||||||
camera.setRotZ(numR * camera.getRotZ());
|
|
||||||
}
|
|
||||||
|
|
||||||
player.getPersistentData().putDouble("camera_rot_x", Mth.RAD_TO_DEG * camera.getRotX());
|
player.getPersistentData().putDouble("camera_rot_x", Mth.RAD_TO_DEG * camera.getRotX());
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,8 @@ import net.minecraftforge.fml.common.Mod;
|
||||||
@Mod.EventBusSubscriber(value = Dist.CLIENT)
|
@Mod.EventBusSubscriber(value = Dist.CLIENT)
|
||||||
public class JavelinHudOverlay {
|
public class JavelinHudOverlay {
|
||||||
|
|
||||||
|
private static float scopeScale = 1;
|
||||||
|
|
||||||
@SubscribeEvent(priority = EventPriority.LOWEST)
|
@SubscribeEvent(priority = EventPriority.LOWEST)
|
||||||
public static void eventHandler(RenderGuiEvent.Pre event) {
|
public static void eventHandler(RenderGuiEvent.Pre event) {
|
||||||
int w = event.getWindow().getGuiScaledWidth();
|
int w = event.getWindow().getGuiScaledWidth();
|
||||||
|
@ -28,15 +30,17 @@ public class JavelinHudOverlay {
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
ItemStack stack = player.getMainHandItem();
|
ItemStack stack = player.getMainHandItem();
|
||||||
|
|
||||||
if ((stack.getItem() == ModItems.JAVELIN.get() && !stack.getOrCreateTag().getBoolean("HoloHidden"))) {
|
if ((stack.getItem() == ModItems.JAVELIN.get() && !stack.getOrCreateTag().getBoolean("HoloHidden")) && Minecraft.getInstance().options.getCameraType().isFirstPerson()) {
|
||||||
RenderSystem.disableDepthTest();
|
RenderSystem.disableDepthTest();
|
||||||
RenderSystem.depthMask(false);
|
RenderSystem.depthMask(false);
|
||||||
RenderSystem.enableBlend();
|
RenderSystem.enableBlend();
|
||||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||||
RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
|
RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
|
||||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||||
|
float deltaFrame = Minecraft.getInstance().getDeltaFrameTime();
|
||||||
|
scopeScale = Mth.lerp(0.5F * deltaFrame, scopeScale, 1.35F);
|
||||||
float f = (float)Math.min(w, h);
|
float f = (float)Math.min(w, h);
|
||||||
float f1 = Math.min((float)w / f, (float)h / f) * 1.35f;
|
float f1 = Math.min((float)w / f, (float)h / f) * scopeScale;
|
||||||
int i = Mth.floor(f * f1);
|
int i = Mth.floor(f * f1);
|
||||||
int j = Mth.floor(f * f1);
|
int j = Mth.floor(f * f1);
|
||||||
int k = (w - i) / 2;
|
int k = (w - i) / 2;
|
||||||
|
@ -56,6 +60,8 @@ public class JavelinHudOverlay {
|
||||||
RenderSystem.enableDepthTest();
|
RenderSystem.enableDepthTest();
|
||||||
RenderSystem.disableBlend();
|
RenderSystem.disableBlend();
|
||||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||||
|
} else {
|
||||||
|
scopeScale = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue