private void calculateBodyAngle(float partialTicks) { if (onGround) { bodyAngle = 7; targetBodyAngle = 7; return; } // ignore y as we want no tilt going straight up or down Vec3d motionVec = new Vec3d(motionX, 0, motionZ); double speed = motionVec.lengthVector(); // normalise between 0 - 0.1 speed = Math.min(1, speed * 10); targetBodyAngle = 20 + ((float) speed * 30); if (targetBodyAngle == bodyAngle) { return; } if (targetBodyAngle > bodyAngle) { bodyAngle += (2 * partialTicks); if (bodyAngle > targetBodyAngle) { bodyAngle = targetBodyAngle; } } else { bodyAngle -= (1 * partialTicks); if (bodyAngle < targetBodyAngle) { bodyAngle = targetBodyAngle; } } }
public Ray(Vec3d start, Vec3d end) { this.start = start; this.dir = end.subtract(start); length = this.dir.lengthVector(); this.dir = this.dir.normalize(); this.invDir = new Vec3d(1.0 / this.dir.x, 1.0 / this.dir.y, 1.0 / this.dir.z); }
boolean intersectsAnomaly(Vec3d origin, Vec3d dir, Vec3d anomaly, double radius) { if (origin.distanceTo(anomaly) <= radius) { return true; } else { Vec3d intersectDir = origin.subtract(anomaly); double c = intersectDir.lengthVector(); double v = intersectDir.dotProduct(dir); double d = radius * radius - (c * c - v * v); return d >= 0; } }
public HitCoord getNearestHit() { projectionHelper.updateMatrices(); Vec3d near = getMouseVector(0); Vec3d far = getMouseVector(1); Map<Side, Vec3d> hits = calculateHitPoints(near, far); if (hits.isEmpty()) return null; Side minSide = null; double minDist = Double.MAX_VALUE; // yeah, I know there are two entries max, but... meh for (Map.Entry<Side, Vec3d> e : hits.entrySet()) { double dist = e.getValue().subtract(near).lengthVector(); if (dist < minDist) { minDist = dist; minSide = e.getKey(); } } if (minSide == null) return null; // !? return new HitCoord(minSide, hits.get(minSide)); }
private int getRequiredEnergy(EntityPlayer player, int maxRange) { return (int) (ENERGY_TRANSFER * (1.0D - MathHelper.clamp((new Vec3d(player.posX, player.posY, player.posZ).subtract(new Vec3d(getPos())).lengthVector() / (double) maxRange), 0, 1))); }
@Nullable private RayTraceResult checkCollisions() { final RayTraceResult hit = checkCollision(); if (hit != null) { // For travel distance adjustment, see below. final Vec3d oldPos = getPositionVector(); switch (hit.typeOfHit) { case BLOCK: onBlockCollision(hit); break; case ENTITY: onEntityCollision(hit); break; default: return null; } // Offset to compensate position adjustments. This way the total // distance the packet travels per tick stays constant, even if // it was moved around by a packet handler. final Vec3d newPos = getPositionVector(); final double delta = newPos.subtract(oldPos).lengthVector() / TRAVEL_SPEED; posX -= motionX * delta; posY -= motionY * delta; posZ -= motionZ * delta; } return hit; }
double reachDistance = playerReachVector.lengthVector(); double worldResultDistFromPlayer = 420000000D; if (vanillaTrace != null && vanillaTrace.hitVec != null) {
/** * Checks to see if this enderman should be attacking this player */ public boolean shouldAttackPlayer(EntityPlayer player) { ItemStack itemstack = player.inventory.armorInventory.get(3); // 3: Helmet, 2: Chestpiece, 1: Legs, 0: Boots if (itemstack.getItem() == Item.getItemFromBlock(Blocks.PUMPKIN)) { return false; } else { Vec3d relativePlayerEyePos = new Vec3d(posX - player.posX, getEntityBoundingBox().minY + height / 2.0F - (player.posY + player.getEyeHeight()), posZ - player.posZ); double distance = relativePlayerEyePos.lengthVector(); relativePlayerEyePos = relativePlayerEyePos.normalize(); // NB: inverse of normal enderman, attack when this guy looks at the player instead of the other // way around Vec3d lookVec = getLook(1.0F).normalize(); double dotTangent = -lookVec.dotProduct(relativePlayerEyePos); return dotTangent > 1.0D - 0.025D / distance; } }
if (projectile.gravity == 0.00F) { Vec3d velocity = getVelocityVectorFromYawPitch(this.pitch, this.yaw, 3.0F); projectile.shoot(velocity.x, velocity.y, velocity.z, (float) velocity.lengthVector(), (float) accuracy); } else { projectile.rotationYaw = this.yaw;
public float getAccuracy(ItemStack weapon, EntityLivingBase shooter, boolean zoomed) { float accuracy = getWeaponBaseAccuracy(weapon, zoomed); accuracy = getCustomFloatStat(weapon, CUSTOM_ACCURACY_TAG, accuracy); accuracy += (float) new Vec3d(shooter.motionX, shooter.motionY * 0.1, shooter.motionZ).lengthVector() * 10; accuracy *= shooter.isSneaking() ? 0.6f : 1; accuracy = modifyStatFromModules(WeaponStats.ACCURACY, weapon, accuracy); if (WeaponHelper.hasModule(Reference.MODULE_SIGHTS, weapon)) { ItemStack sights = WeaponHelper.getModuleAtSlot(Reference.MODULE_SIGHTS, weapon); if (!sights.isEmpty() && sights.getItem() instanceof IWeaponScope) { accuracy = ((IWeaponScope) sights.getItem()).getAccuracyModify(sights, weapon, zoomed, accuracy); } } accuracy *= getCustomFloatStat(weapon, CUSTOM_ACCURACY_MULTIPLY_TAG, 1); return accuracy; }
/** * Checks to see if this enderman should be attacking this player */ private boolean shouldAttackPlayer(EntityPlayer player) { ItemStack itemstack = player.inventory.armorInventory.get(0); if (itemstack.getItem() == Item.getItemFromBlock(Blocks.PUMPKIN)) { return false; } else { Vec3d vec3d = player.getLook(1.0F).normalize(); Vec3d vec3d1 = new Vec3d(enderman.posX - player.posX, enderman.getEntityBoundingBox().minY + enderman.getEyeHeight() - (player.posY + player.getEyeHeight()), enderman.posZ - player.posZ); double d0 = vec3d1.lengthVector(); vec3d1 = vec3d1.normalize(); double d1 = vec3d.dotProduct(vec3d1); return d1 > 1.0D - 0.025D / d0 && player.canEntityBeSeen(enderman); } } }
continue; Vec3d dir = entityLivingBase.getPositionVector().subtract(entityPlayer.getPositionVector()); double localDistance = dir.lengthVector(); double distanceMultiply = range / Math.max(1, localDistance); dir = dir.normalize();
/** * Checks to see if this enderman should be attacking this player */ private boolean shouldAttackPlayer(EntityPlayer player) { ItemStack itemstack = player.inventory.armorInventory.get(0); if (itemstack.getItem() == Item.getItemFromBlock(Blocks.PUMPKIN)) { return false; } else { Vec3d vec3d = player.getLook(1.0F).normalize(); Vec3d vec3d1 = new Vec3d(enderman.posX - player.posX, enderman.getEntityBoundingBox().minY + enderman.getEyeHeight() - (player.posY + player.getEyeHeight()), enderman.posZ - player.posZ); double d0 = vec3d1.lengthVector(); vec3d1 = vec3d1.normalize(); double d1 = vec3d.dotProduct(vec3d1); return d1 > 1.0D - 0.025D / d0 && player.canEntityBeSeen(enderman); } } }
@Override public boolean positionCamera(EntityLivingBase active, EntityLivingBase other, float ticks, EntityRendererConversation rendererConversation) { Vec3d centerDir = rendererConversation.getPosition(other, ticks).addVector(0, heightOffset, 0).subtract(rendererConversation.getPosition(active, ticks).addVector(0, heightOffset, 0)); double distance = centerDir.lengthVector() / 2 * this.distance; Vec3d center = rendererConversation.getPosition(active, ticks).addVector(centerDir.x / 2, centerDir.y / 2, centerDir.z / 2); Vec3d centerCross = centerDir.normalize().crossProduct(new Vec3d(0, oppositeSide ? -1 : 1, 0)).normalize(); RayTraceResult hit = MOPhysicsHelper.rayTraceForBlocks(center, active.world, distance, ticks, null, true, true, centerCross); Vec3d pos = center.addVector(centerCross.x * distance, centerCross.y * distance, centerCross.z * distance); if (hit != null) { pos = hit.hitVec; } rendererConversation.setCameraPosition(pos.x, pos.y, pos.z); rendererConversation.rotateCameraYawTo(centerCross, 90); return true; } }
@Override public boolean positionCamera(EntityLivingBase active, EntityLivingBase other, float ticks, EntityRendererConversation rendererConversation) { Vec3d look = rendererConversation.getLook(other, active, ticks); double lookDistance = look.lengthVector(); look = new Vec3d(look.x, 0, look.z); look = look.normalize(); Vec3d left = look.crossProduct(new Vec3d(0, 1, 0)); Vec3d pos = rendererConversation.getPosition(other, ticks).addVector((left.x * sideOffset) / lookDistance, (left.y * sideOffset) / lookDistance, (left.z * sideOffset) / lookDistance); RayTraceResult position = MOPhysicsHelper.rayTrace(pos, other.world, distance, ticks, null, true, false, look, other); if (position != null) { pos = position.hitVec; } else { pos.addVector(look.x * distance, look.y * distance, look.z * distance); } rendererConversation.setCameraPosition(pos); Vec3d rotationLook = pos.subtract(rendererConversation.getPosition(active, ticks)).normalize(); rendererConversation.rotateCameraYawTo(rotationLook, -90); rendererConversation.setCameraPitch(0); return true; } }
@Override public boolean positionCamera(EntityLivingBase active, EntityLivingBase other, float ticks, EntityRendererConversation rendererConversation) { Vec3d look = rendererConversation.getLook(other, active, ticks); double distance = look.lengthVector(); double clammpedDistance = MathHelper.clamp(distance, minZoom, maxZoom); look = new Vec3d(look.x, 0, look.z); look = look.normalize(); Vec3d pos = rendererConversation.getPosition(active, ticks).subtract(0, 0.1, 0).addVector(look.x * clammpedDistance, look.y * clammpedDistance, look.z * clammpedDistance); RayTraceResult movingObjectPosition = MOPhysicsHelper.rayTrace(rendererConversation.getPosition(active, ticks), active.world, maxZoom, ticks, new Vec3d(0, active.getEyeHeight(), 0), true, true, look.normalize(), active); if (movingObjectPosition != null) { pos = movingObjectPosition.hitVec; } Vec3d left = look.crossProduct(new Vec3d(0, 1, 0)); float leftAmount = 0.1f; rendererConversation.setCameraPosition(pos.x + left.x * leftAmount, pos.y + left.y * leftAmount, pos.z + left.z * leftAmount); rendererConversation.rotateCameraYawTo(look.normalize(), 90); rendererConversation.setCameraPitch(10); return true; } }
if (pos.lengthVector() < Math.min(256, (RADIUS + 16 / ZOOM))) {
RenderUtils.disableLightmap(); GlStateManager.blendFunc(GL_ONE, GL_ONE); float distance = (float) new Vec3d(x, y, z).lengthVector();
double distance = from.subtract(to).lengthVector(); double v = -viewer.world.getWorldTime() * 0.2;
float f10 = 0.05625F; float renderSize = plasmaBolt.getRenderSize(); double length = 6 * new Vec3d(plasmaBolt.motionX, plasmaBolt.motionY, plasmaBolt.motionZ).lengthVector() + 10; GlStateManager.enableRescaleNormal(); GlStateManager.disableCull();