Mercurial > hg > Members > kono > Cerium
view TaskManager/Test/simple_render/create_sgp.cpp @ 31:6a77b5e755ab
*** empty log message ***
author | gongo |
---|---|
date | Tue, 12 Feb 2008 13:56:54 +0900 |
parents | 3f68b2ef4fb0 |
children | 1c7c3d73ffc7 |
line wrap: on
line source
#include <iostream> #include "scene_graph_pack.h" #include "polygon.h" using namespace std; int create_sgp(SceneGraphPack *sgp, Polygon *sg) { int i = 0; int nnpn = -1; Polygon *t; t = sg; while(t) { sgp->node[i].size = t->size; int d,tex; for(d=0,tex=0; d<t->size*3; d+=3,tex+=2) { sgp->node[i].vertex[d] = t->data[d]; sgp->node[i].vertex[d+1] = t->data[d+1]; sgp->node[i].vertex[d+2] = t->data[d+2]; sgp->node[i].texture[tex] = t->data[d+t->size*6]; sgp->node[i].texture[tex+1] = t->data[d+t->size*6+1]; } sgp->node[i].obj_pos[0] = 0; sgp->node[i].obj_pos[1] = 0; sgp->node[i].obj_pos[2] = 0; sgp->node[i].obj_pos[3] = 1; sgp->node[i].angle[0] = 0; sgp->node[i].angle[1] = 0; sgp->node[i].angle[2] = 0; sgp->node[i].angle[3] = 1; for(int tm=0; tm<16; tm++) { sgp->node[i].translation[tm] = 0; } sgp->node[i].id = 0; sgp->node[i].move = 0; sgp->node[i].interaction = 0; sgp->node[i].pn = nnpn; if(t->child != NULL) { nnpn = i; t = t->child; } else if(t->brother != NULL) { nnpn = sgp->node[i].pn; t = t->brother; } else { while(t) { if(t->brother != NULL) { t = t->brother; break; } else { if(t->parent == NULL) { t = NULL; break; } nnpn = sgp->node[nnpn].pn; t = t->parent; } } } i++; } sgp->info.size = i; return sizeof(SceneGraphPack); }