comparison include/Cerium/scene_graph_pack.h @ 0:04e28d8d3c6f

first commit
author Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
date Mon, 08 Nov 2010 01:23:25 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:04e28d8d3c6f
1 #ifndef INCLUDED_SCENE_GRAPH_PACK
2 #define INCLUDED_SCENE_GRAPH_PACK
3
4 #include "SceneGraph.h"
5
6 #include "types.h"
7
8 #define MAX_NODE 16
9 #define MAX_POLYGON 36
10
11 typedef struct SceneGraphNode {
12 int size; // この Node で使ってるポリゴンの数、でいいのかな
13 float vertex[MAX_POLYGON*3];
14 float texture[MAX_POLYGON*2];
15 float obj_pos[4];
16 float angle[4];
17 float translation[16];
18 uint32 *tex_addr;
19 int tex_width, tex_height;
20 int id;
21 int move, interaction;
22 int pn; // parent number?
23 SceneGraphNode *next;
24 int pad[3];
25 SceneGraphPtr self;
26 SceneGraphPtr tree;
27
28 void init(void) {
29 size = 0;
30 next = 0;
31 }
32
33 void finish(void) {
34 SceneGraphNode *p = this->next, *p1;
35
36 while (p) {
37 p1 = p->next;
38 free(p);
39 p = p1;
40 }
41 }
42 }SceneGraphNode, *SceneGraphNodePtr;
43
44 typedef struct SceneGraphInfo {
45 int size;
46 int pad[2];
47 }SceneGraphInfo;
48
49 typedef struct SceneGraphPack {
50 SceneGraphInfo info;
51 SceneGraphNode node[MAX_NODE];
52 SceneGraphPack *next;
53
54 void init(void){
55 next = 0;
56 info.size = 0;
57
58 for (int i = 0; i < MAX_NODE; i++) {
59 node[i].size = 0;
60 }
61 }
62
63 void finish(void) {
64 for (int i = 0; i < info.size; i++) {
65 node[i].finish();
66 }
67
68 next = 0;
69 info.size = 0;
70 }
71 } SceneGraphPack, *SceneGraphPackPtr;
72
73 #endif