예제 #1
0
  private PathEntity a(
      Entity entity, PathPoint pathpoint, PathPoint pathpoint1, PathPoint pathpoint2, float f) {
    pathpoint.e = 0.0F;
    pathpoint.f = pathpoint.b(pathpoint1);
    pathpoint.g = pathpoint.f;
    this.b.a();
    this.b.a(pathpoint);
    PathPoint pathpoint3 = pathpoint;

    while (!this.b.e()) {
      PathPoint pathpoint4 = this.b.c();

      if (pathpoint4.equals(pathpoint1)) {
        return this.a(pathpoint, pathpoint1);
      }

      if (pathpoint4.b(pathpoint1) < pathpoint3.b(pathpoint1)) {
        pathpoint3 = pathpoint4;
      }

      pathpoint4.i = true;
      int i = this.b(entity, pathpoint4, pathpoint2, pathpoint1, f);

      for (int j = 0; j < i; ++j) {
        PathPoint pathpoint5 = this.d[j];
        float f1 = pathpoint4.e + pathpoint4.b(pathpoint5);

        if (!pathpoint5.a() || f1 < pathpoint5.e) {
          pathpoint5.h = pathpoint4;
          pathpoint5.e = f1;
          pathpoint5.f = pathpoint5.b(pathpoint1);
          if (pathpoint5.a()) {
            this.b.a(pathpoint5, pathpoint5.e + pathpoint5.f);
          } else {
            pathpoint5.g = pathpoint5.e + pathpoint5.f;
            this.b.a(pathpoint5);
          }
        }
      }
    }

    if (pathpoint3 == pathpoint) {
      return null;
    } else {
      return this.a(pathpoint, pathpoint3);
    }
  }