/* * This file is part of the L2J Mobius project. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package com.l2jmobius.util; import java.io.Serializable; /** * This class ... * @version $Revision: 1.2 $ $Date: 2004/06/27 08:12:59 $ */ public class Point3D implements Serializable { /** * Comment for serialVersionUID */ private static final long serialVersionUID = 4638345252031872576L; public volatile int x, y, z; public Point3D(int pX, int pY, int pZ) { x = pX; y = pY; z = pZ; } public Point3D(int pX, int pY) { x = pX; y = pY; z = 0; } /** * @param worldPosition */ public Point3D(Point3D worldPosition) { synchronized (worldPosition) { x = worldPosition.x; y = worldPosition.y; z = worldPosition.z; } } public synchronized void setTo(Point3D point) { synchronized (point) { x = point.x; y = point.y; z = point.z; } } @Override public String toString() { return "(" + x + ", " + y + ", " + z + ")"; } @Override public int hashCode() { return x ^ y ^ z; } @Override public synchronized boolean equals(Object o) { if (o instanceof Point3D) { final Point3D point3D = (Point3D) o; boolean ret; synchronized (point3D) { ret = (point3D.x == x) && (point3D.y == y) && (point3D.z == z); } return ret; } return false; } public synchronized boolean equals(int pX, int pY, int pZ) { return (x == pX) && (y == pY) && (z == pZ); } public synchronized long distanceSquaredTo(Point3D point) { long dx, dy; synchronized (point) { dx = x - point.x; dy = y - point.y; } return (dx * dx) + (dy * dy); } public static long distanceSquared(Point3D point1, Point3D point2) { long dx, dy; synchronized (point1) { synchronized (point2) { dx = point1.x - point2.x; dy = point1.y - point2.y; } } return (dx * dx) + (dy * dy); } public static boolean distanceLessThan(Point3D point1, Point3D point2, double distance) { return distanceSquared(point1, point2) < (distance * distance); } public int getX() { return x; } public synchronized void setX(int pX) { x = pX; } public int getY() { return y; } public synchronized void setY(int pY) { y = pY; } public int getZ() { return z; } public synchronized void setZ(int pZ) { z = pZ; } public synchronized void setXYZ(int pX, int pY, int pZ) { x = pX; y = pY; z = pZ; } }