/** * @param viewParams * @return the list of objects this manager manages. */ public Set<T> getObjects( ViewParams viewParams ) { return root.getObjects( viewParams ); }
@Override public boolean isEmpty() { return root.getObjects().isEmpty(); }
@Override public <U> U[] toArray( U[] a ) { return root.getObjects().toArray( a ); }
@Override public Object[] toArray() { return root.getObjects().toArray(); }
@Override public Iterator<T> iterator() { return root.getObjects().iterator(); }
/** * @param viewParams * to get the objects for. * @return the objects which intersect with the given view parameters and or it's children, or the empty list. */ public Set<T> getObjects( ViewParams viewParams ) { Set<T> result = new HashSet<T>(); Point3d e = viewParams.getViewFrustum().getEyePos(); float[] eye = new float[] { (float) e.x, (float) e.y, (float) e.z }; getObjects( viewParams, eye, result ); return result; }
/** * (Re) set the valid domain of this renderer. Be careful, this will create a new quad tree. * * @param newDomain * of this manager */ public void setValidDomain( Envelope newDomain ) { this.validDomain = newDomain; QTModelScene<T> scene = new QTModelScene<T>( this.validDomain, numberOfObjectsInLeaf, root.getMaxPixelError() ); List<T> objects = root.getObjects(); if ( objects != null && !objects.isEmpty() ) { for ( T obj : objects ) { if ( obj != null ) { objects.add( obj ); } } } root = scene; }
/** * @param object * @return true if this tree contains the given object */ public boolean contains( PositionableModel object ) { if ( object != null && intersects( envelope, object.getModelBBox(), getMaxOffset() ) ) { List<T> r = getObjects( object.getModelBBox() ); if ( r != null && !r.isEmpty() ) { return r.contains( object ); } } return false; }
for ( QTree<T> n : children ) { if ( n != null ) { ( (QTModelScene<T>) n ).getObjects( viewParams, eye, result );