source: GTP/trunk/Lib/Geom/shared/GTGeometry/src/GeoTreeSimpSequence.cpp @ 1090

Revision 1090, 2.7 KB checked in by gumbau, 18 years ago (diff)

LodTreeLibrary? constructor now has 3 parameters.
The leaves submesh is calculated inside the constructor.

Line 
1#include "GeoTreeSimpSequence.h"
2#include <iostream>
3#include <fstream>
4#include "GeoMeshLoader.h"
5
6using namespace Geometry;
7using namespace std;
8
9TreeSimplificationSequence::TreeSimplificationSequence()
10{
11        meshName="";
12}
13
14TreeSimplificationSequence::~TreeSimplificationSequence()
15{
16}
17
18void TreeSimplificationSequence::Load(Serializer &s)
19{
20        // Carga una secuencia de simplificación desde un fichero
21        char buffer[256];
22        char nombre[256];
23        Geometry::Index quad;
24        int cont;
25
26        if (s.ReadData(buffer,256) != NULL)
27        {
28                sscanf(buffer,"%s",&nombre);
29                meshName=new char[strlen(nombre)];
30                strcpy(meshName,nombre);
31        }
32
33        while (s.ReadData(buffer,256) != NULL)
34        {
35                Geometry::TreeSimplificationSequence::Step pasosimp;
36                sscanf(buffer,"%u %u %u %u &",&pasosimp.mV0,&pasosimp.mV1,&pasosimp.mT0,&pasosimp.mT1);
37                // Quitar el salto de línea del final.
38                buffer[strlen(buffer)-1]='\0';
39
40                char *ptr1;
41                ptr1=strtok(buffer,"&");
42                ptr1=strtok(NULL,"&");
43                if (ptr1!=NULL)
44                {
45                        char *ptr;
46                        ptr=strtok(ptr1," ");
47                        cont=0;
48                        while(ptr != NULL )
49                        {
50                                quad = (Index)atoi(ptr);
51                                pasosimp.mNewQuad[cont]=quad;
52                                ptr=strtok(NULL," ");
53                                cont++;
54                        }
55                }
56                mSteps.push_back(pasosimp);
57        }
58}
59
60void TreeSimplificationSequence::Save(Serializer &s)
61{
62        // Almacena la secuencia de simplificación en un fichero
63/*      char simp[256];
64
65        // Nombre del mesh
66        sprintf(simp,"%s\n",meshName);
67        s.WriteData(simp,sizeof(char),strlen(simp));
68*/
69        unsigned short chunkid = 0xdcba;
70        s.WriteData(&chunkid,sizeof(unsigned short),1);
71        unsigned long size = mSteps.size()*8*sizeof(int) + CHUNK_OVERHEAD_SIZE;
72        s.WriteData(&size,sizeof(unsigned long),1);
73
74        int tam = mSteps.size();
75        s.WriteData(&tam,sizeof(int),1);
76        for(unsigned int i=0; i<tam; i++)
77        {
78                Geometry::TreeSimplificationSequence::Step paso = mSteps.operator [](i);
79
80                s.WriteData(&paso.mV0,sizeof(int),1);
81                s.WriteData(&paso.mV1,sizeof(int),1);
82                s.WriteData(&paso.mT0,sizeof(int),1);
83                s.WriteData(&paso.mT1,sizeof(int),1);
84
85                s.WriteData(paso.mNewQuad,sizeof(int),4);
86
87                // El último %u que recibe el sprintf es para indicar si un paso es dependiente del anterior. REVISAR
88                // ------------------------------------------------------------------------
89/*              sprintf(simp,"%u %u %u %u &", paso.mV0, paso.mV1, paso.mT0, paso.mT1);
90                s.WriteData(simp,sizeof(char),strlen(simp));
91
92                // los quads
93                sprintf(simp," %u %u %u %u\n",paso.mNewQuad[0],paso.mNewQuad[1],paso.mNewQuad[2],paso.mNewQuad[3]);
94                s.WriteData(simp,sizeof(char),strlen(simp));*/
95                //s.WriteData("\n",sizeof(char),1);
96        }
97}
98
99void TreeSimplificationSequence::putMeshName(char *name)
100{
101        meshName=name;
102}
103
104char *TreeSimplificationSequence::getMeshName(void)
105{
106        return meshName;
107}
Note: See TracBrowser for help on using the repository browser.