.

Статус
Закрыто для дальнейших ответов.
По идее, единственное что там похоже с тем что мне надо - это вот это.
Код:
public class Vector {
   public float x;
   public float y;
  
   public Vector() {
      x = 0.0f;
      y = 0.0f;
   }
       
        // returns the (squared) distance between this Vector and another
   public float distSQ(final Vector vec) {
      float distX = x - vec.x;
      float distY = y - vec.y;
     
      return distX * distX + distY * distY;
   }
Хотя мне чего-то не верится что это именно то...
Я думал у кого-то есть ченить вырезанное из WG :D
Там же как-то проверяется при привате, есть ли регионы в нем..
 
Пользуйся поиском.
 
Ну можно сделать мега костыль. Получать все блоки в регионе и сравнивать с блоками с другим регионом.
 
Ну можно сделать мега костыль. Получать все блоки в регионе и сравнивать с блоками с другим регионом.
Вот я про такое тоже подумал, но если регион будет например мильйон блоков? Это же хана серверу..
Пользуйся поиском.
Пользовался. Поисковал чето типо такого: Bukkit check is region cross with other region
Ничего годного...
 
Вот я про такое тоже подумал, но если регион будет например мильйон блоков? Это же хана серверу..

Пользовался. Поисковал чето типо такого: Bukkit check is region cross with other region
Ничего годного...
Гуглить не умеешь.
Ну можно сделать мега костыль. Получать все блоки в регионе и сравнивать с блоками с другим регионом.
Поехавший.
Тут всё написано:
http://www.java-gaming.org/index.php?topic=27326.0
 
По идее, единственное что там похоже с тем что мне надо - это вот это.
Код:
public class Vector {
   public float x;
   public float y;
 
   public Vector() {
      x = 0.0f;
      y = 0.0f;
   }
      
        // returns the (squared) distance between this Vector and another
   public float distSQ(final Vector vec) {
      float distX = x - vec.x;
      float distY = y - vec.y;
    
      return distX * distX + distY * distY;
   }
Хотя мне чего-то не верится что это именно то...
Я думал у кого-то есть ченить вырезанное из WG :D
Там же как-то проверяется при привате, есть ли регионы в нем..
Хотя не, не то, это расстояние между локациями можно вычеслить..
 
Хотя не, не то, это расстояние между локациями можно вычеслить..
Java:
public static boolean testAABBAABB(final AABB box1, final AABB box2) {
   if (Math.abs(box1.center.x - box2.center.x) > (box1.r[0] + box2.r[0])) return false;
   if (Math.abs(box1.center.y - box2.center.y) > (box1.r[1] + box2.r[1])) return false;
   if (Math.abs(box1.center.z - box2.center.z) > (box1.r[2] + box2.r[2])) return false;
   return true;
}

Java:
public class AABB {
   public Vector center;
   public float r[];
  
   public AABB(final float width, final float height) {
      center = new Vector();
      r = new float[2];
      r[0] = width * 0.5f;
      r[1] = height * 0.5f;
   }
  
   public void update(final Vector position) {
      center.x = position.x;
      center.y = position.y;
   }
}

Java:
public class Vector {
   public float x;
   public float y;
  
   public Vector() {
      x = 0.0f;
      y = 0.0f;
   }
       
        // returns the (squared) distance between this Vector and another
   public float distSQ(final Vector vec) {
      float distX = x - vec.x;
      float distY = y - vec.y;
     
      return distX * distX + distY * distY;
   }
}

Не забудь добавить Z везде.
 
Java:
public static boolean testAABBAABB(final AABB box1, final AABB box2) {
   if (Math.abs(box1.center.x - box2.center.x) > (box1.r[0] + box2.r[0])) return false;
   if (Math.abs(box1.center.y - box2.center.y) > (box1.r[1] + box2.r[1])) return false;
   if (Math.abs(box1.center.z - box2.center.z) > (box1.r[2] + box2.r[2])) return false;
   return true;
}

Java:
public class AABB {
   public Vector center;
   public float r[];

   public AABB(final float width, final float height) {
      center = new Vector();
      r = new float[2];
      r[0] = width * 0.5f;
      r[1] = height * 0.5f;
   }

   public void update(final Vector position) {
      center.x = position.x;
      center.y = position.y;
   }
}

Java:
public class Vector {
   public float x;
   public float y;

   public Vector() {
      x = 0.0f;
      y = 0.0f;
   }
     
        // returns the (squared) distance between this Vector and another
   public float distSQ(final Vector vec) {
      float distX = x - vec.x;
      float distY = y - vec.y;
   
      return distX * distX + distY * distY;
   }
}

Не забудь добавить Z везде.
Vector полагаю можно не делать? Ведь это тот-же Location только без z..
А еще чувствую очень прикольно будет создавать этот самый AABB..
Находить центр (а если например там четное количество? Там же центра нет..), потом расстояние во все стороны (в сторону и вверх/вниз (width/height))..
Не очень то круто..
Я надеялся что есть что-то именно для четырех локаций..
 
Ну я все правильно добавил?

Java:
public class AABB {
    public Vector center;
    public float r[];
   
    public AABB(final float width, final float height) {
    center = new Vector();
    r = new float[2];
    r[0] = width  * 0.5f;
    r[1] = height * 0.5f;
    r[2] = height * 0.5f;
    }

    public void update(final Vector position) {
        center.x = position.x;
        center.y = position.y;
        center.z = position.z;
    }
}

Java:
package Exemple;
public class Vector {
    public float x;
    public float y;
    public float z;

    public Vector() {
        x = 0.0f;
        y = 0.0f;
        z = 0.0f;
    }

    public float distSQ(final Vector vec) {
        float distX = x - vec.x;
        float distY = y - vec.y;
        float distZ = z - vec.z;
        return distX * distX + distY * distY + distZ * distZ;
    }
}

Java:
    public static boolean testAABBAABB(final AABB box1, final AABB box2) {
        if (Math.abs(box1.center.x - box2.center.x) > (box1.r[0] + box2.r[0])) return false;
        if (Math.abs(box1.center.y - box2.center.y) > (box1.r[1] + box2.r[1])) return false;
        if (Math.abs(box1.center.z - box2.center.z) > (box1.r[2] + box2.r[2])) return false;
        return true;
    }
Java:
    public AABB(final float width, final float height, final float depth) {
    center = new Vector();
    r = new float[3];
    r[0] = width  * 0.5f;
    r[1] = height * 0.5f;
    r[2] = depth* 0.5f;
    }
 
Сяпки.
А последний этап? 2 региона то как проверяется? Здесь только мин макс одного региона.
Java:
public static boolean testAABBAABB(final AABB box1, final AABB box2) {
   if (Math.abs(box1.center.x - box2.center.x) > (box1.r[0] + box2.r[0])) return false;
   if (Math.abs(box1.center.y - box2.center.y) > (box1.r[1] + box2.r[1])) return false;
   if (Math.abs(box1.center.z - box2.center.z) > (box1.r[2] + box2.r[2])) return false;
   return true;
}
 
А как Location преоброзовать в AABB то?..
Но я конечно до сих пор надеюсь на более легкий способ..
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх