package tc.oc.pgm.points;
import static com.google.common.base.Preconditions.checkNotNull;
import org.bukkit.util.Vector;
import tc.oc.commons.core.inspect.Inspectable;
public class DirectedPitchProvider extends Inspectable.Impl implements AngleProvider {
private final @Inspect Vector target;
public DirectedPitchProvider(Vector target) {
this.target = checkNotNull(target, "target");
}
@Override
public float getAngle(Vector from) {
double dx = this.target.getX() - from.getX();
double dz = this.target.getZ() - from.getZ();
double distance = Math.sqrt(dx * dx + dz * dz);
double dy = this.target.getY() - (from.getY() + 1.62); // add eye height so player actually looks at point
return (float) Math.toDegrees(Math.atan2(-dy, distance));
}
@Override
public boolean isConstant() {
return true;
}
}