Mercurial > hg > old > magoroku_racing
diff field.cc @ 130:4f50f5a3b363
new repository
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 22 Jul 2011 18:20:17 +0900 |
parents | d88dfd3d46c5 |
children | 993d5f7e5f30 |
line wrap: on
line diff
--- a/field.cc Thu Jul 07 17:47:47 2011 +0900 +++ b/field.cc Fri Jul 22 18:20:17 2011 +0900 @@ -10,7 +10,9 @@ #include "quotanion.h" #include <stdbool.h> -#include "Application.h" +#include "gSprite.h" +#include "getStrFromFile.h" + #define BUFSIZE 256 @@ -30,7 +32,6 @@ // 現在走ってるfield static FieldPtr field_actual; -extern Viewer *droot; // 適当に自作:miya PolygonInfo* xml_read_file(char *colImg) @@ -42,23 +43,36 @@ } - static FieldPtr -field_create(char *fieldImg, char *colImg )// OBJECT *tex) +field_create(char *fieldImg, char *colImg, int number ) { - FieldPtr self; - OBJECT *obj; - void *free_addr; + FieldPtr self; + OBJECT *obj; + + // PolygonInfo *xml; + void *free_addr; + + FVECTOR location = {0, 0, 0, 1}; + FVECTOR direction = {0, 0, 0, 1}; - // xmlファイル内で名前を個別に付けました - // 初期化 - droot->createFromXMLfile(fieldImg); - obj = droot->createSceneGraph("course_1_1"); + obj = (OBJECT*)malloc(sizeof(OBJECT)); + + // xmlから読み込み + call_createFromXMLfile(fieldImg); - droot->createFromXMLfile(colImg); - OBJECT *col_obj = droot->createSceneGraph("hoge"); + /*sStr から eStrまでの間の文字列を取得する */ + const char *sStr = "surface name=\""; + const char *eStr = "\" size="; - if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) { + // xmlファイルから surface name と 数を取得する + obj->partNum = getStrFromFile( obj->partName, fieldImg, sStr, eStr ); + + memcpy(obj->xyz, location, sizeof(FVECTOR)); + memcpy(obj->angle, direction, sizeof(FVECTOR)); + + ps2util_obj_Renew_transMatrix(obj); + + if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1 ) { fprintf(stderr, "field.c: malloc_align16 error\n"); fflush(stderr); exit(EXIT_FAILURE); @@ -72,9 +86,7 @@ fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self); #endif - printf("col_init()の直前!\n"); - // ちょっと今だけコメント --- - col_init(&self->colface, col_obj); + col_init(&self->colface, colImg); #ifdef DEBUG fprintf(main_fp, " facenum = %d\n", self->colface.facenum); @@ -86,60 +98,6 @@ } - -/* -static FieldPtr -field_create(char *fieldImg, char *colImg)//, TEXTURE* tex) -{ - FieldPtr self; - OBJECT *obj; - PolygonInfo *xml; - void *free_addr; - - FVECTOR location = {0, 0, 0, 1}; - FVECTOR direction = {0, 0, 0, 1}; - - // 今はなにもしてない. - obj = ps2util_obj_Create_fromXML(fieldImg); - ps2util_obj_Set_effect(obj, DEFAULT_SET); - // ps2util_obj_Set_texture(obj, tex); - - obj = (OBJECT*)malloc(sizeof(OBJECT)); - - memcpy(obj->xyz, location, sizeof(FVECTOR)); - memcpy(obj->angle, direction, sizeof(FVECTOR)); - - ps2util_obj_Renew_transMatrix(obj); - - - // ここでxml->sizの数も数えてたんだろうね - xml = xml_read_file(colImg); // - - if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) { - fprintf(stderr, "field.c: malloc_align16 error\n"); - fflush(stderr); - exit(EXIT_FAILURE); - } - self->object = obj; - self->next = NULL; - self->prev = NULL; - self->free_addr = free_addr; -#ifdef DEBUG - fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self); -#endif - - col_init(&self->colface, xml); - -#ifdef DEBUG - fprintf(main_fp, " facenum = %d\n", self->colface.facenum); - fprintf(main_fp, " facenum = %x(free), ", (int)self->colface.free_addr); - fprintf(main_fp, "facenum = %x(obj)\n", (int)self->colface.colface); -#endif - //xml_free(xml); - return self; -} -*/ - static void field_new_readCSV(FILE *fp, int id) { @@ -148,7 +106,7 @@ FieldPtr prevField = NULL; char buff[BUFSIZE], *bufp; char fieldImg[BUFSIZE], colImg[BUFSIZE];//, texname[BUFSIZE]; - + //TEXTURE *tex = NULL; int course_id; bool flag = false; @@ -184,7 +142,8 @@ if (flag) { sscanf(bufp, " %s %s\n", fieldImg, colImg); - newField = field_create(fieldImg, colImg );//, tex); + // field_num_max 番目のコース + newField = field_create(fieldImg, colImg, field_num_max ); if (!fieldHead) { fieldHead = prevField = newField; @@ -205,7 +164,7 @@ } - FINISH_LOAD: + FINISH_LOAD: // 先頭と最後尾のリンクを張る newField->next = newField->init; newField->init->prev = newField; @@ -240,40 +199,30 @@ static void field_draw(FieldPtr p) { - // field_matrix - FMATRIX fm; - - changeMatrix( fm, p->object->matrix ); - - ps2_vu0_unit_matrix(fm); + ps2_vu0_unit_matrix(p->object->transfer); - fm[3][0] = p->location[0]; - fm[3][1] = p->location[1]; - fm[3][2] = p->location[2]; - fm[3][3] = p->location[3]; - - returnMatrix( p->object->matrix, fm ); - - ps2util_obj_Draw(p->object); - - /* + // 並行移動の座標変換? p->object->transfer[3][0] = p->location[0]; p->object->transfer[3][1] = p->location[1]; p->object->transfer[3][2] = p->location[2]; p->object->transfer[3][3] = p->location[3]; - */ - //ps2util_obj_Draw(p->object); + // 下の行はしないで良いのか + // memcpy(p->object->xyz, p->location, sizeof(FVECTOR)); + //memcpy(p->object->angle, p->direction, sizeof(FVECTOR)); + + gSprite_PutObject( COURSE1_1, p->object ); + } void field_update(CarPtr car) { FieldPtr p; - + p = field_actual; - // current + //current p->location[0] = -car->location[0]; p->location[1] = -car->location[1]; p->location[2] = -car->location[2]; @@ -299,6 +248,7 @@ p->location[3] = 1; field_draw(p); } + } void @@ -307,7 +257,6 @@ /* FieldPtr p = field_list; FieldPtr d; - TEXTURE *t;