//========= Copyright © 1996-2009, Valve Corporation, All rights reserved. ============//
//
// Purpose: used to cross section maps ( i.e. displacements ) to do fast occlusion against
//
// $NoKeywords: $
//=====================================================================================//

#ifndef FOW_HORIZONTALSLICE_H
#define FOW_HORIZONTALSLICE_H
#if defined( COMPILER_MSVC )
#pragma once
#endif

#include "utlvector.h"
#include "utlspheretree.h"
#include "mathlib/vector.h"
#include "fow_lineoccluder.h"

class CFoW;
class CFoW_Viewer;

class CFoW_HorizontalSlice
{
public:
	CFoW_HorizontalSlice( void );

	// clears the sphere tree of all line occluders
	void	Clear( void );
	// adds a line occluder to the sphere tree
	void	AddHorizontalOccluder( CFoW_LineOccluder *pLineOccluder );

	// tests the viewer against all line occluders that are near the viewer
	void	ObstructViewer( CFoW *pFoW, CFoW_Viewer *pViewer );

private:
	CUtlSphereTree m_SphereTree;		// spherical tree to quickly find line occulders near a given point
};

#endif // FOW_HORIZONTALSLICE_H