Mercurial > hg > old > magoroku_racing.bad
annotate field.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 |
rev | line source |
---|---|
0 | 1 #include <stdio.h> |
2 #include <stdlib.h> | |
90
8edae89a3877
compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
88
diff
changeset
|
3 #include <stdbool.h> |
91 | 4 #include <string.h> |
5 #include "libps2.h" | |
6 #include "ps2util.h" | |
0 | 7 #include "mytype.h" |
8 #include "field.h" | |
9 #include "car.h" | |
10 #include "quotanion.h" | |
90
8edae89a3877
compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
88
diff
changeset
|
11 #include <stdbool.h> |
0 | 12 |
130 | 13 #include "gSprite.h" |
14 #include "getStrFromFile.h" | |
15 | |
126 | 16 |
0 | 17 #define BUFSIZE 256 |
18 | |
19 /* --- main.c --- */ | |
20 extern FILE *main_fp; | |
21 | |
128 | 22 // コース一周分のfieldの数 |
0 | 23 static int field_num_max = 0; |
128 | 24 |
25 // 自分が走ったfieldの数のカウント | |
26 // field_num_max > field_num になったら一周って意味かも。違うかも | |
0 | 27 static int field_num = 1; |
28 | |
128 | 29 // FieldPtrのroot部分を指し示してるんだともう |
0 | 30 static FieldPtr field_list; |
128 | 31 |
32 // 現在走ってるfield | |
0 | 33 static FieldPtr field_actual; |
91 | 34 |
126 | 35 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
36 // 適当に自作:miya |
124 | 37 PolygonInfo* xml_read_file(char *colImg) |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
38 { |
124 | 39 PolygonInfo* test; |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
40 printf("xml_read_file"); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
41 |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
42 return test; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
43 } |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
44 |
124 | 45 |
130 | 46 /* |
47 static FieldPtr | |
48 field_create(char *fieldImg, char *colImg )// OBJECT *tex) | |
49 { | |
124 | 50 FieldPtr self; |
51 OBJECT *obj; | |
52 void *free_addr; | |
0 | 53 |
126 | 54 // 初期化 |
55 droot->createFromXMLfile(fieldImg); | |
130 | 56 obj = droot->createSceneGraph("hoge"); |
124 | 57 |
126 | 58 droot->createFromXMLfile(colImg); |
130 | 59 |
60 // OBJECT *col_obj = droot->createSceneGraph("hoge"); | |
61 SceneGraphPtr col_obj = droot->createSceneGraph("hoge"); | |
62 | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
63 if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) { |
130 | 64 fprintf(stderr, "field.c: malloc_align16 error\n"); |
65 fflush(stderr); | |
66 exit(EXIT_FAILURE); | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
67 } |
124 | 68 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
69 self->object = obj; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
70 self->next = NULL; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
71 self->prev = NULL; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
72 self->free_addr = free_addr; |
130 | 73 #ifdef DEBUG |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
74 fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self); |
130 | 75 #endif |
124 | 76 |
128 | 77 printf("col_init()の直前!\n"); |
124 | 78 // ちょっと今だけコメント --- |
126 | 79 col_init(&self->colface, col_obj); |
0 | 80 |
130 | 81 #ifdef DEBUG |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
82 fprintf(main_fp, " facenum = %d\n", self->colface.facenum); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
83 fprintf(main_fp, " facenum = %x(free), ", (int)self->colface.free_addr); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
84 fprintf(main_fp, "facenum = %x(obj)\n", (int)self->colface.colface); |
130 | 85 #endif |
34 | 86 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
87 return self; |
130 | 88 } |
89 */ | |
0 | 90 |
128 | 91 |
92 static FieldPtr | |
130 | 93 field_create(char *fieldImg, char *colImg, int number )//, TEXTURE* tex) |
128 | 94 { |
95 FieldPtr self; | |
96 OBJECT *obj; | |
97 PolygonInfo *xml; | |
98 void *free_addr; | |
99 | |
100 FVECTOR location = {0, 0, 0, 1}; | |
101 FVECTOR direction = {0, 0, 0, 1}; | |
102 | |
103 // 今はなにもしてない. | |
104 obj = ps2util_obj_Create_fromXML(fieldImg); | |
105 ps2util_obj_Set_effect(obj, DEFAULT_SET); | |
106 // ps2util_obj_Set_texture(obj, tex); | |
107 | |
130 | 108 |
128 | 109 obj = (OBJECT*)malloc(sizeof(OBJECT)); |
130 | 110 |
111 // xmlから読み込み | |
112 call_createFromXMLfile(fieldImg); | |
113 | |
114 const char *sStr = "surface name=\""; // この文字列の直後の文字列を取得する | |
115 const char *eStr = "\" size="; // この文字列の直前までの文字列を抜き取る | |
116 | |
117 // xmlファイルから surface name と 数を取得する | |
118 obj->partNum = getStrFromFile( obj->partName, fieldImg, sStr, eStr ); | |
119 | |
120 /* | |
121 char *objName; // xmf内のsurfaceの名前を入れる. オブジェクト名。 | |
122 | |
123 int objNum = 3; // kinokoコースは一つのxmlファイルに3つずつのsurfaceがある | |
124 // rainbowなら2こずつ | |
125 | |
126 for( int i = 1; i < objNum+1; i ++ ){ | |
127 sprintf(objName, "course_%d_%d", number+1, i ); | |
128 if( i == 1 ) | |
129 obj->name = objName; // obj->nameってcourse1_1か、course1_3かどっちがいいかな | |
130 | |
131 // これキノココースしか適応できてない。他のコースでも汎用できるアルゴリズム欲しい | |
132 gSprite_DefSprite( COURSE1_1+(number*objNum)+i, objName, 100, 100, 1 ); | |
133 } | |
134 */ | |
135 | |
128 | 136 |
137 memcpy(obj->xyz, location, sizeof(FVECTOR)); | |
138 memcpy(obj->angle, direction, sizeof(FVECTOR)); | |
139 | |
140 ps2util_obj_Renew_transMatrix(obj); | |
141 | |
142 // ここでxml->sizの数も数えてたんだろうね | |
143 xml = xml_read_file(colImg); // | |
144 | |
130 | 145 if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1 ) { |
128 | 146 fprintf(stderr, "field.c: malloc_align16 error\n"); |
147 fflush(stderr); | |
148 exit(EXIT_FAILURE); | |
149 } | |
130 | 150 |
128 | 151 self->object = obj; |
152 self->next = NULL; | |
153 self->prev = NULL; | |
154 self->free_addr = free_addr; | |
155 #ifdef DEBUG | |
156 fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self); | |
157 #endif | |
158 | |
159 col_init(&self->colface, xml); | |
160 | |
161 #ifdef DEBUG | |
162 fprintf(main_fp, " facenum = %d\n", self->colface.facenum); | |
163 fprintf(main_fp, " facenum = %x(free), ", (int)self->colface.free_addr); | |
164 fprintf(main_fp, "facenum = %x(obj)\n", (int)self->colface.colface); | |
165 #endif | |
166 //xml_free(xml); | |
167 return self; | |
168 } | |
169 | |
0 | 170 static void |
32 | 171 field_new_readCSV(FILE *fp, int id) |
0 | 172 { |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
173 FieldPtr fieldHead = NULL; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
174 FieldPtr newField = NULL; |
124 | 175 FieldPtr prevField = NULL; |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
176 char buff[BUFSIZE], *bufp; |
124 | 177 char fieldImg[BUFSIZE], colImg[BUFSIZE];//, texname[BUFSIZE]; |
115 | 178 |
179 //TEXTURE *tex = NULL; | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
180 int course_id; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
181 bool flag = false; |
0 | 182 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
183 while ((bufp = fgets(buff, BUFSIZE, fp)) != NULL) { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
184 bufp++; |
0 | 185 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
186 switch (buff[0]) { |
124 | 187 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
188 case 'n': // コースIDの読み取り |
124 | 189 if (flag == false) { |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
190 sscanf(bufp, " %d\n", &course_id); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
191 if (id == course_id) { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
192 flag = true; |
0 | 193 } |
124 | 194 } |
195 else { | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
196 goto FINISH_LOAD; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
197 } |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
198 break; |
115 | 199 |
200 /* | |
124 | 201 case 't': // テクスチャのロード |
202 if (flag) { | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
203 sscanf(bufp, " %s\n", texname); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
204 //tex = read_png_file(texname); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
205 ps2util_tex_Set(tex); |
124 | 206 } |
207 break; | |
115 | 208 */ |
209 | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
210 case 'c': // コースのロード |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
211 if (flag) { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
212 sscanf(bufp, " %s %s\n", fieldImg, colImg); |
124 | 213 |
130 | 214 // field_num_max 番目のコース |
215 newField = field_create(fieldImg, colImg, field_num_max );//, tex); | |
128 | 216 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
217 if (!fieldHead) { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
218 fieldHead = prevField = newField; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
219 } else { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
220 prevField->next = newField; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
221 newField->prev = prevField; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
222 prevField = newField; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
223 } |
128 | 224 newField->init = fieldHead; |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
225 field_num_max++; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
226 } |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
227 break; |
124 | 228 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
229 default: |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
230 break; |
116 | 231 |
0 | 232 } |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
233 } |
0 | 234 |
124 | 235 |
0 | 236 FINISH_LOAD: |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
237 // 先頭と最後尾のリンクを張る |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
238 newField->next = newField->init; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
239 newField->init->prev = newField; |
0 | 240 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
241 field_list = field_actual = fieldHead; |
0 | 242 } |
243 | |
244 | |
245 /*---------------------/ | |
246 FieldPtr | |
247 field_init: | |
88 | 248 指定したファイルからコースを生成する。 |
249 戻り値 | |
250 コース先頭のポインタ | |
0 | 251 /---------------------*/ |
252 void | |
32 | 253 field_init(int id) |
0 | 254 { |
128 | 255 printf("field_init()\n"); |
115 | 256 FILE *fp; |
257 const char *filename = "course/course.dat"; | |
0 | 258 |
115 | 259 if (!(fp = fopen(filename, "r"))) { |
260 fprintf(main_fp, "error read file %s\n", filename); | |
261 exit(EXIT_FAILURE); | |
262 } | |
263 field_new_readCSV(fp, id); | |
128 | 264 printf("field_init()\n"); |
115 | 265 fclose(fp); |
0 | 266 } |
267 | |
268 static void | |
269 field_draw(FieldPtr p) | |
270 { | |
130 | 271 ps2_vu0_unit_matrix(p->object->transfer); |
128 | 272 |
273 p->object->transfer[3][0] = p->location[0]; | |
274 p->object->transfer[3][1] = p->location[1]; | |
275 p->object->transfer[3][2] = p->location[2]; | |
276 p->object->transfer[3][3] = p->location[3]; | |
130 | 277 |
278 | |
279 // 下の行はしないで良いのかな? | |
280 memcpy(p->object->xyz, p->location, sizeof(FVECTOR)); | |
281 // memcpy(p->object->angle, p->direction, sizeof(FVECTOR)); | |
282 | |
283 gSprite_PutObject( COURSE1_1, p->object ); | |
284 // ps2util_obj_Draw(p->object); | |
285 | |
286 // ps2_vu0_unit_matrix(&(p->object->matrix)); | |
287 | |
288 /* | |
289 p->object->matrix[3][0] = p->location[0]; | |
290 p->object->matrix[3][1] = p->location[1]; | |
291 p->object->matrix[3][2] = p->location[2]; | |
292 p->object->matrix[3][3] = p->location[3]; | |
124 | 293 */ |
118 | 294 |
130 | 295 /* |
296 // 上の5この処理、このやり方でも同じか確かめて | |
297 for( int i = 0; i < 4; i ++ ) | |
298 p->object->matrix[11+i] = p->location[0]; | |
299 | |
300 // 今ちょっとコメント | |
301 ps2util_obj_Draw(p->object); | |
302 */ | |
0 | 303 } |
91 | 304 |
0 | 305 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
306 void field_update(CarPtr car) |
0 | 307 { |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
308 FieldPtr p; |
0 | 309 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
310 p = field_actual; |
126 | 311 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
312 // current |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
313 p->location[0] = -car->location[0]; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
314 p->location[1] = -car->location[1]; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
315 p->location[2] = -car->location[2]; |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
316 //p->location[0] = 0; |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
317 //p->location[1] = 0; |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
318 //p->location[2] = 0; |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
319 p->location[3] = 1; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
320 field_draw(p); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
321 |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
322 // next |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
323 p = field_actual->next; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
324 if (p) { |
91 | 325 p->location[0] = -car->location[0]; |
326 p->location[1] = -car->location[1]; | |
327 p->location[2] = -car->location[2]; | |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
328 //p->location[0] = 0; |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
329 //p->location[1] = 0; |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
330 //p->location[2] = 0; |
91 | 331 p->location[3] = 1; |
332 field_draw(p); | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
333 } |
0 | 334 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
335 // prev |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
336 p = field_actual->prev; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
337 if (p) { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
338 p->location[0] = -car->location[0]; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
339 p->location[1] = -car->location[1]; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
340 p->location[2] = -car->location[2]; |
132
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
341 //p->location[0] = 0; |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
342 //p->location[1] = 0; |
d84ee8b2cfd9
camera position update
Takao YONAMINE <e095763@ie.u-ryukyu.ac.jp>
parents:
130
diff
changeset
|
343 //p->location[2] = 0; |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
344 p->location[3] = 1; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
345 field_draw(p); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
346 } |
0 | 347 } |
348 | |
349 void | |
350 field_destroy() | |
351 { | |
116 | 352 /* |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
353 FieldPtr p = field_list; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
354 FieldPtr d; |
115 | 355 |
116 | 356 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
357 TEXTURE *t; |
0 | 358 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
359 p->prev->next = NULL; |
0 | 360 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
361 t = p->object->surfaces->texture; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
362 ps2util_tex_Exclude(t); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
363 free_texture(t); |
0 | 364 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
365 while (p) { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
366 d = p; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
367 p = p->next; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
368 ps2util_obj_Free(d->object); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
369 free(d->colface.free_addr); |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
370 free(d->free_addr); |
0 | 371 #ifdef DEBUG |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
372 fprintf(main_fp, "free fieldNode addr = %x\n", (int)d->free_addr); |
0 | 373 #endif |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
374 } |
0 | 375 |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
376 field_num_max = 0; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
377 field_num = 1; |
115 | 378 |
379 */ | |
0 | 380 } |
381 | |
382 /* | |
88 | 383 * 周回記録。1周する毎に1を返す。 |
0 | 384 */ |
385 int | |
386 field_rap_increment(int n) | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
387 { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
388 field_num += n; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
389 if (field_num > field_num_max) { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
390 field_num = 1; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
391 return 1; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
392 } else { |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
393 return 0; |
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
394 } |
0 | 395 } |
396 | |
397 void | |
398 field_set_actual(FieldPtr p) | |
399 { | |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
400 field_actual = p; |
0 | 401 } |
402 | |
403 FieldPtr | |
128 | 404 field_get_actual( void ) |
0 | 405 { |
96
0b65ca27f113
compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents:
91
diff
changeset
|
406 return field_actual; |
0 | 407 } |