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