// Filename: cullHandler.h
// Created by:  drose (23Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////

#ifndef CULLHANDLER_H
#define CULLHANDLER_H

#include "pandabase.h"
#include "cullableObject.h"
#include "graphicsStateGuardianBase.h"

class CullTraverser;

////////////////////////////////////////////////////////////////////
//       Class : CullHandler
// Description : This defines the abstract interface for an object
//               that receives Geoms identified by the CullTraverser.
//               By itself, it's not a particularly useful class; to
//               use it, derive from it and redefine record_object().
////////////////////////////////////////////////////////////////////
class EXPCL_PANDA_PGRAPH CullHandler {
public:
  CullHandler();
  virtual ~CullHandler();

  virtual void record_object(CullableObject *object, 
                             const CullTraverser *traverser);
  virtual void end_traverse();

  INLINE static void draw(CullableObject *object,
                          GraphicsStateGuardianBase *gsg,
                          bool force, Thread *current_thread);
};

#include "cullHandler.I"

#endif


  
