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