comparison field.cc @ 128:d9e3137e70a0

xml name change
author e085768
date Thu, 07 Jul 2011 16:10:21 +0900
parents 030394675d8e
children d88dfd3d46c5
comparison
equal deleted inserted replaced
127:f129e644ec29 128:d9e3137e70a0
15 #define BUFSIZE 256 15 #define BUFSIZE 256
16 16
17 /* --- main.c --- */ 17 /* --- main.c --- */
18 extern FILE *main_fp; 18 extern FILE *main_fp;
19 19
20 // コース一周分のfieldの数
20 static int field_num_max = 0; 21 static int field_num_max = 0;
22
23 // 自分が走ったfieldの数のカウント
24 // field_num_max > field_num になったら一周って意味かも。違うかも
21 static int field_num = 1; 25 static int field_num = 1;
22 26
27 // FieldPtrのroot部分を指し示してるんだともう
23 static FieldPtr field_list; 28 static FieldPtr field_list;
29
30 // 現在走ってるfield
24 static FieldPtr field_actual; 31 static FieldPtr field_actual;
25 32
26 extern Viewer *droot; 33 extern Viewer *droot;
27 34
28 // 適当に自作:miya 35 // 適当に自作:miya
31 PolygonInfo* test; 38 PolygonInfo* test;
32 printf("xml_read_file"); 39 printf("xml_read_file");
33 40
34 return test; 41 return test;
35 } 42 }
43
36 44
37 45
38 static FieldPtr 46 static FieldPtr
39 field_create(char *fieldImg, char *colImg )// OBJECT *tex) 47 field_create(char *fieldImg, char *colImg )// OBJECT *tex)
40 { 48 {
41 FieldPtr self; 49 FieldPtr self;
42 OBJECT *obj; 50 OBJECT *obj;
43 void *free_addr; 51 void *free_addr;
44 52
53 // xmlファイル内で名前を個別に付けました
45 // 初期化 54 // 初期化
46 droot->createFromXMLfile(fieldImg); 55 droot->createFromXMLfile(fieldImg);
47 obj = droot->createSceneGraph("hoge"); 56 obj = droot->createSceneGraph("hoge");
48 57
49 droot->createFromXMLfile(colImg); 58 droot->createFromXMLfile(colImg);
50 OBJECT *col_obj = droot->createSceneGraph("hoge"); 59 OBJECT *col_obj = droot->createSceneGraph("hoge");
51 60
52 if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) { 61 if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) {
53 fprintf(stderr, "field.c: malloc_align16 error\n"); 62 fprintf(stderr, "field.c: malloc_align16 error\n");
54 fflush(stderr); 63 fflush(stderr);
55 exit(EXIT_FAILURE); 64 exit(EXIT_FAILURE);
56 } 65 }
61 self->free_addr = free_addr; 70 self->free_addr = free_addr;
62 #ifdef DEBUG 71 #ifdef DEBUG
63 fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self); 72 fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self);
64 #endif 73 #endif
65 74
75 printf("col_init()の直前!\n");
66 // ちょっと今だけコメント --- 76 // ちょっと今だけコメント ---
67 col_init(&self->colface, col_obj); 77 col_init(&self->colface, col_obj);
68 78
69 #ifdef DEBUG 79 #ifdef DEBUG
70 fprintf(main_fp, " facenum = %d\n", self->colface.facenum); 80 fprintf(main_fp, " facenum = %d\n", self->colface.facenum);
73 #endif 83 #endif
74 84
75 return self; 85 return self;
76 } 86 }
77 87
88
89
90 /*
91 static FieldPtr
92 field_create(char *fieldImg, char *colImg)//, TEXTURE* tex)
93 {
94 FieldPtr self;
95 OBJECT *obj;
96 PolygonInfo *xml;
97 void *free_addr;
98
99 FVECTOR location = {0, 0, 0, 1};
100 FVECTOR direction = {0, 0, 0, 1};
101
102 // 今はなにもしてない.
103 obj = ps2util_obj_Create_fromXML(fieldImg);
104 ps2util_obj_Set_effect(obj, DEFAULT_SET);
105 // ps2util_obj_Set_texture(obj, tex);
106
107 obj = (OBJECT*)malloc(sizeof(OBJECT));
108
109 memcpy(obj->xyz, location, sizeof(FVECTOR));
110 memcpy(obj->angle, direction, sizeof(FVECTOR));
111
112 ps2util_obj_Renew_transMatrix(obj);
113
114
115 // ここでxml->sizの数も数えてたんだろうね
116 xml = xml_read_file(colImg); //
117
118 if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) {
119 fprintf(stderr, "field.c: malloc_align16 error\n");
120 fflush(stderr);
121 exit(EXIT_FAILURE);
122 }
123 self->object = obj;
124 self->next = NULL;
125 self->prev = NULL;
126 self->free_addr = free_addr;
127 #ifdef DEBUG
128 fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self);
129 #endif
130
131 col_init(&self->colface, xml);
132
133 #ifdef DEBUG
134 fprintf(main_fp, " facenum = %d\n", self->colface.facenum);
135 fprintf(main_fp, " facenum = %x(free), ", (int)self->colface.free_addr);
136 fprintf(main_fp, "facenum = %x(obj)\n", (int)self->colface.colface);
137 #endif
138 //xml_free(xml);
139 return self;
140 }
141 */
78 142
79 static void 143 static void
80 field_new_readCSV(FILE *fp, int id) 144 field_new_readCSV(FILE *fp, int id)
81 { 145 {
82 FieldPtr fieldHead = NULL; 146 FieldPtr fieldHead = NULL;
119 case 'c': // コースのロード 183 case 'c': // コースのロード
120 if (flag) { 184 if (flag) {
121 sscanf(bufp, " %s %s\n", fieldImg, colImg); 185 sscanf(bufp, " %s %s\n", fieldImg, colImg);
122 186
123 newField = field_create(fieldImg, colImg );//, tex); 187 newField = field_create(fieldImg, colImg );//, tex);
188
124 if (!fieldHead) { 189 if (!fieldHead) {
125 fieldHead = prevField = newField; 190 fieldHead = prevField = newField;
126 } else { 191 } else {
127 prevField->next = newField; 192 prevField->next = newField;
128 newField->prev = prevField; 193 newField->prev = prevField;
129 prevField = newField; 194 prevField = newField;
130 } 195 }
131 newField->init = fieldHead; 196 newField->init = fieldHead;
132 field_num_max++; 197 field_num_max++;
133 } 198 }
134 break; 199 break;
135 200
136 default: 201 default:
157 コース先頭のポインタ 222 コース先頭のポインタ
158 /---------------------*/ 223 /---------------------*/
159 void 224 void
160 field_init(int id) 225 field_init(int id)
161 { 226 {
227 printf("field_init()\n");
162 FILE *fp; 228 FILE *fp;
163 const char *filename = "course/course.dat"; 229 const char *filename = "course/course.dat";
164 230
165 if (!(fp = fopen(filename, "r"))) { 231 if (!(fp = fopen(filename, "r"))) {
166 fprintf(main_fp, "error read file %s\n", filename); 232 fprintf(main_fp, "error read file %s\n", filename);
167 exit(EXIT_FAILURE); 233 exit(EXIT_FAILURE);
168 } 234 }
169 field_new_readCSV(fp, id); 235 field_new_readCSV(fp, id);
236 printf("field_init()\n");
170 fclose(fp); 237 fclose(fp);
171 } 238 }
172 239
173 static void 240 static void
174 field_draw(FieldPtr p) 241 field_draw(FieldPtr p)
175 { 242 {
176 ps2_vu0_unit_matrix((FMATRIX)(p->object->matrix)); 243 // field_matrix
177 244 FMATRIX fm;
245
246 changeMatrix( fm, p->object->matrix );
247
248 ps2_vu0_unit_matrix(fm);
249
250 fm[3][0] = p->location[0];
251 fm[3][1] = p->location[1];
252 fm[3][2] = p->location[2];
253 fm[3][3] = p->location[3];
254
255 returnMatrix( p->object->matrix, fm );
256
257 ps2util_obj_Draw(p->object);
258
178 /* 259 /*
179 p->object->matrix[3][0] = p->location[0]; 260 p->object->transfer[3][0] = p->location[0];
180 p->object->matrix[3][1] = p->location[1]; 261 p->object->transfer[3][1] = p->location[1];
181 p->object->matrix[3][2] = p->location[2]; 262 p->object->transfer[3][2] = p->location[2];
182 p->object->matrix[3][3] = p->location[3]; 263 p->object->transfer[3][3] = p->location[3];
183 */ 264 */
184 265
185 // 上の5この処理、このやり方でも同じか確かめたい
186 for( int i = 0; i < 4; i ++ )
187 p->object->matrix[11+i] = p->location[0];
188
189 // 今ちょっとコメント
190 //ps2util_obj_Draw(p->object); 266 //ps2util_obj_Draw(p->object);
191 } 267 }
192 268
193 269
194 void field_update(CarPtr car) 270 void field_update(CarPtr car)
278 { 354 {
279 field_actual = p; 355 field_actual = p;
280 } 356 }
281 357
282 FieldPtr 358 FieldPtr
283 field_get_actual() 359 field_get_actual( void )
284 { 360 {
285 return field_actual; 361 return field_actual;
286 } 362 }