
 
        void    Setup(
void )   {};
        void    Cleanup(
void ) {};
        void    InsertObject(
DrawableObject *object );
        void    RemoveObject(
DrawableObject *object );
        void    InsertUpdateCallbacks(
UpdateCallBack*, SortCallBack*, void *self );
        void    RemoveUpdateCallbacks(
UpdateCallBack*, SortCallBack*, void *self );
        void    UpdateMetrics(
Tpoint *pos ); // do update without moving around in lists
        void    UpdateMetrics(
long listNo, Tpoint *pos, TransportStr *transList );
        void    SortForViewpoint(
void );
        void   
ResetTraversal( void )         
{ nextToDraw = head; };
        float  
GetNextDrawDistance( void )     { if (nextToDraw) return
nextToDraw->distance; else return -1.0f; };
       
void    DrawBeyond( float ringDistance, int LOD, RenderOTW
*renderer );
        void    DrawBeyond(
float ringDistance, Render3D *renderer );
        DrawableObject*
GetNearest( void )                     
{ return tail; };
        DrawableObject*
GetNext( void )                        
{ return nextToDraw; };
        DrawableObject*
GetNextAndAdvance( void )       { DrawableObject
*p = nextToDraw; if (nextToDraw) nextToDraw = nextToDraw->next;  return
p; };
       
void InsertionSortLink(DrawableObject **listhead, DrawableObject *listend);
        void QuickSortLink(DrawableObject
**head, DrawableObject *end);
  protected:
        DrawableObject
*head;
        DrawableObject
*tail;
        DrawableObject
*nextToDraw;
        UpdateCallBack 
*updateCBlist;
        SortCallBack   
*sortCBlist;