/*********************************************************************//**
*	Base detail
*	Abstraktni trida definujici vlastnosti detailu
*	
*	author: Michal Jirous
*	date: 10.03.2009
*	file: ent_base_detail.cpp
**********************************************************************/

#include "ent_base_detail.h"
#include "ctrl_var_definition.h"
variable *g_pDetailVar = NULL;

CBaseDetail::CBaseDetail() : CBaseEntity()
{
	m_Alpha = 255;
	if( !g_pDetailVar )
	{
		g_pDetailVar = gamevarsLibrary::getVariable( vardef::DETAIL_DISTANCE_NAME );
	}

}

bool CBaseDetail::renderCullTest( RenderData &renderData )
{
	m_Alpha = 255;

	float distance = Vector(origin - (*renderData.cameraPosition)).absolute();
	float maxdistance = gamevarsLibrary::getfData( g_pDetailVar );
	
	if( maxdistance < distance )
	{
		distance = distance - maxdistance;
		if( distance > 255 )
			return false;	//too far
		m_Alpha = 255 - (GLubyte)distance;
	}


	if( m_Alpha == 255 )
		m_bIsBlending = false;
	else
		m_bIsBlending = true;
	return true;

}
