47 public Location setRotation(Location location, Location fallbackTarget) {
48 var current = location.clone();
49 Vector2f newRotation =
null;
52 newRotation = computeRotation(current, fallbackTarget);
54 newRotation = computeRotation(current, (Location)
object);
56 var entity = (Entity)
object;
57 newRotation = entity !=
null ? computeRotation(current, entity.getLocation())
58 : computeRotation(current, fallbackTarget);
61 if (newRotation ==
null)
return current;
62 current.setYaw(newRotation.x);
63 current.setPitch(newRotation.y);
70 private Vector2f computeRotation(Location from, Location to) {
71 var dx = to.getX() - from.getX();
72 var dy = to.getY() - from.getY();
73 var dz = to.getZ() - from.getZ();
74 var distanceHorizontal = Math.sqrt(dx * dx + dz * dz);
75 var yaw = (float) Math.toDegrees(Math.atan2(-dx, dz));
76 var pitch = (float) Math.toDegrees(Math.atan2(dy, distanceHorizontal));
77 return new Vector2f(yaw, pitch);