#include "GeoTreeSimpSequence.h" #include #include #include "GeoMeshLoader.h" using namespace Geometry; using namespace std; TreeSimplificationSequence::TreeSimplificationSequence() { meshName=""; } TreeSimplificationSequence::~TreeSimplificationSequence() { } void TreeSimplificationSequence::Load(Serializer &s) { // Carga una secuencia de simplificación desde un fichero char buffer[256]; char nombre[256]; Geometry::Index quad; int cont; if (s.ReadData(buffer,256) != NULL) { sscanf(buffer,"%s",&nombre); meshName=new char[strlen(nombre)]; strcpy(meshName,nombre); } while (s.ReadData(buffer,256) != NULL) { Geometry::TreeSimplificationSequence::Step pasosimp; sscanf(buffer,"%u %u %u %u &",&pasosimp.mV0,&pasosimp.mV1,&pasosimp.mT0,&pasosimp.mT1); // Quitar el salto de línea del final. buffer[strlen(buffer)-1]='\0'; char *ptr1; ptr1=strtok(buffer,"&"); ptr1=strtok(NULL,"&"); if (ptr1!=NULL) { char *ptr; ptr=strtok(ptr1," "); cont=0; while(ptr != NULL ) { quad = (Index)atoi(ptr); pasosimp.mNewQuad[cont]=quad; ptr=strtok(NULL," "); cont++; } } mSteps.push_back(pasosimp); } } void TreeSimplificationSequence::Save(Serializer &s) { // Almacena la secuencia de simplificación en un fichero /* char simp[256]; // Nombre del mesh sprintf(simp,"%s\n",meshName); s.WriteData(simp,sizeof(char),strlen(simp)); */ unsigned short chunkid = 0xdcba; s.WriteData(&chunkid,sizeof(unsigned short),1); unsigned long size = mSteps.size()*8*sizeof(int) + CHUNK_OVERHEAD_SIZE; s.WriteData(&size,sizeof(unsigned long),1); int tam = mSteps.size(); s.WriteData(&tam,sizeof(int),1); for(unsigned int i=0; i