/** {@inheritDoc} */ @Override public void getCoordRange(Vector3f min, Vector3f max) { for (ClientPathNode node : pathNodes) { if (min != null) { min.x = Math.min(min.x, node.getPosition().x); min.y = Math.min(min.y, node.getPosition().y); min.z = Math.min(min.z, node.getPosition().z); } if (max != null) { max.x = Math.max(max.x, node.getPosition().x); max.y = Math.max(max.y, node.getPosition().y); max.z = Math.max(max.z, node.getPosition().z); } } }
/** * Set the IndexedPathNode position. * * @param index The index of the PathNode for which to set the position. * @param x The new X position of the PathNode. * @param y The new Y position of the PathNode. * @param z The new Z position of the PathNode. * @throws IndexOutOfBoundsException If the specified index of the PathNode to be updated was * outside the valid range. */ @Override public void setNodePosition(int index, float x, float y, float z) throws IndexOutOfBoundsException { synchronized (pathNodes) { if (index >= 0 && index < pathNodes.size()) { ClientPathNode node = pathNodes.get(index); node.getPosition().set(x, y, z); // Not working properly yet // parent.updateNodeUI(index, true); // Update the whole path as a temporary measure. parent.updatePathUI(); } else { throw new IndexOutOfBoundsException( "The index of the PathNode to have its position updated was outside the valid range!"); } } }