Index: GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/foliage.cpp
===================================================================
--- GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/foliage.cpp	(revision 1019)
+++ GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/foliage.cpp	(revision 1057)
@@ -33,9 +33,9 @@
 
 
-	Acth  = new Activas[nHojas*8];
+	Acth  = new ActiveLeafNode[nHojas*8];
 
 	for ( h=0; h < nHojas; h++) {
 
-		Acth[h].indice = h;
+		Acth[h].index = h;
 		if ( h != 0)
 		{
@@ -273,7 +273,7 @@
 
 	i = 0;
-	while ( MinDet[i].indice != -1)
-	{
-		j = MinDet[i].indice;
+	while ( MinDet[i].index != -1)
+	{
+		j = MinDet[i].index;
 		if (LeafinFrustum ( j, frustum) == true) {
 		//	printf("dentro %i y el padre es %i\n", j, MiArbol->Hojas[MiArbol->MinDet[i].indice].parent);
@@ -333,230 +333,9 @@
 //---------------------------------------------------------------------------------------------------------
 
-bool Foliage::EsActivo (  int num)
+bool Foliage::IsActive (int num) const
 {
 	return ( (Acth[num].prev != -1) || (Acth[num].next != -1));
 }
 
-
-
-
-//-------
-// si está delante devolverá 1. Si está detrás -1
-//------------
-
-int Foliage::DondeEsta (  float x, float y, float z, float rva, float rvb,float rvc, float rvd)
-{
-	// el plano sería pa x + pb y + pc z + pd = 0
-	float donde;
-	int   esta;
-
-	donde = (rva * x) + (rvb * y) + (rvc * z) + rvd;
-	
-	if ( donde <0) esta = -1;  //delante
-	 else if ( donde > 0) esta =1; //detrás
-			else esta = 0;
-
-			return esta;
-
-}
-
-
-
-//----------------------------
-// EXPLICACION DE LOS PARAMETROS::
-// ch --> criterio a aplicar:
-//			si es p --> plano
-//			si es d --> plano y esfera
-//			si es e --> esfera
-//DEVUELVE true cuando está en la zona de interes y debe estar a maximo detalle
-//----------------------------
-
-
-bool Foliage::Criterio ( Leaf &aLeaf,  char ch, float rva, float rvb,float rvc, float rvd, float radio)
-{
-	float a,b,c; // coordenadas del primero de los vertices en la hoja
-	float d,e,f; // coords vertice 2
-	float g,h,i; // coords vertice 3
-	float j,k,l; // coords vertice 4
-	float dist;
-	bool inter=false, inter2=false;
-	float ccx, ccy, ccz;
-
-	vertexdata->GetVertexCoord(aLeaf.vertsLeaf[0],a,b,c);
-
-	ccx = cx;
-	ccy = cy;
-	ccz = cz;
-
-	if ( (ch == 'p') || (ch == 'd'))
-	{
-	//plano siempre 
-	if (DondeEsta (a,b,c, rva,rvb,rvc,rvd) == 1)
-	{
-//		MiArbol->Vertices[aHoja.vertsLeaf[1]].GetCoordinates (d,e,f);
-		vertexdata->GetVertexCoord(aLeaf.vertsLeaf[1],d,e,f);
-		if (DondeEsta (d,e,f, rva,rvb,rvc,rvd) == 1)
-		{
-//			MiArbol->Vertices[aHoja.vertsLeaf[2]].GetCoordinates (g,h,i);
-			vertexdata->GetVertexCoord(aLeaf.vertsLeaf[2],g,h,i);
-			if (DondeEsta (g,h,i, rva,rvb,rvc,rvd) == 1)
-			{
-//				Vertices[aHoja.vertsLeaf[3]].GetCoordinates (j,k,l);
-				vertexdata->GetVertexCoord(aLeaf.vertsLeaf[3],j,k,l);
-				if (DondeEsta (j,k,l, rva,rvb,rvc,rvd) == 1) inter = true;
-			}
-		}
-
-	}
-	
-
-	}
-	
-		
-	if (( ch == 'e') || (( ch == 'd') && (inter == true))) //CRITERIO DE LA ESFERA
-	{
-	
-	dist =(float)sqrt ((a-ccx)*(a-ccx)+ (b-ccy)*(b-ccy)+ (c-ccz)*(c-ccz));
-	if (dist >  radio)
-
-	{
-//		MiArbol->Vertices[aHoja.vertsLeaf[1]].GetCoordinates (a,b,c);
-		vertexdata->GetVertexCoord(aLeaf.vertsLeaf[1],a,b,c);
-		dist =(float)sqrt ((a-ccx)*(a-ccx)+ (b-ccy)*(b-ccy)+ (c-ccz)*(c-ccz));
-
-		if (dist >  radio)
-		{
-//			MiArbol->Vertices[aHoja.vertsLeaf[2]].GetCoordinates (a,b,c);
-			vertexdata->GetVertexCoord(aLeaf.vertsLeaf[2],a,b,c);
-			dist =(float)sqrt ((a-ccx)*(a-ccx)+ (b-ccy)*(b-ccy)+ (c-ccz)*(c-ccz));
-
-			if (dist >  radio)
-			{
-//				MiArbol->Vertices[aHoja.vertsLeaf[3]].GetCoordinates (a,b,c);
-				vertexdata->GetVertexCoord(aLeaf.vertsLeaf[3],a,b,c);
-				dist =(float)sqrt ((a-ccx)*(a-ccx)+ (b-ccy)*(b-ccy)+ (c-ccz)*(c-ccz));
-
-				if (dist >  radio) inter2 = true;
-			}
-		}
-	}
-		inter =  inter2;
-	}
-
-
-	return inter;
-}
-
-
-
-
-
-/******************************************   RESOLUCIÓN VARIABLE **************************************************/
-
-//-----------------------------------------
-//
-//	RECORDAR!!!
-//		NO cumple el criterio ------------>  POCO  DETALLE ( COLAPSAR )
-//		SI cumple el criterio ------------>  MUCHO DETALLE ( SPLITEAR )
-//
-// el ch se le pasa a Criterio y es allí donde se evalua
-//	    e --> esfera
-//      p --> plano
-//      d --> los dos criterios
-//------------------------------------------
-
-int Foliage::ResolucionV (char ch, float rva, float rvb,float rvc, float rvd, float radio)
-{
-	bool lista=false;
-    int i, hpost, spli;
-	float renvol, centroz;
-	
-	i = ppio;
-	spli = -1;
-
-	renvol = rad;
-	centroz = cz;
-//	printf (" el centro en %f y el radio es de %f\n", centroz, renvol);
-
-// fijo el máximo del plano de RV
-
-	if (rvd < centroz -renvol )
-		  rvd = (centroz -renvol );
-	else if (rvd > centroz +renvol )
-		  rvd = (centroz +renvol );
-
-//	printf (" el plano está en %f\n", rvd);
-
-
-	//para que fije el valor máximo del radio
-
-	if  (( ch == 'e') || ( ch == 'd')) 
-	{	if (radio> renvol)	radio = renvol;
-		else if (radio <0)  radio =0.0;
-	}
-
-//	printf (" el radio vale %f\n", radio);
-	
-	//empieza a buscar las hojas activas
-
-	while ( i != -1){
-		
-		hpost = Acth[i].next;
-
-		//COLAPSAR
-
-		if (( Criterio ( Leaves[i], ch, rva,rvb,rvc,rvd, radio )== false) && (Leaves[i].parent != -1)) 
-		{
-			// SI ESTA FUESE LA HOJA IZQUIERDA Y LA DERECHA NO CUMPLE TAMPOCO EL CRITERIO
-			if ((Leaves[Leaves[i].parent].childLeft == i) &&
-				( Criterio (Leaves[Leaves[Leaves[i].parent].childRight] , ch, rva,rvb,rvc,rvd, radio )== false))
-			{	//hay que colapsar
-				if (EsActivo(Leaves[Leaves[i].parent].childRight) == false)
-					lista = Forzar_Colapse (Leaves[Leaves[i].parent].childRight, hpost, ch, rva,rvb,rvc,rvd, radio); // para activarla
-				else lista = true;
-									
-			}
-			else
-			// SI ESTA FUESE LA HOJA DERECHA Y LA IZQUIERDA NO CUMPLE TAMPOCO EL CRITERIO
-			if ((Leaves[Leaves[i].parent].childRight == i) &&
-				( Criterio (Leaves[Leaves[Leaves[i].parent].childLeft] , ch, rva,rvb,rvc,rvd, radio )== false))
-			{//hay que colapsar
-				if (EsActivo(Leaves[Leaves[i].parent].childLeft) == false)
-					 lista = Forzar_Colapse (Leaves[Leaves[i].parent].childLeft, hpost,  ch, rva,rvb,rvc,rvd, radio); // para activarla
-				else  lista = true;
-					
-			}
-			
-			 //estan activas preparadas para subir un nivel en la zona de no detalle.
-			
-			if ( lista == true)
-			{
-				lista = false;
-				
-					ColapsaHoja ( Leaves[i].parent, hpost);
-			}
-					
-		}
-    	i = hpost;
-
-	}
-	
-	//ahora veo lo de splitear
-	i = ppio;
-	spli = -1;
-
-	while ( i != -1){
-		hpost = Acth[i].next;
-		spli = Chequea_Split (i, ch, rva,rvb,rvc,rvd, radio);
-			if ( spli != -1) 
-				{	Forzar_Split ( spli, i, hpost);
-					spli = -1;
-				}
-			i = hpost;
-	}
-
-	return (1);
-		
-}
 
 //--------------------------------------------------------------------------------------------------------------------------------
@@ -605,60 +384,4 @@
 	
 }
-
-
-
-
-//--------------------------------------------------------------------------------------------------
-// Forzar colapse 
-// la hoja que paso en el parametro hoja es la que quiero que se active al final
-//--------------------------------------------------------------------------------------------------
-
-
-bool Foliage::Forzar_Colapse(int hoja,  int &hpost,  char ch, float rva, float rvb,float rvc, float rvd, float radio)
-{
-	
-	int h;
-	lista <int> listah;
-	bool fin;
-
-	fin = false;
-	listah.Inserta (hoja); // Inserta un dato en la lista
-
-	while  (listah.NDatos () != 0) 
-	{
-		
-		h = listah.GetCola ();//coger la cola
-		if (Leaves[h].childLeft != -1) 
-
-		{ if (!EsActivo (Leaves[h].childLeft ))
-			listah.Inserta (Leaves[h].childLeft);
-			
-		  if ( (!EsActivo (Leaves[h].childRight)) )	
-			listah.Inserta (Leaves[h].childRight);
-		
-		  if (EsActivo (Leaves[h].childLeft) && EsActivo (Leaves[h].childRight )) 
-			  if((Criterio ( Leaves[Leaves[h].childLeft] ,ch, rva,rvb,rvc,rvd, radio )== false) &&
-				  (Criterio ( Leaves[Leaves[h].childRight], ch, rva,rvb,rvc,rvd, radio ) == false))
-			{
-		    	ColapsaHoja ( h, hpost);
-				listah.Borra(h);
-			}
-			  else fin = true;
-		}
-		else
-		{  fin = true;
-		   listah.Borra(h);
-		}
-
-		if ( fin == true )
-			while ( listah.NDatos () != 0)
-				listah.BorraCola();
-	
-	}
-
-	return (EsActivo (hoja));
-		
-}
-
 
 //--------------------------------------------------------------------------------------------------------------------------------
@@ -697,35 +420,4 @@
 
 
-//-------------------------------------------------------------------------------------------
-// chequear si tengo que splitear. Devuelve el primero de los nodos que cumple la condicion
-//-------------------------------------------------------------------------------------------
-
-int Foliage::Chequea_Split(int h,  char ch, float rva, float rvb,float rvc, float rvd, float radio)
-{
-	
-	int  nodo;
-	
-
-	nodo = -1;
-
-	if (Leaves[h].childLeft != -1) 
-
-	{  // si el hijo derecho o el izquierdo están en la zona de máximo detalle, haré que estos se activen 	
-		  if ( (Criterio (Leaves[Leaves[h].childLeft],  ch, rva,rvb,rvc,rvd, radio ) == true) ||
-			  (Criterio (Leaves[Leaves[h].childRight], ch, rva,rvb,rvc,rvd, radio ) == true))
-			
-				nodo = Leaves[h].childLeft; 
-			
-			else // si no, bajo un nivel más hasta encontrar algún descendiente que se encuentre en la zona de + detalle
-			{
-				nodo = Chequea_Split (Leaves[h].childLeft,  ch, rva,rvb,rvc,rvd, radio);
-				if ( nodo == -1 ) nodo = Chequea_Split (Leaves[h].childRight, ch, rva,rvb,rvc,rvd, radio);
-			}
-				  
-		}
-		
-	return (nodo);
-		
-}
 
 //-------------------------------------------------------------------------------------------
@@ -824,43 +516,4 @@
 }
 
-//-----------------------------------------
-//
-//	RECORDAR!!!
-//		NO cumple el criterio ------------>  POCO  DETALLE ( COLAPSAR )
-//		SI cumple el criterio ------------>  MUCHO DETALLE ( SPLITEAR )
-//
-// el ch se le pasa a Criterio y es allí donde se evalua
-//------------------------------------------
-
-/*
-void Foliage::RCecol (  int nhojas)
-{
-	int i, hpost;
-
-	i = ppio;
-	
-	while (( i != -1) && (nhojas>0)){
- 		hpost = Acth[i].next;
-
-			if ( MiArbol->Hojas[i].parent != -1) 
-				if ( MiArbol->Hojas[MiArbol->Hojas[i].parent].childLeft == i)
-				{if ( EsActivo (MiArbol->Hojas[MiArbol->Hojas[i].parent].childRight ) )
-				{ 
-					ColapsaHoja ( MiArbol->Hojas[i].parent, hpost);
-					nhojas --; }
-				}
-				else 
-				{if ( EsActivo (MiArbol->Hojas[MiArbol->Hojas[i].parent].childLeft ) )
-				{
-					ColapsaHoja ( MiArbol->Hojas[i].parent, hpost); 
-					nhojas --; }
-				}
-
-
-		i = hpost;
-		
-	}
-}
-*/
 
 void Foliage::RCecol ( int num)
@@ -948,5 +601,5 @@
 		i = h--;
 	
-		while (EsActivo (i) == false) 	
+		while (IsActive(i) == false) 	
 			i--;
 	}
@@ -960,5 +613,5 @@
 	i = h++;
 	
-	while ((EsActivo (i) == false) || (i> TotHojas))
+	while ((IsActive(i) == false) || (i> TotHojas))
 		i++;
 
@@ -1173,5 +826,5 @@
 	cont =-1;
 
-	MinDet  = new Activas[nHojas*2];
+	MinDet  = new ActiveLeafNode[nHojas*2];
 	
 	while (i<TotHojas)
@@ -1185,5 +838,5 @@
 		if ( k == -1){
 			k++;
-			MinDet[k].indice = j;
+			MinDet[k].index = j;
 			cont =k;
 		}
@@ -1195,7 +848,7 @@
 
 			while (( fin == false) && (esta == false))
-			{	if ( MinDet[t].indice == j) esta = true;
+			{	if ( MinDet[t].index == j) esta = true;
 					else t++;
-				if (MinDet[t].indice == -1) fin = true;
+				if (MinDet[t].index == -1) fin = true;
 			}
 
@@ -1203,5 +856,5 @@
 			{
 				cont++;
-				MinDet[cont].indice = j;
+				MinDet[cont].index = j;
 			}
 		}
@@ -1251,8 +904,8 @@
 {
 	nHojas=ar->nHojas;
-	MinDet  = new Activas[nHojas*2];
+	MinDet  = new ActiveLeafNode[nHojas*2];
 //	for (unsigned int i=0; i<nHojas*2; i++)
 //		MinDet[i]=ar->MinDet[i];
-	memcpy(MinDet,ar->MinDet,sizeof(Activas)*nHojas*2);
+	memcpy(MinDet,ar->MinDet,sizeof(ActiveLeafNode)*nHojas*2);
 	TotHojas=ar->TotHojas;
 	cx=ar->cx;
@@ -1292,9 +945,9 @@
 	int h=0;
 
-	Acth  = new Activas[nHojas*8];
+	Acth  = new ActiveLeafNode[nHojas*8];
 
 	for ( h=0; h < nHojas; h++) {
 
-		Acth[h].indice = h;
+		Acth[h].index = h;
 		if ( h != 0)
 		{
Index: GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/foliage.h
===================================================================
--- GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/foliage.h	(revision 1019)
+++ GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/foliage.h	(revision 1057)
@@ -2,6 +2,4 @@
 #define FOLIAGE_H
 
-
-#include "Activas.h"
 #include "GeoSubMesh.h"
 #include "tlista.h"
@@ -10,9 +8,20 @@
 #include "Leaf.h"
 
+class ActiveLeafNode
+{
+	public :
+		// Variable members
+    	int  index;// Array of pointers to vertices
+		int  prev;
+		int  next;
+		
+		ActiveLeafNode (void){ index = prev = next = -1; } // Constructor
+};
+
 class Foliage
 {
 	public :
 
-		Activas  *Acth; // primera hoja activa
+		ActiveLeafNode  *Acth; // first active leaf
 		int ppio, final;
 		int nhactivas;
@@ -26,14 +35,9 @@
 		void Culling (float frustum[6][4]);
 		bool LeafinFrustum ( int i, float frustum[6][4]);
-		
-		// resolucion variable
-		bool EsActivo (  int num);
-		int  DondeEsta (  float x, float y, float z, float rva, float rvb,float rvc, float rvd);
-		bool Criterio ( Leaf &, char ch, float rva, float rvb,float rvc, float rvd, float radio);
+
+		bool IsActive( int num) const;
 		int  ResolucionV ( char c, float rva, float rvb,float rvc, float rvd, float radio);
 		void ColapsaHoja (int, int&);
-		bool Forzar_Colapse (int hoja,  int &hpost,  char ch, float rva, float rvb,float rvc, float rvd, float radio);
 		void SplitHoja (int, int&);
-		int  Chequea_Split(int, char, float rva, float rvb,float rvc, float rvd, float radio);
 		bool Forzar_Split(int, int, int&);
 		int  AnteriorActivo (int h);
@@ -51,5 +55,5 @@
 
 		Leaf   *Leaves;
-		Activas  *MinDet; // primera hoja activa
+		ActiveLeafNode  *MinDet; // primera hoja activa
 		int nHojas;
 		int TotHojas;
Index: GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/activas.h
===================================================================
--- GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/activas.h	(revision 830)
+++ 	(revision )
@@ -1,19 +1,0 @@
-#ifndef ACTIVAS
-#define ACTIVAS
-
-
-class Activas
-{
-	public :
-		// Variable members
-    	int  indice;// Array of pointers to vertices
-		int  prev;
-		int  next;
-		
-	public :
-		// Constructors
-		Activas (void); // Void constructor
-		virtual ~Activas (void); // Destructor
-};
-
-#endif
Index: GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/activas.cpp
===================================================================
--- GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/activas.cpp	(revision 830)
+++ 	(revision )
@@ -1,19 +1,0 @@
-#include "activas.h"
-#include <stdio.h>
-
-
-//---------------------------------------------------------------------------------------------------
-// Constructor de copia sin parámetros
-//---------------------------------------------------------------------------------------------------
-Activas::Activas (void)  
-{
-	indice = prev = next = -1;
-}
-
-
-//--------------------------------------------------------------------------------------------------------------------------------
-// Destructor. We must deallocate the memory allocated for pointers 
-//--------------------------------------------------------------------------------------------------------------------------------
-Activas::~Activas (void)
-{
-}
Index: GTP/trunk/Lib/Geom/shared/GTGeometry/src/GeoLodTreeLibrary.cpp
===================================================================
--- GTP/trunk/Lib/Geom/shared/GTGeometry/src/GeoLodTreeLibrary.cpp	(revision 1056)
+++ GTP/trunk/Lib/Geom/shared/GTGeometry/src/GeoLodTreeLibrary.cpp	(revision 1057)
@@ -213,2 +213,9 @@
 	return foliage->indexdata->GetNumMaxIndices();
 }
+
+
+// changes the lod of the entire object (trunk and leaves)
+uint32 LodTreeLibrary::GoToLod(uint32 lod)
+{
+	return 0;
+}
Index: GTP/trunk/Lib/Geom/shared/GTGeometry/GTGeometry.vcproj
===================================================================
--- GTP/trunk/Lib/Geom/shared/GTGeometry/GTGeometry.vcproj	(revision 1056)
+++ GTP/trunk/Lib/Geom/shared/GTGeometry/GTGeometry.vcproj	(revision 1057)
@@ -257,7 +257,4 @@
 				Filter="">
 				<File
-					RelativePath=".\src\libs\leaves\activas.cpp">
-				</File>
-				<File
 					RelativePath=".\src\libs\leaves\foliage.cpp">
 				</File>
@@ -329,7 +326,4 @@
 			Filter="h;hpp;hxx;hm;inl;inc;xsd"
 			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-			<File
-				RelativePath=".\src\libs\leaves\activas.h">
-			</File>
 			<File
 				RelativePath=".\src\libs\AdjModel.cxx">
