annotate Renderer/Engine/SceneGraph.cc @ 1798:3babb36ac459 draft

array(bmskip table) allocate size change 256 to 256*sizeof(int)
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Thu, 05 Dec 2013 16:41:38 +0900
parents 6748a09c63cb
children 363b7c401c79
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <iostream>
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include <SDL.h>
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 #include <SDL_opengl.h>
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #include <SDL_image.h>
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 #include <libxml/parser.h>
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
6 #include <string.h>
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 #include "SceneGraph.h"
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 #include "xml.h"
1050
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1049
diff changeset
9 #include "matrix_calc.h"
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 #include "TextureHash.h"
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 #include "texture.h"
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 #include "TaskManager.h"
1125
b733c7903d07 remove old code
yutaka@localhost.localdomain
parents: 1123
diff changeset
13 #include "polygon_pack.h"
1205
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
14 #include <ft2build.h>
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
15 #include <freetype/freetype.h>
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 using namespace std;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 SceneGraphPtr scene_graph = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 SceneGraphPtr scene_graph_viewer = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 static TextureHash texture_hash;
860
63a08f3a468a Still on the way
yutaka@localhost.localdomain
parents: 850
diff changeset
23 texture_list list[TABLE_SIZE];
63a08f3a468a Still on the way
yutaka@localhost.localdomain
parents: 850
diff changeset
24
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 extern int decode(char *cont, FILE *outfile);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 static void
653
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
28 no_move(SceneGraphPtr self, void *sgroot_, int screen_w, int screen_h) {}
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 static void
653
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
31 no_collision(SceneGraphPtr self, void *sgroot_, int screen_w, int screen_h,
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 SceneGraphPtr tree) {}
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 * 事前に計算したテクスチャの最大縮小率 scale まで、
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 * テクスチャを 1/2 縮小していく。
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 * このとき、テクスチャは TEXTURE_SPLIT_PIXELx2 のブロック (Tile) で分割し、
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 * これらを連続したメモリ領域に格納していく。
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 * 以下の (1), (2), (3) を Tapestry と呼ぶ
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 * 例 scale = 4 の場合
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 * Tapestry(1) 1/1
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 * +---+---+---+---+
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 * | 0 | 1 | 2 | 3 |
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 * +---+---+---+---+
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 * | 4 | 5 | 6 | 7 | (2) 1/2
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 * +---+---+---+---+ +---+---+
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 * | 8 | 9 | 10| 11| | 16| 17| (3) 1/4
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 * +---+---+---+---+ +---+---+ +---+
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 * | 12| 13| 14| 15| | 18| 19| | 20|
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 * +---+---+---+---+ +---+---+ +---|
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 * (1) (2) (3)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * | * | * | 14| 15| 16| 17| 18| 19| 20|
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 * @param[in] tex_w Width of orignal texture
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 * @param[in] tex_h Height of orignal texture
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 * @param[in] tex_src Original texture
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 * @param[in] all_pixel_num Tapestry の合計 pixel 数
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 * @param[in] scale テクスチャの最大縮小率 (= 2^n)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 * @return (1) のアドレス
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 */
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
66
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
67
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
68 uint32 white[256] __attribute__((aligned(16)));
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
69
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 static uint32*
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
71 makeTapestry(TaskManager *manager, uint32 tex_w, uint32 tex_h, uint32 *tex_src,
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 int all_pixel_num, int scale_cnt)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 {
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
74 if (tex_w==0 && tex_h==0) {
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
75 // non texture case
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
76 uint32 pattern = SDL_BYTEORDER == SDL_LIL_ENDIAN? 0x00ffffff : 0xffffff00; /* OpenGL RGBA masks */
1053
root@localhost.localdomain
parents: 1050
diff changeset
77 if (white[0]!=pattern) { // dumb!
root@localhost.localdomain
parents: 1050
diff changeset
78 #if 1
root@localhost.localdomain
parents: 1050
diff changeset
79 for(int i=0;i<256;i++)
root@localhost.localdomain
parents: 1050
diff changeset
80 white[i] = pattern;
root@localhost.localdomain
parents: 1050
diff changeset
81 #else
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
82 memset_pattern4(white,&pattern,256);
1053
root@localhost.localdomain
parents: 1050
diff changeset
83 #endif
root@localhost.localdomain
parents: 1050
diff changeset
84 }
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
85 return white;
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
86 }
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
88 uint32 t = 0;
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
89 uint32 diff = TEXTURE_SPLIT_PIXEL;
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
90 uint32 p_diff = 1;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 uint32 *tex_dest = (uint32*)manager->allocate(sizeof(int)*all_pixel_num);
1092
b99abedb5523 fix h w in makeTapestry
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1053
diff changeset
93 // uint32 *tex_src_max = (uint32*)( tex_src + tex_h*tex_w);
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
1092
b99abedb5523 fix h w in makeTapestry
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1053
diff changeset
95 // uint32 alpha = SDL_BYTEORDER == SDL_LIL_ENDIAN? 0xff000000 : 0xff; /* OpenGL RGBA masks */
b99abedb5523 fix h w in makeTapestry
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1053
diff changeset
96 uint32 alpha = tex_src[0];
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
97
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 while (scale_cnt) {
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
99 // we should use average, except clear one
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
100 for (uint32 y = 0; y < align(tex_h,diff); y += diff) {
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
101 for (uint32 x = 0; x < align(tex_w,diff); x += diff) {
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
102 for (uint32 j = 0; j < diff; j += p_diff) {
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
103 for (uint32 i = 0; i < diff; i += p_diff) {
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
104 tex_dest[t++] =
1092
b99abedb5523 fix h w in makeTapestry
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1053
diff changeset
105 (x+i<tex_w && y+j<tex_h) ? tex_src[(x+i) + tex_w*(y+j)]: alpha;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110
1092
b99abedb5523 fix h w in makeTapestry
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1053
diff changeset
111 diff <<= 1; p_diff <<= 1;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 scale_cnt >>= 1;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 return tex_dest;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 * 何の情報も持ってない SceneGraph の生成
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 * 今のところ、とりあえず木構造の繋がりに使うぐらい
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 */
1143
786e800abfb4 minor fix
Yutaka_Kinjyo
parents: 1142
diff changeset
123 SceneGraph::SceneGraph(TaskManager *manager)
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 {
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1128
diff changeset
125
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 init();
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
127 allocate_init(manager);
1143
786e800abfb4 minor fix
Yutaka_Kinjyo
parents: 1142
diff changeset
128 texture_info->texture_id = -1;
786e800abfb4 minor fix
Yutaka_Kinjyo
parents: 1142
diff changeset
129
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 finalize = &SceneGraph::finalize_copy;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 this->name = "NULLPO";
1141
bc2dea061cb1 minor fix
Yutaka_Kinjyo
parents: 1140
diff changeset
133
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 * orig のコピーとして SceneGraph を生成する
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 */
1169
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
139 SceneGraph::SceneGraph( TaskManager *manager, SceneGraphPtr orig)
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 {
908
Yutaka_Kinjyo
parents: 906
diff changeset
141
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 init();
1129
a8bffdb5d2e3 bus error
yutaka@localhost.localdomain
parents: 1128
diff changeset
143
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 memcpy(this, orig, sizeof(SceneGraph));
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
145
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
146 allocate_init(manager);
1169
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
147
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
148 for (int i = 0; i < 16; i++) {
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
149 matrix[i] = orig->matrix[i];
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
150 }
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
151
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
152 memcpy(texture_info, orig->texture_info, sizeof(texture_list));
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
153
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 // コピーしない
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 //flag_remove = 0;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 //flag_drawable = 1;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 next = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 prev = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 last = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 parent = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 brother = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 children = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 lastChild = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 finalize = &SceneGraph::finalize_copy;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 frame = 0;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
171
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 /* construct polygon from xmlNode. */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 SceneGraph::SceneGraph(TaskManager *manager, xmlNodePtr surface)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 {
1143
786e800abfb4 minor fix
Yutaka_Kinjyo
parents: 1142
diff changeset
175
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 init();
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
177 allocate_init(manager);
1143
786e800abfb4 minor fix
Yutaka_Kinjyo
parents: 1142
diff changeset
178 texture_info->texture_id = -1;
1125
b733c7903d07 remove old code
yutaka@localhost.localdomain
parents: 1123
diff changeset
179
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1125
diff changeset
180 //size : 頂点の数かな
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 size = atoi((char *)xmlGetProp(surface,(xmlChar *)"size"));
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 name = (char *)xmlGetProp(surface,(xmlChar *)"name");
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 parent_name = (char *)xmlGetProp(surface,(xmlChar *)"parent");
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1125
diff changeset
185 if (size % 3 != 0) {
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1125
diff changeset
186 printf("vertex size is error. size %% 3 = %lld\n", size % 3);
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1125
diff changeset
187 }
1299
f0e805c09ed6 minor fix xml_walk and pickup_float, not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1292
diff changeset
188
1253
bb9c885c1cb5 COLLADA add read node
Yuhi TOMARI <e095740@ie.u-ryukyu.ac.jp>
parents: 1226
diff changeset
189 /*
bb9c885c1cb5 COLLADA add read node
Yuhi TOMARI <e095740@ie.u-ryukyu.ac.jp>
parents: 1226
diff changeset
190 * MAX_SIZE_TRIANGLE:128
bb9c885c1cb5 COLLADA add read node
Yuhi TOMARI <e095740@ie.u-ryukyu.ac.jp>
parents: 1226
diff changeset
191 */
1299
f0e805c09ed6 minor fix xml_walk and pickup_float, not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1292
diff changeset
192
1136
f326494ffdc7 not work ieshoot. not check Cell
Yutaka_Kinjyo
parents: 1130
diff changeset
193 if (size > 0) {
1299
f0e805c09ed6 minor fix xml_walk and pickup_float, not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1292
diff changeset
194
f0e805c09ed6 minor fix xml_walk and pickup_float, not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1292
diff changeset
195 /*
f0e805c09ed6 minor fix xml_walk and pickup_float, not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1292
diff changeset
196 * size/3 : 三角形の数
1253
bb9c885c1cb5 COLLADA add read node
Yuhi TOMARI <e095740@ie.u-ryukyu.ac.jp>
parents: 1226
diff changeset
197 * MAX_SIZE_TRIANGLE : 128
1299
f0e805c09ed6 minor fix xml_walk and pickup_float, not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1292
diff changeset
198 * polygon の数から、PolygonPackの数を決定する
1253
bb9c885c1cb5 COLLADA add read node
Yuhi TOMARI <e095740@ie.u-ryukyu.ac.jp>
parents: 1226
diff changeset
199 */
1299
f0e805c09ed6 minor fix xml_walk and pickup_float, not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1292
diff changeset
200
1136
f326494ffdc7 not work ieshoot. not check Cell
Yutaka_Kinjyo
parents: 1130
diff changeset
201 pp_num = (size/3 + MAX_SIZE_TRIANGLE - 1) / MAX_SIZE_TRIANGLE;
f326494ffdc7 not work ieshoot. not check Cell
Yutaka_Kinjyo
parents: 1130
diff changeset
202 pp = (PolygonPack*)manager->allocate(sizeof(PolygonPack)*pp_num);
f326494ffdc7 not work ieshoot. not check Cell
Yutaka_Kinjyo
parents: 1130
diff changeset
203 } else {
f326494ffdc7 not work ieshoot. not check Cell
Yutaka_Kinjyo
parents: 1130
diff changeset
204 pp_num = 0;
f326494ffdc7 not work ieshoot. not check Cell
Yutaka_Kinjyo
parents: 1130
diff changeset
205 pp = NULL;
f326494ffdc7 not work ieshoot. not check Cell
Yutaka_Kinjyo
parents: 1130
diff changeset
206 }
906
becd6fad3ae0 coord_pack is stuffed with infomation of create polygon at spe.
Yutaka_Kinjyo
parents: 891
diff changeset
207
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 get_data(manager, surface->children);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 finalize = &SceneGraph::finalize_original;
1108
cbfedf774354 getSgid was made hash.
tkaito
parents: 1092
diff changeset
211
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213
1253
bb9c885c1cb5 COLLADA add read node
Yuhi TOMARI <e095740@ie.u-ryukyu.ac.jp>
parents: 1226
diff changeset
214
1211
7763f03a94e1 const char fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1210
diff changeset
215 SceneGraph::SceneGraph(TaskManager *manager,const char *font,int pixels,Uint32 color,const char *string_name) {
1205
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
216
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
217 init();
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
218 allocate_init(manager);
1205
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
219 texture_info->texture_id = -1;
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
220
1205
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
221 for (int i = 0; i < 16; i++) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
222 matrix[i] = 0;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
223 }
1226
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
224 for (int i = 0; i < 4; i++) {
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
225 matrix[i*4+i] = 1;
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
226 }
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
227
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
228 //size : 頂点の数かな
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
229 size = 6;
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
230 parent_name = NULL;
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
231 name = string_name;
1205
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
232
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
233 if (size % 3 != 0) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
234 printf("vertex size is error. size %% 3 = %lld\n", size % 3);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
235 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
236
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
237 if (size > 0) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
238 pp_num = (size/3 + MAX_SIZE_TRIANGLE - 1) / MAX_SIZE_TRIANGLE;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
239 pp = (PolygonPack*)manager->allocate(sizeof(PolygonPack)*pp_num);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
240 } else {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
241 pp_num = 0;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
242 pp = NULL;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
243 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
244
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
245 create_font_data(manager, font, pixels, color, string_name);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
246
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
247 finalize = &SceneGraph::finalize_original;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
248 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
249
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
250 void
1211
7763f03a94e1 const char fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1210
diff changeset
251 SceneGraph::create_font_data(TaskManager *manager,const char *font ,int pixels, Uint32 color, const char *string_name)
1205
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
252 {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
253 //font_coordinate(pixels/2,pixels);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
254 font_normal();
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
255 font_model();
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
256 //font_texture();
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
257
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
258 get_font_image(manager, font, pixels, color, string_name);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
259 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
260
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
261 void
1211
7763f03a94e1 const char fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1210
diff changeset
262 SceneGraph::get_font_image(TaskManager *manager,const char *font ,int pixels ,Uint32 color, const char *string_name)
1205
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
263 {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
264 int tex_id;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
265 if (texture_hash.hash_regist(string_name, tex_id)) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
266 SDL_Surface *texture_image = load_font_image(font,pixels,color,string_name);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
267 if(!texture_image){
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
268 printf("Can't load image %s\n",string_name);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
269 exit(0);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
270 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
271 texture_info->texture_id = makeTapestries(manager, texture_image,tex_id);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
272 printf("%d\n",texture_info->texture_id);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
273 tex_id = texture_info->texture_id;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
274
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
275 } else {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
276 texture_info->texture_id = tex_id;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
277 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
278
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
279 texture_info->t_w = list[tex_id].t_w;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
280 texture_info->t_h = list[tex_id].t_h;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
281 texture_info->pixels_orig = list[tex_id].pixels_orig;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
282 texture_info->pixels = list[tex_id].pixels;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
283 texture_info->scale_max = list[tex_id].scale_max;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
284 texture_info->texture_image = list[tex_id].texture_image;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
285 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
286
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
287 SDL_Surface*
1211
7763f03a94e1 const char fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1210
diff changeset
288 SceneGraph::load_font_image(const char *font ,int pixel,Uint32 color , const char *string_name)
1205
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
289 {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
290 //printf("laod_font_iamge");
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
291 FT_Library library;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
292 FT_Error err;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
293 err = FT_Init_FreeType(&library);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
294 if(err){
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
295 exit(1);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
296 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
297 FT_Face face;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
298 err = FT_New_Face(library,font,0,&face);//font:フォントファイルのパス
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
299 if(err){
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
300 exit(1);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
301 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
302
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
303 err = FT_Set_Pixel_Sizes(face,pixel,pixel);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
304 if(err){
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
305 exit(1);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
306 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
307
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
308 u_int32_t changecode[256] = {0};
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
309
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
310 conv(string_name+5,strlen(string_name+5),changecode);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
311
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
312 unsigned int characode = changecode[0];
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
313
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
314 err = FT_Load_Char(face,characode,0);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
315 if(err){
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
316 exit(1);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
317 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
318
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
319 err = FT_Render_Glyph(face->glyph,FT_RENDER_MODE_MONO);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
320 if(err){
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
321 exit(1);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
322 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
323
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
324 FT_Bitmap *bm = &face->glyph->bitmap;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
325
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
326 //baseline計算 y_ppem(nominal height) - bitmap_top(topからのbaseline)
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
327 float baseline = face->size->metrics.y_ppem - face->glyph->bitmap_top;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
328
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
329 float row = 1;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
330 float width = 1;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
331
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
332 font_coordinate(baseline,face->glyph->bitmap.rows,face->glyph->bitmap.width);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
333 this->seq = face->glyph->bitmap.width;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
334 font_texture(row,width);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
335
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
336 int index = 0;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
337 Uint32 *pixels = (Uint32*)malloc(bm->rows*bm->pitch*8*4);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
338
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
339 for (int row = 0; row < bm->rows; row ++) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
340 for (int col = 0; col < bm->pitch; col ++) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
341 int c = bm->buffer[bm->pitch * row + col];
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
342 for (int bit = 7; bit >= 0; bit --) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
343
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
344 if (((c >> bit) & 1) == 0) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
345 //printf(" ");
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
346 pixels[index++] = 0x0000000;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
347 } else {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
348 //printf("##");
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
349 //pixels[index++] = 0x00ffffff;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
350 pixels[index++] = color;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
351
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
352 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
353
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
354 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
355 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
356
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
357 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
358
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
359 SDL_Surface *texture_image = SDL_CreateRGBSurfaceFrom(pixels, bm->pitch*8, bm->rows,
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
360 32, bm->pitch*8*4, redMask,
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
361 greenMask, blueMask, alphaMask);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
362
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
363
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
364
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
365 if (!texture_image) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
366 printf("error\n");
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
367 return 0;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
368 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
369 SDL_Surface *tmpImage
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
370 = SDL_CreateRGBSurface(SDL_HWSURFACE, texture_image->w,
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
371 texture_image->h, 32, redMask,
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
372 greenMask, blueMask, alphaMask);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
373
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
374
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
375 SDL_Surface *converted;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
376 converted = SDL_ConvertSurface(texture_image, tmpImage->format,
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
377 SDL_HWSURFACE);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
378 if (converted != NULL) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
379 SDL_FreeSurface(texture_image);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
380 texture_image = converted;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
381 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
382
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
383 return texture_image;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
384 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
385
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
386 void
1211
7763f03a94e1 const char fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1210
diff changeset
387 SceneGraph::conv(const char *str, int length, u_int32_t *out) {
1205
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
388 int oindex = 0;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
389 int i = 0;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
390 while (i < length) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
391 out[oindex] = str[i++] & 0xff;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
392 int len = 0;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
393 u_int32_t mask;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
394 for (mask = 0x80; out[oindex] & mask; mask >>= 1) {
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
395 out[oindex] -= mask;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
396 len++;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
397 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
398 int j;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
399 for (j = 1; j < len; j++)
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
400 out[oindex] = (out[oindex] << 6) | (str[i++] & 0x3f);
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
401 oindex++;
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
402 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
403 }
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
404
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
405 /*文字のSceneGraphを生成する*/
b8adf4e95e96 add createStringFont()
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents: 1184
diff changeset
406
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
407 void
724
6e9e4726113e Small clean up of Rendering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 653
diff changeset
408 SceneGraph::init()
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
409 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
410 next = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
411 prev = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
412 last = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
413
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
414 parent = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
415 brother = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
416 children = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
417 lastChild = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
418
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
419 stack_xyz[0] = 0.0f;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
420 stack_xyz[2] = 0.0f;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
421 stack_xyz[1] = 0.0f;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
422 stack_angle[0] = 0.0f;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
423 stack_angle[1] = 0.0f;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
424 stack_angle[2] = 0.0f;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
425
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
426 size = 0;
1141
bc2dea061cb1 minor fix
Yutaka_Kinjyo
parents: 1140
diff changeset
427 pp_num = 0;
bc2dea061cb1 minor fix
Yutaka_Kinjyo
parents: 1140
diff changeset
428
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
429 //data = NULL;
1128
293b36802714 code cleanup
Yutaka_Kinjyo
parents: 1127
diff changeset
430
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
431 move = no_move;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
432 collision = no_collision;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
433
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
434 flag_remove = 0;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
435 flag_drawable = 1;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
436 sgid = -1;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
437 gid = -1;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
438
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
439 frame = 0;
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
440
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
441 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
442
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
443 // spe に渡すために 16アラインメント に allocate をする
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
444 void
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
445 SceneGraph::allocate_init(TaskManager *manager)
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
446 {
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
447 matrix = (float*)manager->allocate(sizeof(float)*16);
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
448 out_matrix = (float*)manager->allocate(sizeof(float)*16);
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
449 texture_info = (texture_list*)manager->allocate(sizeof(texture_list));
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
450
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
451 for (int i = 0; i < 16; i++) {
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
452 matrix[i] = 0;
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
453 out_matrix[i] = 0;
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
454 }
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
455 for (int i = 0; i < 4; i++) {
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
456 matrix[i*4+i] = 1;
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
457 out_matrix[i*4+i] = 1;
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
458 }
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
459 }
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
460
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
461
724
6e9e4726113e Small clean up of Rendering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 653
diff changeset
462 SceneGraph::~SceneGraph()
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
463 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
464 (this->*finalize)();
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
465 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
466
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
467 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
468 * xml ファイルから生成されたオリジナル SceneGraph なので
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
469 * polygon data を削除
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
470 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
471 void
724
6e9e4726113e Small clean up of Rendering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 653
diff changeset
472 SceneGraph::finalize_original()
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
473 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
474 //delete [] data;
860
63a08f3a468a Still on the way
yutaka@localhost.localdomain
parents: 850
diff changeset
475
1126
6043da6e48f1 complete compile but not work yet.
yutaka@localhost.localdomain
parents: 1125
diff changeset
476 free(pp);
1142
801d57ae1e29 cut compile CreatePolygonTask on spe side because not enough spe memory. We have to use code loading.
yutaka@localhost.localdomain
parents: 1141
diff changeset
477 free(matrix);
801d57ae1e29 cut compile CreatePolygonTask on spe side because not enough spe memory. We have to use code loading.
yutaka@localhost.localdomain
parents: 1141
diff changeset
478 free(texture_info);
860
63a08f3a468a Still on the way
yutaka@localhost.localdomain
parents: 850
diff changeset
479
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
480 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
481
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
482 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
483 * SceneGraph ID から生成された、コピー SceneGraph なので
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
484 * polygon data は削除しない。オリジナルの方で削除する。
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
485 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
486 void
724
6e9e4726113e Small clean up of Rendering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 653
diff changeset
487 SceneGraph::finalize_copy()
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
488 {
1142
801d57ae1e29 cut compile CreatePolygonTask on spe side because not enough spe memory. We have to use code loading.
yutaka@localhost.localdomain
parents: 1141
diff changeset
489
801d57ae1e29 cut compile CreatePolygonTask on spe side because not enough spe memory. We have to use code loading.
yutaka@localhost.localdomain
parents: 1141
diff changeset
490 free(matrix);
1169
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
491 free(texture_info);
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
492 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
493
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
494
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
495 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
496 * add Children
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
497 * 親の登録と、brother のリストへ加える
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
498 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
499 * @param child new child
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
500 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
501 SceneGraphPtr
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
502 SceneGraph::addChild(SceneGraphPtr child)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
503 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
504 /* childrenのリストの最後に加える (brother として)*/
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
505 if (this->lastChild != NULL) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
506 SceneGraphPtr last = this->lastChild;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
507 last->brother = child;
850
tkaito
parents: 848
diff changeset
508 //child->parent = this;
tkaito
parents: 848
diff changeset
509 //return child;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
510 }
891
Yutaka_Kinjyo
parents: 885
diff changeset
511
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
512 this->lastChild = child;
891
Yutaka_Kinjyo
parents: 885
diff changeset
513
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
514 if (this->children == NULL) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
515 this->children = child;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
516 }
891
Yutaka_Kinjyo
parents: 885
diff changeset
517
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
518 child->parent = this;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
519
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
520 return child;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
521 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
522
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
523
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
524 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
525 * add Brother
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
526 * addChild() でも brother の操作をしないといけないので、そっちに回す
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
527 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
528 * @param bro new Brother
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
529 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
530 SceneGraphPtr
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
531 SceneGraph::addBrother(SceneGraphPtr bro)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
532 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
533 if (this->parent) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
534 parent->addChild(bro);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
535 } else {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
536 fprintf(stderr, "error : SceneGraph::%s : %s doesn't have parent\n",
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
537 __FUNCTION__, this->name);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
538 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
540 return bro;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
541 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
542
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
543 /* thisの子や子孫にnameのものが存在すればそいつを返す なければNULL. */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
544 SceneGraphPtr
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
545 SceneGraph::searchSceneGraph(const char *name)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
546 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
547 SceneGraphPtr tmp;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
548 SceneGraphPtr result;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
549
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
550 /* 本人か */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
551 if( 0==strcmp(this->name, name) ) return this;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
552
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
553 /* 子供から再帰的に探す */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
554 for(tmp = this->children; tmp; tmp = tmp->next) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
555 if ((result=tmp->searchSceneGraph(name)) != NULL)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
556 return result;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
557 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
558
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
559 /* 無かったら NULL. */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
560 return NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
561 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
562
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
563 void
724
6e9e4726113e Small clean up of Rendering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 653
diff changeset
564 SceneGraph::tree_check()
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
565 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
566 SceneGraphPtr t = this;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
567
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
568 while(t)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
569 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
570 cout << "my_name : " << t->name << endl;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
571 if(t->children != NULL)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
572 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
573 cout << "--move children : " << t->children->name << endl;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
574 t = t->children;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
575 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
576 else if(t->brother != NULL)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
577 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
578 cout << "--move brother : " << t->brother->name << endl;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
579 t = t->brother;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
580 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
581 else
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
582 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
583 while(t)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
584 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
585 if(t->brother != NULL)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
586 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
587 cout << "--move brother : " << t->brother->name << endl;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
588 t = t->brother;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
589 break;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
590 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
591 else
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
592 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
593 if(t->parent)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
594 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
595 cout << "--move parent : " << t->parent->name << endl;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
596 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
597 t = t->parent;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
598 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
599 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
600 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
601 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
602 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
603
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
604
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
605 void
724
6e9e4726113e Small clean up of Rendering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 653
diff changeset
606 SceneGraph::print_member()
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
607 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
608 cout << "size = " << size << endl;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
609 cout << "name = " << name << endl;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
610 cout << "parent_name = " << parent_name << endl;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
611
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
612 if (parent != NULL) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
613 cout << "parent->name = " << parent->name << endl;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
614 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
615
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
616 if (children != NULL) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
617 cout << "children->name = " << children->name << endl;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
618 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
619 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
620
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
621
1336
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
622 void Polygon::pickup_coordinate(char *cont)
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
623 {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
624
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
625 // size は頂点の数, count は面の数
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
626 char *tmp_cont = cont;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
627 int count = size / 3;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
628
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
629 for (int i = 0; i < pp_num; i++) {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
630
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
631 TrianglePackPtr tri = pp[i].tri;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
632 // TrianglePack の size のチェック
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
633
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
634 int tri_size = (count < MAX_SIZE_TRIANGLE) ? count : MAX_SIZE_TRIANGLE ;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
635
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
636 //それを構造体に登録
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
637 pp[i].info.size = tri_size;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
638
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
639
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
640 for (int j = 0; j < tri_size; j++) {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
641
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
642 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver1.x));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
643 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver1.y));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
644 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver1.z));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
645
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
646 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver2.x));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
647 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver2.y));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
648 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver2.z));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
649
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
650 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver3.x));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
651 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver3.y));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
652 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver3.z));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
653
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
654 if (tmp_cont == NULL)
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
655 {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
656 cout << "Analyzing obj data failed coordinate\n";
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
657 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
658
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
659 count -= 1;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
660
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
661 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
662
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
663 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
664
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
665 if (count != 0) {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
666 printf("miss pickup_coordinate size. diff size = %d\n", count);
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
667 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
668
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
669 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
670
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
671 void Polygon::pickup_normal(char *cont)
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
672 {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
673
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
674
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
675 // size は頂点の数, count は面の数
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
676 char *tmp_cont = cont;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
677 int count = size / 3;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
678
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
679 for (int i = 0; i < pp_num; i++) {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
680
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
681 TrianglePackPtr tri = pp[i].tri;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
682 // TrianglePack の size のチェック
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
683 int tri_size = (count < MAX_SIZE_TRIANGLE) ? count : MAX_SIZE_TRIANGLE ;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
684 pp[i].info.size = tri_size;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
685
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
686 for (int j = 0; j < tri_size; j++) {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
687
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
688 tmp_cont = pickup_float(tmp_cont, &(tri[j].normal1.x));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
689 tmp_cont = pickup_float(tmp_cont, &(tri[j].normal1.y));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
690 tmp_cont = pickup_float(tmp_cont, &(tri[j].normal1.z));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
691
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
692 tmp_cont = pickup_float(tmp_cont, &(tri[j].normal2.x));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
693 tmp_cont = pickup_float(tmp_cont, &(tri[j].normal2.y));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
694 tmp_cont = pickup_float(tmp_cont, &(tri[j].normal2.z));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
695
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
696 tmp_cont = pickup_float(tmp_cont, &(tri[j].normal3.x));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
697 tmp_cont = pickup_float(tmp_cont, &(tri[j].normal3.y));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
698 tmp_cont = pickup_float(tmp_cont, &(tri[j].normal3.z));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
699
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
700
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
701 if (tmp_cont == NULL)
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
702 {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
703 cout << "Analyzing obj data failed coordinate\n";
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
704 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
705
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
706 count -= 1;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
707
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
708 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
709
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
710
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
711 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
712
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
713 if (count != 0) {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
714 printf("miss pickup_normal size. diff size = %d\n", count);
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
715 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
716
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
717 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
718
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
719 void Polygon::pickup_model(char *cont)
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
720 {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
721 cont = pickup_float(cont,c_xyz);
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
722 cont = pickup_float(cont,c_xyz+1);
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
723 cont = pickup_float(cont,c_xyz+2);
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
724
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
725 if (cont == NULL)
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
726 {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
727 cout << "Analyzing obj data failed model\n";
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
728 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
729 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
730
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
731 void Polygon::pickup_texture(char *cont)
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
732 {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
733
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
734 char *tmp_cont = cont;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
735 int count = size / 3;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
736
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
737 for (int i = 0; i < pp_num; i++) {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
738
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
739 TrianglePackPtr tri = pp[i].tri;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
740 // TrianglePack の size のチェック
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
741 int tri_size = (count < MAX_SIZE_TRIANGLE) ? count : MAX_SIZE_TRIANGLE ;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
742 pp[i].info.size = tri_size;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
743
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
744 for (int j = 0; j < tri_size; j++) {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
745
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
746 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver1.tex_x));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
747 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver1.tex_y));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
748
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
749 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver2.tex_x));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
750 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver2.tex_y));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
751
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
752 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver3.tex_x));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
753 tmp_cont = pickup_float(tmp_cont, &(tri[j].ver3.tex_y));
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
754
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
755
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
756 if (tmp_cont == NULL)
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
757 {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
758 cout << "Analyzing obj data failed coordinate\n";
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
759 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
760
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
761 count -= 1;
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
762
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
763 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
764
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
765
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
766 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
767
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
768 if (count != 0) {
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
769 printf("miss pickup_texture size. diff size = %d\n", count);
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
770 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
771
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
772
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
773
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
774 }
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
775
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
776
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
777 /*
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
778 * surface nodeからポリゴンの情報を読み出す 再帰しない
1336
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
779 *
3f95f61faef6 collada file might be readable.
e095732 <e095732@ie.u-ryukyu.ac.jp>
parents: 1302
diff changeset
780 * get_data,get_image,makeTapestorys このファイルの外に追い出すのがよい
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
781 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
782 void
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
783 SceneGraph::get_data(TaskManager *manager, xmlNodePtr cur)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
784 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
785 //char *image_name;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
786
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
787 for(;cur;cur=cur->next)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
788 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
789 if(!xmlStrcmp(cur->name,(xmlChar*)"coordinate"))
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
790 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
791 char *cont = (char *)xmlNodeGetContent(cur);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
792 pickup_coordinate(cont);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
793 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
794 else if(!xmlStrcmp(cur->name,(xmlChar*)"normal"))
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
795 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
796 char *cont = (char *)xmlNodeGetContent(cur);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
797 pickup_normal(cont);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
798 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
799 else if(!xmlStrcmp(cur->name,(xmlChar*)"model"))
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
800 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
801 char *cont = (char *)xmlNodeGetContent(cur);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
802 pickup_model(cont);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
803 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
804 else if(!xmlStrcmp(cur->name,(xmlChar*)"texture"))
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
805 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
806 char *cont = (char *)xmlNodeGetContent(cur);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
807 pickup_texture(cont);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
808 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
809 else if(!xmlStrcmp(cur->name,(xmlChar*)"imageflag"))
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
810 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
811 int id;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
812 char *filename = (char *)xmlGetProp(cur, (xmlChar *)"name");
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
813 texture_hash.hash_regist(filename, id);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
814 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
815 else if(!xmlStrcmp(cur->name,(xmlChar*)"image"))
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
816 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
817 get_image(manager, cur);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
818 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
819 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
820 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
821
1166
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
822 static int
1211
7763f03a94e1 const char fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1210
diff changeset
823 is_bmp(const char *name) {
1166
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
824 int bmp = 0;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
825
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
826 while(*name) {
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
827 if (bmp==0 && *name=='.') bmp = 1;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
828 else if (bmp==1 && (*name=='b' || *name=='B')) bmp = 2;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
829 else if (bmp==2 && (*name=='m' || *name=='M')) bmp = 3;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
830 else if (bmp==3 && (*name=='p' || *name=='P')) bmp = 4;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
831 else bmp = 0;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
832 name++;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
833 }
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
834 return bmp==4;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
835 }
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
836
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
837 #if (__LITTLE_ENDIAN__)
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
838 #define LITTLEENDIAN 1
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
839 #else
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
840 #define LITTLEENDIAN 0
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
841 #endif
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
842
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
843 static void
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
844 make_black_alpha(SDL_Surface *texture_image)
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
845 {
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
846 int tex_w = texture_image->w;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
847 int tex_h = texture_image->h;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
848 #if LITTLEENDIAN
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
849 uint32 alpha = 0x000000ff;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
850 #else
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
851 uint32 alpha = 0xff000000;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
852 #endif
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
853
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
854 uint32 *pixels = (uint32*)texture_image->pixels;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
855 int i;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
856 for(i=0;i<tex_w*tex_h;i++) {
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
857 uint32 pixel = pixels[i] & ~alpha;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
858 if (pixel==0) {
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
859 pixels[i] = 0;
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
860 }
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
861 }
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
862 }
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
863
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
864 SDL_Surface*
1211
7763f03a94e1 const char fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1210
diff changeset
865 SceneGraph::load_decode_image(const char *file_name, const char *image_name, xmlNodePtr cur)
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
866 {
1211
7763f03a94e1 const char fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1210
diff changeset
867 int fd = mkstemp((char *)image_name);
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
868 FILE *outfile = fdopen(fd, "wb");
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
869
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
870 if (NULL == outfile) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
871 cout << "error open file\n";
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
872 return 0;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
873 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
874
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
875 char *cont = (char *)xmlNodeGetContent(cur);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
876 //decode(cont, image_name);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
877 decode(cont, outfile);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
878 fclose(outfile);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
879
1166
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
880 int alpha_black = is_bmp(file_name);
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
881
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
882
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
883 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
884 * image を 32bit(RGBA) に変換する
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
885 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
886 SDL_Surface *texture_image = IMG_Load(image_name);
580
ec9dd24c2dc8 add all object in file in dynamic_create
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 539
diff changeset
887 if (!texture_image) return 0;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
888 SDL_Surface *tmpImage
1123
2a63ba2c9506 bug fix.
yutaka@localhost.localdomain
parents: 1108
diff changeset
889 = SDL_CreateRGBSurface(SDL_HWSURFACE, texture_image->w,
996
bac3b0afc3e8 add sdl_test file
yutaka@charles.cr.ie.u-ryukyu.ac.jp
parents: 994
diff changeset
890 texture_image->h, 32, redMask,
bac3b0afc3e8 add sdl_test file
yutaka@charles.cr.ie.u-ryukyu.ac.jp
parents: 994
diff changeset
891 greenMask, blueMask, alphaMask);
bac3b0afc3e8 add sdl_test file
yutaka@charles.cr.ie.u-ryukyu.ac.jp
parents: 994
diff changeset
892
bac3b0afc3e8 add sdl_test file
yutaka@charles.cr.ie.u-ryukyu.ac.jp
parents: 994
diff changeset
893 //= SDL_CreateRGBSurface(SDL_HWSURFACE, 0,
bac3b0afc3e8 add sdl_test file
yutaka@charles.cr.ie.u-ryukyu.ac.jp
parents: 994
diff changeset
894 // 0, 32, redMask,
bac3b0afc3e8 add sdl_test file
yutaka@charles.cr.ie.u-ryukyu.ac.jp
parents: 994
diff changeset
895 // greenMask, blueMask, alphaMask);
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
896 SDL_Surface *converted;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
897 converted = SDL_ConvertSurface(texture_image, tmpImage->format,
996
bac3b0afc3e8 add sdl_test file
yutaka@charles.cr.ie.u-ryukyu.ac.jp
parents: 994
diff changeset
898 SDL_HWSURFACE);
bac3b0afc3e8 add sdl_test file
yutaka@charles.cr.ie.u-ryukyu.ac.jp
parents: 994
diff changeset
899
bac3b0afc3e8 add sdl_test file
yutaka@charles.cr.ie.u-ryukyu.ac.jp
parents: 994
diff changeset
900 //SDL_SetAlpha(converted, 0, 0);
bac3b0afc3e8 add sdl_test file
yutaka@charles.cr.ie.u-ryukyu.ac.jp
parents: 994
diff changeset
901
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
902 if (converted != NULL) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
903 SDL_FreeSurface(texture_image);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
904 texture_image = converted;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
905 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
906
1166
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
907 if (alpha_black) {
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
908 make_black_alpha(texture_image);
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
909 }
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
910
942
27df980045b5 FB mode is working again on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 930
diff changeset
911 // this->gl_tex = SDL_GL_LoadTexture(texture_image);
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
912 return texture_image;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
913 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
914
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
915 int
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
916 SceneGraph::makeTapestries(TaskManager *manager, SDL_Surface *texture_image, int id) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
917 uint32 *tapestry;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
918 int scale = 1;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
919 int tex_w = texture_image->w;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
920 int tex_h = texture_image->h;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
921 int all_pixel_num = 0;
1047
f87218eed9fc broken texure ( h/w != 2^n ) protection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1033
diff changeset
922 int nw = tex_w;
f87218eed9fc broken texure ( h/w != 2^n ) protection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1033
diff changeset
923 int nh = tex_h;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
924
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
925 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
926 * テクスチャの w or h が 8 pixel で分割できる間、
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
927 * 1/2 の縮小画像を作る。
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
928 * ここでは、最大の scale (1/scale) を見つける
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
929 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
930 * (ex)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
931 * (128,128) => 64,64 : 32,32: 16,16 : 8,8
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
932 * scale = 16
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
933 * (128, 64) => 64,32 : 32,16: 16,8
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
934 * scale = 8
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
935 * 8 pixcel align してない場合は、透明に 8 pixcel に拡張する
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
936 * (200, 57) => 200,64 : 100,32 : 56,16: 32,8 (16,1 : 8,1 まで落すべき? 32byte)
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
937 * scale = 32
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
938 */
1047
f87218eed9fc broken texure ( h/w != 2^n ) protection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1033
diff changeset
939
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
940 do {
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
941 tex_w = align(tex_w,8);
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
942 tex_h = align(tex_h,8);
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
943 all_pixel_num += tex_w * tex_h;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
944 tex_w >>= 1; /* tex_w /= 2 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
945 tex_h >>= 1;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
946 scale <<= 1; /* scale *= 2 */
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
947 } while( tex_w >8 || tex_h > 8 );
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
948
1049
91500a6c4def non 2^n texture tapestry generation.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1047
diff changeset
949 scale >>= 1; // 必ず 1 以上になる
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
950
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
951 tapestry = makeTapestry(manager, texture_image->w, texture_image->h,
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
952 (uint32*)texture_image->pixels,
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
953 all_pixel_num, scale);
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
954
1047
f87218eed9fc broken texure ( h/w != 2^n ) protection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1033
diff changeset
955 list[id].t_w = nw;
f87218eed9fc broken texure ( h/w != 2^n ) protection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1033
diff changeset
956 list[id].t_h = nh;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
957 list[id].pixels_orig = (Uint32*)texture_image->pixels;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
958 list[id].pixels = tapestry;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
959 list[id].scale_max = scale;
942
27df980045b5 FB mode is working again on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 930
diff changeset
960 list[id].texture_image = texture_image;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
961
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
962 return id;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
963 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
964
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
965 void
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
966 SceneGraph::get_image(TaskManager *manager, xmlNodePtr cur)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
967 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
968 char image_name[20] = "/tmp/image_XXXXXX";
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
969 char *filename = (char *)xmlGetProp(cur, (xmlChar *)"name");
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
970
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
971 if (filename == NULL || filename[0] == 0) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
972 return;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
973 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
974
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
975 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
976 * image_name を既に Load していれば何もしない
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
977 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
978 int tex_id;
1184
5abf0ce8c71c texture hash fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1169
diff changeset
979 if (texture_hash.sg_hash_regist(filename, tex_id) == -1) {
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
980
1166
38111db531e0 bmp's black has 0 alpha value for compatibility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1143
diff changeset
981 SDL_Surface *texture_image = load_decode_image(filename, image_name, cur);
580
ec9dd24c2dc8 add all object in file in dynamic_create
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 539
diff changeset
982 if (texture_image==0) {
ec9dd24c2dc8 add all object in file in dynamic_create
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 539
diff changeset
983 printf("Can't load image %s\n",filename);
ec9dd24c2dc8 add all object in file in dynamic_create
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 539
diff changeset
984 exit(0);
ec9dd24c2dc8 add all object in file in dynamic_create
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 539
diff changeset
985 }
1130
root@dolphins.cr.ie.u-ryukyu.ac.jp
parents: 1129
diff changeset
986 texture_info->texture_id = makeTapestries(manager, texture_image, tex_id);
root@dolphins.cr.ie.u-ryukyu.ac.jp
parents: 1129
diff changeset
987 tex_id = texture_info->texture_id;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
988
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
989 if (unlink(image_name)) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
990 cout << "unlink error\n";
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
991 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
992 } else {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
993 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
994 * 以前に Load されている Texture を共用
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
995 */
1130
root@dolphins.cr.ie.u-ryukyu.ac.jp
parents: 1129
diff changeset
996 texture_info->texture_id = tex_id;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
997 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
998
860
63a08f3a468a Still on the way
yutaka@localhost.localdomain
parents: 850
diff changeset
999 // こんなことすると list[] のいみあるのかなーと
63a08f3a468a Still on the way
yutaka@localhost.localdomain
parents: 850
diff changeset
1000 // 微妙に思う、自分で書き換えた感想 by gongo
1130
root@dolphins.cr.ie.u-ryukyu.ac.jp
parents: 1129
diff changeset
1001 texture_info->t_w = list[tex_id].t_w;
root@dolphins.cr.ie.u-ryukyu.ac.jp
parents: 1129
diff changeset
1002 texture_info->t_h = list[tex_id].t_h;;
root@dolphins.cr.ie.u-ryukyu.ac.jp
parents: 1129
diff changeset
1003 texture_info->pixels_orig = list[tex_id].pixels_orig;
root@dolphins.cr.ie.u-ryukyu.ac.jp
parents: 1129
diff changeset
1004 texture_info->pixels = list[tex_id].pixels;
root@dolphins.cr.ie.u-ryukyu.ac.jp
parents: 1129
diff changeset
1005 texture_info->scale_max = list[tex_id].scale_max;
root@dolphins.cr.ie.u-ryukyu.ac.jp
parents: 1129
diff changeset
1006 texture_info->texture_image = list[tex_id].texture_image;
860
63a08f3a468a Still on the way
yutaka@localhost.localdomain
parents: 850
diff changeset
1007
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1008 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1009
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1010
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1011 void
724
6e9e4726113e Small clean up of Rendering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 653
diff changeset
1012 SceneGraph::delete_data()
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1013 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1014 SceneGraphPtr n = this->next, m;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1015
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1016 //n = this;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1017 //delete [] n->data;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1018
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1019 if (next) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1020 while (n) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1021 m = n->next;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1022 delete n;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1023 n = m;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1024 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1025 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1026 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1027
653
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1028 /* move_func 実行 sgroot 渡す */
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1029 void
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1030 SceneGraph::move_execute(int w, int h)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1031 {
653
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1032 (*move)(this, this->sgroot, w, h);
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1033 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1034
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1035 void
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1036 SceneGraph::collision_check(int w, int h, SceneGraphPtr tree)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1037 {
653
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1038 (*collision)(this, this->sgroot, w, h, tree);
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1039 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1040
759
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1041 void
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1042 SceneGraph::create_sg_execute()
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1043 {
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1044 (*create_sg)(this->sgroot, property, update_property);
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1045 }
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1046
1033
a9581a9df440 add application main method and task.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 996
diff changeset
1047 void
a9581a9df440 add application main method and task.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 996
diff changeset
1048 SceneGraph::set_move_collision(move_func new_move)
a9581a9df440 add application main method and task.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 996
diff changeset
1049 {
a9581a9df440 add application main method and task.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 996
diff changeset
1050 this->move = new_move;
a9581a9df440 add application main method and task.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 996
diff changeset
1051 }
a9581a9df440 add application main method and task.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 996
diff changeset
1052
a9581a9df440 add application main method and task.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 996
diff changeset
1053 void
a9581a9df440 add application main method and task.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 996
diff changeset
1054 SceneGraph::set_move_collision(collision_func new_collision)
a9581a9df440 add application main method and task.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 996
diff changeset
1055 {
a9581a9df440 add application main method and task.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 996
diff changeset
1056 this->collision = new_collision;
a9581a9df440 add application main method and task.
koba <koba@cr.ie.u-ryukyu.ac.jp>
parents: 996
diff changeset
1057 }
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1058
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1059 void
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1060 SceneGraph::set_move_collision(move_func new_move,
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1061 collision_func new_collision)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1062 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1063 this->move = new_move;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1064 this->collision = new_collision;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1065 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1066
653
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1067
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1068 void
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1069 SceneGraph::set_move_collision(move_func new_move,
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1070 collision_func new_collision, void *sgroot_)
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1071 {
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1072 this->move = new_move;
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1073 this->collision = new_collision;
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1074 // add
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1075 this->sgroot = sgroot_;
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1076 }
7a311860a76e remove global variable "sgroot" , add SgChange.{cc, h} SgMain.cc SgRootChange.{cc, h}
hiroki@henri.cr.ie.u-ryukyu.ac.jp
parents: 580
diff changeset
1077
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1078 void
759
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1079 SceneGraph::set_move_collision(move_func new_move,
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1080 collision_func new_collision, create_sg_func new_create_sg)
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1081 {
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1082 this->move = new_move;
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1083 this->collision = new_collision;
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1084 this->create_sg = new_create_sg;
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1085 }
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1086
45f7ab7101ea first of all commit, not work Rendering/Test/create_task
hiroki
parents: 724
diff changeset
1087 void
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1088 SceneGraph::add_next(SceneGraphPtr next)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1089 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1090 /* next のリストの最後に加える */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1091 if (this->next != NULL) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1092 SceneGraphPtr tmp = this->last;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1093 tmp->next = next;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1094 } else {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1095 this->next = next;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1096 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1097
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1098 this->last = next;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1099 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1100
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1101 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1102 * SceneGraph の clone
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1103 * @return clone SceneGraph
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1104 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1105 SceneGraphPtr
1136
f326494ffdc7 not work ieshoot. not check Cell
Yutaka_Kinjyo
parents: 1130
diff changeset
1106 SceneGraph::clone(TaskManager *manager) {
f326494ffdc7 not work ieshoot. not check Cell
Yutaka_Kinjyo
parents: 1130
diff changeset
1107
1169
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
1108 SceneGraphPtr p = new SceneGraph(manager, this);
1136
f326494ffdc7 not work ieshoot. not check Cell
Yutaka_Kinjyo
parents: 1130
diff changeset
1109
1140
3975c384ff93 SceneGraph initalize... can worked on Mac OS X. not check Cell arch.
Yutaka_Kinjyo
parents: 1136
diff changeset
1110
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1111 return p;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1112 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1113
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1114 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1115 * SceneGraph の clone
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1116 * 予め allocate されてる領域への placement new を行う
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1117 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1118 * @param buf clone 領域
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1119 * @return clone SceneGraph
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1120 */
1169
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
1121
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1122 SceneGraphPtr
1169
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
1123 SceneGraph::clone(TaskManager *manager, void *buf) {
b93ff55ba015 free TaskArray rbuf
Yutaka_Kinjyo
parents: 1166
diff changeset
1124 SceneGraphPtr p = new(buf) SceneGraph(manager, this);
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1125 return p;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1126 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1127
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1128 void
724
6e9e4726113e Small clean up of Rendering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 653
diff changeset
1129 SceneGraph::remove()
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1130 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1131 this->flag_remove = 1;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1132 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1133
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1134 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1135 * tree から node を削除する
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1136 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1137 * @param tree SceneGraphTree
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1138 * @return node削除後の SceneGraphTree
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1139 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1140 SceneGraphPtr
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1141 SceneGraph::realRemoveFromTree(SceneGraphPtr tree)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1142 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1143 SceneGraphPtr node = this;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1144 SceneGraphPtr parent = node->parent;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1145 SceneGraphPtr ret = tree;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1146
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1147 if (parent) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1148 SceneGraphPtr brother = parent->children;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1149 SceneGraphPtr p, p1 = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1150
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1151 p = brother;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1152 if (p) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1153 if (p == node) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1154 parent->children = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1155 parent->lastChild = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1156 } else {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1157 p1 = p->brother;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1158
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1159 while (p1 && p1 != node) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1160 p1 = p1->brother;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1161 p = p->brother;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1162 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1163
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1164 if (p1) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1165 p->brother = p1->brother;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1166
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1167 // node が最後尾なら、lastChild を変更
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1168 if (parent->lastChild == p1) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1169 parent->lastChild = p;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1170 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1171 } else {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1172 // Can't find remove node
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1173 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1174 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1175 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1176 } else {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1177 // 親が居ない = tree root なので
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1178 // NULL を返す
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1179 ret = NULL;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1180 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1181
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1182 return ret;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1183 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1184
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1185 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1186 * list から node を削除する
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1187 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1188 * @param list SceneGraphList
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1189 * @return node削除後の SceneGraphList
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1190 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1191 SceneGraphPtr
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1192 SceneGraph::realRemoveFromList(SceneGraphPtr list)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1193 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1194 SceneGraphPtr node = this;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1195 SceneGraphPtr prev = node->prev;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1196 SceneGraphPtr next = node->next;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1197 SceneGraphPtr ret = list;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1198
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1199 if (prev) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1200 prev->next = next;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1201 } else {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1202 ret = next;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1203 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1204
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1205 if (next) {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1206 next->prev = prev;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1207 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1208
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1209 return ret;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1210 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1211
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1212 int
724
6e9e4726113e Small clean up of Rendering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 653
diff changeset
1213 SceneGraph::isRemoved()
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1214 {
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1215 return flag_remove;
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1216 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1217
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1218 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1219 * 平行移動
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1220 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1221 * @param x Ttranslate in the x direction
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1222 * @param y Ttranslate in the y direction
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1223 * @param z Ttranslate in the z direction
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1224 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1225 void
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1226 SceneGraph::translate(float x, float y, float z)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1227 {
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
1228 this->matrix[12] += x;
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
1229 this->matrix[13] += y;
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
1230 this->matrix[14] += z;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1231 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1232
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1233 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1234 * x 軸方向への平行移動
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1235 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1236 * @param x Ttranslate in the x direction
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1237 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1238 void
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1239 SceneGraph::translateX(float x)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1240 {
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
1241 this->matrix[12] += x;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1242 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1243
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1244 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1245 * y 軸方向への平行移動
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1246 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1247 * @param y Ttranslate in the y direction
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1248 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1249 void
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1250 SceneGraph::translateY(float y)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1251 {
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
1252 this->matrix[13] += y;
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1253 }
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1254
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1255 /**
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1256 * z 軸方向への平行移動
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1257 *
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1258 * @param z Ttranslate in the z direction
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1259 */
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1260 void
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1261 SceneGraph::translateZ(float z)
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1262 {
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
1263 this->matrix[14] += z;
1226
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1264 }
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1265
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1266 void
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
1267 SceneGraph::angleIt(float xangle, float yangle, float zangle)
1226
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1268 {
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1269 float m[16];
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1270 float t[4] = {0,0,0,0};
1351
e51127dbd63c operate directly on matrix. not work yet.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1336
diff changeset
1271 float angle[4] = {xangle, yangle, zangle, 1};
1226
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1272 for(int i=0;i<16;i++) m[i] = matrix[i];
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1273 get_matrix(matrix, angle, t, m);
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1274 }
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1275
1367
6748a09c63cb minor change
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1366
diff changeset
1276
6748a09c63cb minor change
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1366
diff changeset
1277 // 今の SceneGraph の構造だと、親のスケーリングが子に繁栄される。
1226
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1278 void
1366
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1279 SceneGraph::scaleIt(float sx, float sy, float sz)
1226
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1280 {
1366
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1281
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1282 float scale[3] = {sx, sy, sz};
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1283
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1284 /*
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1285 * | sx*r sx*r sx*r 0 |
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1286 * | sy*r sy*r sy*r 0 |
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1287 * | sz*r sz*r sz*r 0 |
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1288 * | t t t 1 |
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1289 */
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1290
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1291 for(int i=0;i<3;i++) {
ba6c080bf9a4 work scale api.
Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp>
parents: 1351
diff changeset
1292 for(int j=0;j<3;j++) {
1226
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1293 matrix[i*4+j] = matrix[i*4+j]*scale[i];
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1294 }
636dfdc30176 new API for SceneGraph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1211
diff changeset
1295 }
539
3bc98f6d31ff Reorganization..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1296 }
724
6e9e4726113e Small clean up of Rendering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 653
diff changeset
1297
6e9e4726113e Small clean up of Rendering Engine
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 653
diff changeset
1298 /* end */