Class Octree<T>


  • public class Octree<T>
    extends java.lang.Object
    A static Octree implementation. Example of usage:
     Vector3 min = new Vector3(-10, -10, -10);
     Vector3 max = new Vector3(10, 10, 10);
     octree = new Octree(min, max, MAX_DEPTH, MAX_ITEMS_PER_NODE, new Octree.Collider() {
            @Override
            public boolean intersects (BoundingBox nodeBounds, GameObject geometry) {
                    return nodeBounds.intersects(geometry.box);
            }
    
            @Override
            public boolean intersects (Frustum frustum, GameObject geometry) {
                    return frustum.boundsInFrustum(geometry.box);
            }
    
            @Override
            public float intersects (Ray ray, GameObject geometry) {
                    if (Intersector.intersectRayBounds(ray, geometry.box, new Vector3())) {
                            return tmp.dst2(ray.origin);
                    }
                    return Float.MAX_VALUE;
            }
     });
    
     // Adding game objects to the octree
     octree.add(gameObject1);
     octree.add(gameObject2);
    
     // Querying the result
     ObjectSet result = new ObjectSet<>();
     octree.query(cam.frustum, result);
    
     // Rendering the result
     for (GameObject gameObject : result) {
            modelBatch.render(gameObject);
     }
     
    • Method Detail

      • add

        public void add​(T object)
      • remove

        public void remove​(T object)
      • update

        public void update​(T object)
      • getAll

        public ObjectSet<T> getAll​(ObjectSet<T> resultSet)
        Method to retrieve all the geometries.
        Parameters:
        resultSet -
        Returns:
        the result set
      • query

        public ObjectSet<T> query​(BoundingBox aabb,
                                  ObjectSet<T> result)
        Method to query geometries inside nodes that the aabb intersects. Can be used as broad phase.
        Parameters:
        aabb - - The bounding box to query
        result - - Set to be populated with objects inside the BoundingBoxes
      • query

        public ObjectSet<T> query​(Frustum frustum,
                                  ObjectSet<T> result)
        Method to query geometries inside nodes that the frustum intersects. Can be used as broad phase.
        Parameters:
        frustum - - The frustum to query
        result - set populated with objects near from the frustum