Mercurial > hg > old > magoroku_racing.bad
annotate gSprite.cc @ 132:d84ee8b2cfd9
camera position update
author | Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 21 Jul 2011 17:25:59 +0900 |
parents | 586d68c42c5d |
children | e7caa277d7e8 |
rev | line source |
---|---|
116 | 1 //SgoexCerium.ccより |
2 #include "matrix_calc.h" | |
3 #include "TaskManager.h" | |
4 #include "SceneGraph.h" | |
5 #include "Application.h" | |
119 | 6 #include <iostream> |
116 | 7 |
0 | 8 #include <stdio.h> |
9 #include <stdlib.h> | |
91 | 10 #include "libps2.h" |
11 #include "ps2util.h" | |
0 | 12 #include "gSprite.h" |
90
8edae89a3877
compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
88
diff
changeset
|
13 #include <stdbool.h> |
0 | 14 |
128 | 15 #include "camera.h" |
16 | |
122 | 17 #define DEFOBJ 100 |
18 #define SPRITE_COL 0x4f | |
19 #define SCREEN_HALF_W 320 | |
20 #define SCREEN_HALF_H 240 | |
0 | 21 |
122 | 22 static SpriteTable sptable[DEFOBJ]; |
23 static ps2utilSprite sp[DEFOBJ]; // 表示スプライト用スタック | |
24 static unsigned int sp_counter; | |
25 static bool flag_spriteInited = false; // スプライトロードフラグ | |
0 | 26 |
115 | 27 //static TEXTURE *sprite_tex; |
0 | 28 |
122 | 29 extern Viewer *droot; |
116 | 30 |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
31 /*static*/SceneGraphPtr root; |
116 | 32 |
122 | 33 static float my_scale = 5; |
116 | 34 |
130 | 35 |
36 static FVECTOR cameraMan_pos = { 0, 0, 0, 1 }; | |
37 static FVECTOR cameraMan_angle = { 0, 0, 0, 1 }; | |
116 | 38 |
128 | 39 FVECTOR def_cameraMan = { 0, 0, 0, 1 }; |
40 | |
41 void set_cameraMan( void ); | |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
42 CameraPtr camera;// = droot->sgroot->getCamera(); |
128 | 43 |
44 // SgoexCerium.ccより | |
130 | 45 // カメラの更新はここでやれば良いんだろうね |
46 void flip() | |
116 | 47 { |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
48 |
116 | 49 |
128 | 50 droot->sgroot->flip(); // 前フレームで描画した SceneGraph は削除 |
51 // 前フレームに作られた SceneGraph は描画用に移行 | |
52 // 現フレームで新しく SceneGraph がコピーされるので初期化 | |
53 | |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
54 camera = droot->sgroot->getCamera();// |
119 | 55 droot->sgroot->lightCalc(); |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
56 |
128 | 57 // rootって変数にカメラの位置設定してるんかな? |
58 // じゃあ camera ってなによ | |
122 | 59 root = droot->createSceneGraph(); |
128 | 60 |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
61 //root->xyz[0] = 100; |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
62 //root->xyz[1] = 200; |
128 | 63 |
64 set_cameraMan( ); | |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
65 |
130 | 66 /* |
128 | 67 // カメラの設定は後回しにします意味わからん |
68 // magoroku_camera | |
69 CAMERA mc = get_MagorokuCamera(); | |
70 for( int i = 0; i < 4; i ++ ){ | |
71 root->xyz[i] = mc.xyz[i]; | |
72 root->angle[i] = mc.angle[i]; | |
73 | |
130 | 74 // camera->zd[i] = mc.zd[i]; |
75 //camera->yd[i] = mc.yd[i]; | |
128 | 76 } |
130 | 77 */ |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
78 //droot->createStringFont(root,"A",80,200,100,0x00ff00ff); |
119 | 79 /*親の回転、座標から、子の回転、座標を算出*/ |
80 get_matrix(root->matrix, root->angle, root->xyz, camera->matrix); | |
128 | 81 |
119 | 82 /*法線用の行列。Cameraの行列を抜いている(Cameraのコンストラクタで、単位行列にしている)*/ |
83 get_matrix(root->real_matrix, root->angle, root->xyz, camera->real_matrix); | |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
84 |
119 | 85 //出力して、次のものを出力するための準備 |
86 droot->setSceneData(root); | |
116 | 87 } |
88 | |
124 | 89 // rootのポインターを返す |
90 SceneGraphPtr getRootPtr( void ) | |
91 { | |
92 return root; | |
93 } | |
116 | 94 |
128 | 95 /* |
96 n==0 retrun x | |
97 n==1 return y | |
98 n==2 return z | |
99 n==3 ? | |
100 */ | |
101 float get_cameraPos( int n ) | |
102 { | |
103 float num; | |
104 | |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
105 if( n >= 0 && n <= 3 ) num = /*root->xyz[n]*/camera->xyz[n]; |
128 | 106 else num = 0; |
107 | |
108 return num; | |
109 } | |
110 | |
111 // カメラの位置設定 | |
112 void set_cameraMan( void ) | |
0 | 113 { |
128 | 114 // window_posの略 |
115 FVECTOR wp = {0,0, 1000, 1}; | |
116 | |
130 | 117 for( int i = 0; i < 4; i ++ ){ |
118 // root->xyz[i] = -cameraMan[i] + wp[i]; | |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
119 /*root*/camera->xyz[i] = cameraMan_pos[i]; |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
120 /*root*/camera->angle[i] = cameraMan_angle[i]; |
128 | 121 } |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
122 |
128 | 123 } |
124 | |
125 // カメラの位置を引数のヤツに追従する | |
130 | 126 // ここではcameraManって変数に数値をコピーさせてるだけ |
127 void set_cameraPos( FVECTOR newCameraMan_pos, FVECTOR newCameraMan_angle ) | |
128 | 128 { |
129 for( int i = 0; i < 4; i ++ ){ | |
130 | 130 cameraMan_pos[i] = newCameraMan_pos[i]; |
131 cameraMan_angle[i] = newCameraMan_angle[i]; | |
128 | 132 } |
133 } | |
116 | 134 |
135 void | |
136 gSprite_DefSprite(int number, const char *name, float w, float h, int color)//, OBJECT *obj) | |
137 { | |
122 | 138 SpriteTable *m = &sptable[number]; |
139 m->w = w; | |
140 m->h = h; | |
141 m->color = (color & 32); | |
142 m->mx = w / 2; //画像の中心を座標としたいらしい。 | |
143 m->my = h / 2; | |
144 m->tex_w = power_of_two(m->w); | |
145 m->tex_h = power_of_two(m->h); | |
146 m->texture = (int *)name; | |
0 | 147 } |
148 | |
128 | 149 void gSprite_PutSprite(bool ScreenPos, int number, int x, int y, int z, int test) |
116 | 150 { |
151 SpriteTable *m = &sptable[number]; | |
118 | 152 |
116 | 153 char *name = (char *) m->texture; |
154 if (!name) { | |
155 printf("PutSprite %d unknown\n",number); | |
156 return; | |
157 } | |
119 | 158 |
116 | 159 SceneGraphPtr object = droot->createSceneGraph(name); |
119 | 160 |
124 | 161 // ズレ直し? |
122 | 162 /* |
124 | 163 object->c_xyz[0] = m->mx; |
164 object->c_xyz[1] = m->my; | |
165 | |
119 | 166 object->xyz[0] -= object->c_xyz[0]*my_scale; |
167 object->xyz[1] -= object->c_xyz[1]*my_scale; | |
168 object->xyz[2] -= object->c_xyz[2]; | |
124 | 169 |
119 | 170 object->xyz[0] += x+m->mx; |
171 object->xyz[1] += y+m->my; | |
122 | 172 |
124 | 173 // object->xyz[2] += zorder * 0.01; |
174 */ | |
128 | 175 |
122 | 176 object->xyz[0] = x; |
177 object->xyz[1] = y; | |
124 | 178 object->xyz[2] = z; |
128 | 179 |
180 // 画面からの座標で表示したい場合 | |
181 if( ScreenPos == true ){ | |
182 for( int i = 0; i < 3; i ++ ){ | |
183 object->xyz[i] -= get_cameraPos(i); | |
184 } | |
185 } | |
122 | 186 root->addChild(object); |
116 | 187 |
118 | 188 float scale[] = {my_scale,my_scale,1}; |
130 | 189 |
190 if(test == 1){ | |
191 SceneGraphPtr wheel1 = droot->createSceneGraph("Cylinder.006"); | |
192 for( int i = 0; i < 3; i ++ ){ | |
193 wheel1->xyz[i] = object->xyz[i]; | |
194 } | |
195 root->addChild(wheel1); | |
196 //object->addChild(wheel1); | |
197 | |
198 /*親の回転、座標から、子の回転、座標を算出*/ | |
199 get_matrix_scale(wheel1->matrix, wheel1->angle, wheel1->xyz, scale, root->matrix); | |
200 | |
201 /*法線用の行列。Cameraの行列を抜いている(Cameraのコンストラクタで、単位行列にしている)*/ | |
202 get_matrix(wheel1->real_matrix, wheel1->angle, wheel1->xyz, root->real_matrix); | |
203 } | |
204 | |
205 | |
206 // float scale[] = {my_scale,my_scale,1}; | |
116 | 207 //float c_xyz[] = {0,0,0}; |
128 | 208 |
209 //float c_xyz[] = {0,0,0}; | |
116 | 210 //scale_matrix(object->matrix, scale, c_xyz); |
211 | |
212 /*親の回転、座標から、子の回転、座標を算出*/ | |
118 | 213 get_matrix_scale(object->matrix, object->angle, object->xyz, scale, root->matrix); |
116 | 214 |
215 /*法線用の行列。Cameraの行列を抜いている(Cameraのコンストラクタで、単位行列にしている)*/ | |
119 | 216 get_matrix(object->real_matrix, object->angle, object->xyz, root->real_matrix); |
217 | |
0 | 218 } |
219 | |
130 | 220 void gSprite_PutObject( int number, OBJECT *obj ) |
128 | 221 { |
130 | 222 /* |
223 SpriteTable *m = &sptable[number]; | |
128 | 224 |
225 char *name = (char *) m->texture; | |
226 if (!name) { | |
130 | 227 printf("PutSprite %d unknown\n",100); |
128 | 228 return; |
229 } | |
130 | 230 */ |
128 | 231 |
130 | 232 // どっちにするべき? |
233 //SceneGraphPtr sgObj = droot->createSceneGraph(); | |
234 SceneGraphPtr sgObj = droot->createSceneGraph(obj->partName[0]); | |
128 | 235 |
236 for( int i = 0; i < 4; i ++ ){ | |
237 sgObj->xyz[i] = obj->xyz[i]; | |
238 | |
239 for( int j = 0; j < 4; j ++ ){ | |
240 // sgObj->matrix[(i*4)+j] = obj->transfer[i][j]; | |
241 } | |
242 | |
243 sgObj->stack_angle[i] = obj->angle[i]; | |
244 } | |
245 | |
130 | 246 // とりあえず画面の真ん中にしたい |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
247 //sgObj->xyz[0] += 100; |
130 | 248 //sgObj->xyz[1] += 100; |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
249 //sgObj->xyz[2] += 0; |
130 | 250 |
251 memcpy( sgObj->matrix, obj->transfer, sizeof(FMATRIX) ); | |
128 | 252 |
253 root->addChild(sgObj); | |
0 | 254 |
128 | 255 float scale[] = {my_scale,my_scale,1}; |
129 | 256 |
130 | 257 // パーツ生成 |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
258 for( int i = 1; i < obj->partNum; i ++ ){ |
130 | 259 SceneGraphPtr part = droot->createSceneGraph(obj->partName[i]); |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
260 for(int t=0; t < 3; t++){ |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
261 part->xyz[t] = sgObj->xyz[t]; |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
262 part->angle[t] = sgObj->angle[t]; |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
263 } |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
264 printf("obj_name:%s\n",obj->partName[i]); |
130 | 265 // addChildの意味? |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
266 |
130 | 267 /*親の回転、座標から、子の回転、座標を算出*/ |
268 get_matrix_scale(part->matrix, part->angle, part->xyz, scale, root->matrix); | |
128 | 269 |
130 | 270 /*法線用の行列。Cameraの行列を抜いている(Cameraのコンストラクタで、単位行列にしている)*/ |
271 get_matrix(part->real_matrix, part->angle, part->xyz, root->real_matrix); | |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
272 //root->addChild(part); |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
273 sgObj->addChild(part); |
130 | 274 } |
128 | 275 |
276 | |
130 | 277 // 親の回転、座標から、子の回転、座標を算出 |
128 | 278 get_matrix_scale(sgObj->matrix, sgObj->angle, sgObj->xyz, scale, root->matrix); |
279 | |
130 | 280 // 法線用の行列。Cameraの行列を抜いている(Cameraのコンストラクタで、単位行列にしている) |
128 | 281 get_matrix(sgObj->real_matrix, sgObj->angle, sgObj->xyz, root->real_matrix); |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
282 // |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
283 |
128 | 284 } |
285 | |
116 | 286 |
287 void | |
128 | 288 gSprite_PutSpriteEx(bool ScreenPos,int number, int x, int y, int z, float scalex, float scaley, float angle) |
116 | 289 { |
290 if (1) { | |
128 | 291 gSprite_PutSprite(ScreenPos,number, x, y, z, 0); |
116 | 292 return; |
293 } | |
294 | |
295 SpriteTable *m = &sptable[number]; | |
296 char *name = (char *) m->texture; | |
297 if (!name) { | |
298 printf("PutSpriteEx %d unknown\n",number); | |
299 return; | |
300 } | |
301 SceneGraphPtr object = droot->createSceneGraph(name); | |
302 root->addChild(object); | |
303 | |
304 float scale[] = {my_scale*scalex*4,my_scale*scaley*4,1}; | |
305 | |
306 /*親の回転、座標から、子の回転、座標を算出*/ | |
307 object->xyz[0] = x - object->c_xyz[0] * my_scale - m->w*my_scale; | |
308 object->xyz[1] = y - object->c_xyz[1] * my_scale - m->h*my_scale; | |
309 object->xyz[2] = number * 0.01; | |
310 //object->c_xyz[0] = m->mx; | |
311 //object->c_xyz[1] = m->my; | |
312 object->angle[3] = angle * (3.1415926*2/4096); | |
313 get_matrix(object->matrix, object->angle, object->xyz, root->matrix); | |
314 float c_xyz[] = {0,0,0}; | |
315 scale_matrix(object->matrix, scale, c_xyz); | |
316 /*法線用の行列。Cameraの行列を抜いている(Cameraのコンストラクタで、単位行列にしている)*/ | |
317 // get_matrix(object->real_matrix, object->angle, object->xyz, root->real_matrix); | |
0 | 318 } |
319 | |
116 | 320 |
128 | 321 //ここいらはどうやら、スプライトを取得する部分。 |
322 /* | |
323 static void | |
324 gSprite_Init_Png(const char *texname) | |
325 { | |
326 if (!(sprite_tex = read_png_file(texname))) { | |
327 fprintf(stderr, | |
328 "cannot creat texture - init_png().\n"); | |
329 fflush(stderr); | |
330 exit(EXIT_FAILURE); | |
331 } | |
116 | 332 |
333 | |
128 | 334 if (ps2util_tex_Set(sprite_tex) == -1) { |
335 fprintf(stderr, | |
336 "cannot set texture - init_png().\n"); | |
337 fflush(stderr); | |
338 exit(EXIT_FAILURE); | |
339 } | |
116 | 340 |
341 | |
128 | 342 } |
343 */ | |
95 | 344 |
128 | 345 /* |
346 static void | |
347 gSprite_Create() | |
348 { | |
349 int i; | |
0 | 350 |
128 | 351 for (i=0; i<DEFOBJ; i++) { |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
352 if (ps2util_sprite_Create(&sp[i], sprite_tex) == -1) { |
128 | 353 fprintf(stderr, |
354 "cannot create sprite No.%d - create_sprite()\n", i); | |
355 fflush(stderr); | |
356 exit(EXIT_FAILURE); | |
0 | 357 } |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
358 ps2util_sprite_Unuse_alpha(&sp[i]); |
128 | 359 } |
116 | 360 |
128 | 361 flag_spriteInited = false; |
116 | 362 |
128 | 363 } |
364 */ | |
116 | 365 |
0 | 366 |
95 | 367 void |
0 | 368 gSprite_Init() |
369 { | |
119 | 370 droot->createFromXMLfile("xml_file/title.xml"); |
371 | |
122 | 372 droot->createFromXMLfile("xml_file/select.xml"); |
373 droot->createFromXMLfile("xml_file/sp_meter.xml"); | |
374 droot->createFromXMLfile("xml_file/r_arrow.xml"); | |
375 droot->createFromXMLfile("xml_file/l_arrow.xml"); | |
376 droot->createFromXMLfile("xml_file/km.xml"); | |
377 droot->createFromXMLfile("xml_file/rap.xml"); | |
378 droot->createFromXMLfile("xml_file/1p.xml"); | |
379 droot->createFromXMLfile("xml_file/2p.xml"); | |
380 droot->createFromXMLfile("xml_file/select_car_1.xml"); | |
381 droot->createFromXMLfile("xml_file/select_car_2.xml"); | |
382 droot->createFromXMLfile("xml_file/select_car_3.xml"); | |
383 droot->createFromXMLfile("xml_file/select_corse_1.xml"); | |
384 droot->createFromXMLfile("xml_file/select_corse_2.xml"); | |
385 | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
386 ps2util_graphic_Init(); |
116 | 387 //gSprite_Init_Png("img/main2.png"); |
388 //gSprite_Create(); // スプライト生成 | |
118 | 389 |
119 | 390 // testCoeler |
122 | 391 int tc = 1; |
392 | |
128 | 393 gSprite_DefSprite( TITLE, "title", 512, 666, tc); // タイトル |
122 | 394 gSprite_DefSprite( SELECT, "select", 33, 33, tc); // 選択マーク |
395 gSprite_DefSprite( SP_METER, "sp_meter", 106, 34, tc); // スピードメーター | |
396 gSprite_DefSprite( R_ARROW, "r_arrow", 18, 20, tc); // 右矢印 | |
397 gSprite_DefSprite( L_ARROW, "l_arrow", 17, 20, tc); // 左矢印 | |
398 gSprite_DefSprite( KM, "km", 55, 26, tc); // km/h | |
399 gSprite_DefSprite( RAP, "rap", 39, 26, tc); // Rap | |
126 | 400 gSprite_DefSprite( PLAYER_1, "1P", 53, 46, tc); // 1p |
401 gSprite_DefSprite( PLAYER_2, "2P", 53, 46, tc); // 2P | |
122 | 402 gSprite_DefSprite( SELECT_CAR_1, "select_car_1", 165, 140, tc); // 選択画面の車 |
403 gSprite_DefSprite( SELECT_CAR_2, "select_car_2", 165, 140, tc); | |
404 gSprite_DefSprite( SELECT_CAR_3, "select_car_3", 165, 140, tc); | |
405 gSprite_DefSprite( SELECT_CORSE_1, "select_corse_1", 148, 114, tc); // 選択画面のコース | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
406 // 本当は (82, 272,...)です。二つ目のコース絵がないので |
122 | 407 gSprite_DefSprite( SELECT_CORSE_2, "select_corse_2", 148, 114 ,tc); |
0 | 408 |
95 | 409 } |
90
8edae89a3877
compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
88
diff
changeset
|
410 |
0 | 411 static void |
412 gSprite_Clear() | |
413 { | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
414 int i; |
0 | 415 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
416 for (i=0; i<DEFOBJ; i++) { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
417 sprite_disappear(&sp[i].attribute); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
418 } |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
419 sp_counter = 0; |
0 | 420 } |
95 | 421 |
116 | 422 |
423 | |
0 | 424 void |
425 gSprite_Draw_Reset() | |
426 { | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
427 if (flag_spriteInited == true) { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
428 gSprite_Clear(); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
95
diff
changeset
|
429 } |
0 | 430 } |
95 | 431 |
0 | 432 |
116 | 433 |
0 | 434 void |
435 gSprite_PutSprite_Pause() | |
436 { | |
437 } | |
128 | 438 |
439 // xmlファイルから読み込み | |
440 void call_createFromXMLfile( char *filename ) | |
441 { | |
442 droot->createFromXMLfile(filename); | |
443 } | |
444 | |
130 | 445 |
128 | 446 // createScenGraphe()する |
130 | 447 /* |
128 | 448 OBJECT* call_createSceneGraph( char *filename ) |
449 { | |
130 | 450 OBJECT *obj; |
128 | 451 obj = droot->createSceneGraph(filename); |
452 | |
453 return obj; | |
454 } | |
455 | |
130 | 456 |
457 // createScenGraphe()する | |
128 | 458 OBJECT* call_createSceneGraph( void ) |
459 { | |
130 | 460 OBJECT *obj; |
128 | 461 obj = droot->createSceneGraph(); |
462 | |
463 return obj; | |
464 } | |
130 | 465 */ |
466 | |
467 #include "controler.h" | |
468 // controler.cより | |
469 extern SGO_PAD pad; | |
470 | |
471 // テスト用関数 | |
472 void cameraControl( void ) | |
473 { | |
474 FVECTOR xyz; | |
475 FVECTOR angle; | |
476 | |
477 for( int i = 0; i < 4; i ++ ){ | |
478 xyz[i] = cameraMan_pos[i]; | |
479 angle[i] = cameraMan_angle[i]; | |
480 } | |
481 | |
482 float speed = 1.0f; | |
483 | |
484 bool esc = false; | |
485 | |
486 if( pad.se > 0 ){ | |
487 esc = true; | |
488 printf("press selectButton\n"); | |
489 } | |
490 | |
491 if( pad.l1 > 0 ){ | |
492 speed = 10.0f; | |
493 printf("press W_key\n"); | |
494 } | |
495 | |
496 if( pad.left > 0 ){ | |
497 if ( esc == true ) angle[0] -= speed; | |
498 else xyz[0] -= speed; | |
499 } | |
500 if( pad.right > 0 ){ | |
501 if ( esc == true ) angle[0] += speed; | |
502 else xyz[0] += speed; | |
503 } | |
504 | |
505 if( pad.up > 0 ){ | |
506 if ( esc == true ) angle[1] -= speed; | |
507 else xyz[1] -= speed; | |
508 } | |
509 if( pad.down > 0 ){ | |
510 if ( esc == true ) angle[1] += speed; | |
511 else xyz[1] += speed; | |
512 } | |
513 | |
514 if( pad.circle > 0 ){ | |
515 if ( esc == true ) angle[2] += speed; | |
516 else xyz[2] += speed; | |
517 } | |
518 if( pad.cross > 0 ){ | |
519 if ( esc == true ) angle[2] -= speed; | |
520 else xyz[2] -= speed; | |
521 } | |
522 | |
523 for( int i = 0; i < 3; i ++ ){ | |
524 if (angle[i] > 360.0f || angle[i] < -360.0f ) { | |
525 angle[i] = 0.0f; | |
526 } | |
527 } | |
528 | |
529 for( int i = 0; i < 4; i ++ ){ | |
530 | |
531 cameraMan_pos[i] = xyz[i]; | |
532 cameraMan_angle[i] = angle[i]; | |
533 } | |
534 | |
535 for( int i = 0; i < 4; i ++ ){ | |
536 printf("cameraPos[%d] = %f ", i, cameraMan_pos[i] ); | |
537 } | |
538 printf("\n"); | |
539 | |
540 for( int i = 0; i < 4; i ++ ){ | |
541 printf("cameraAngle[%d] = %f ", i, cameraMan_angle[i] ); | |
542 } | |
543 printf("\n"); | |
544 | |
545 | |
546 } |