annotate car.cc @ 137:298825d8837f

chmod
author e085768
date Fri, 22 Jul 2011 18:43:45 +0900
parents 4f50f5a3b363
children 993d5f7e5f30
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
100
e5f2eb98b575 change cc
e085768
parents: 99
diff changeset
1 /* Car.c */
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
2
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
3 #include <stdio.h>
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
4 #include <stdlib.h>
90
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
5 #include <stdbool.h>
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
6 #include "libps2.h"
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
7 #include "ps2util.h"
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
8 #include "field.h"
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
9 #include "car.h"
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
10 #include "mytype.h"
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
11 #include "quotanion.h"
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
12 #include "game.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
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
14
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
15 #include "gSprite.h"
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
16 #include "getStrFromFile.h"
125
c62fec1dd2f8 outPutPicture
e085768
parents: 124
diff changeset
17
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
18 #define DEFAULT_SET (EFFECT_TEXTURE_USE | EFFECT_ALPHABLEND_UNUSE | EFFECT_SHADING_FLAT)
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
19 #define BUFSIZE 256
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
20
88
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
21 /* 初期位置と初期方向 */
137
e085768
parents: 130
diff changeset
22 static FVECTOR location = {0, 0, 5, 1};
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
23 static FVECTOR direction = {0, 0, 1, 1};
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
24
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
25 extern FILE* main_fp;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
26
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
27 static CarPtr
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
28 car_create(int car_id, char *filename, char *texname, float speed_accel,
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
29 float speed_max, float rot, float brake)
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
30 {
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
31 CarPtr car;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
32 OBJECT *body;
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
33 //TEXTURE* tex;
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
34 void *free_addr;
118
b6dc70f6aa7e chenge OBJECT->transfer
e085768
parents: 116
diff changeset
35
126
030394675d8e succes compile
e085768
parents: 125
diff changeset
36 // 今はなにもしてない.
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
37 body = ps2util_obj_Create_fromXML(filename);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
38 ps2util_obj_Set_effect(body, DEFAULT_SET);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
39
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
40 // xmlファイルから読み込み
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
41 call_createFromXMLfile(filename);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
42
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
43 body = (OBJECT*)malloc(sizeof(OBJECT));
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
44
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
45 const char *sStr = "surface name=\""; // この文字列の直後の文字列を取得する
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
46 const char *eStr = "\" size="; // この文字列の直前までの文字列を抜き取る
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
47
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
48 // xmlファイルから surface name と 数を取得する
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
49 body->partNum = getStrFromFile( body->partName, filename, sStr, eStr );
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
50
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
51 /*
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
52 for( int i = 0; i < body->partNum; i ++ ){
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
53 gSprite_DefSprite( 100, body->partName[i], 919, 666, 1);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
54 }
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
55 */
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
56
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
57 // 初期化 // createScenGraph関数の引数アリと無しの違いは?
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
58 //body = droot->createSceneGraph("car");
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
59
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
60 // car = (CarPtr)malloc(sizeof(CarPtr));
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
61
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
62 if (malloc_align16(&free_addr, &car, sizeof(Car)) == -1) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
63 fprintf(main_fp, "car.c: malloc_align16 error\n");
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
64 exit(EXIT_FAILURE);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
65 }
122
5219bf3d5e71 title_draw
e085768
parents: 118
diff changeset
66
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
67 car->body = body;
126
030394675d8e succes compile
e085768
parents: 125
diff changeset
68
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
69 car->next = NULL;
122
5219bf3d5e71 title_draw
e085768
parents: 118
diff changeset
70
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
71 car->speed = 0.0;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
72 car->speed_accel = speed_accel;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
73 car->speed_max = speed_max;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
74 car->brake = brake;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
75 car->rotation_angle = rot;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
76 car->y_angle = 0.0;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
77 car->free_addr = free_addr;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
78
118
b6dc70f6aa7e chenge OBJECT->transfer
e085768
parents: 116
diff changeset
79
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
80 ps2_vu0_copy_vector(car->direction, direction);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
81 ps2_vu0_copy_vector(car->location, location);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
82 INIT_VECTOR(car->vertical, 0, -1, 0, 1);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
83 INIT_VECTOR(car->body->xyz, 0, 0, 0, 1);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
84 INIT_VECTOR(car->body->angle, 0, 0, 0, 1);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
85
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
86 ps2util_obj_Renew_transMatrix(car->body);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
87 ps2util_obj_Set_effect(car->body, DEFAULT_SET);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
88
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
89 /*
118
b6dc70f6aa7e chenge OBJECT->transfer
e085768
parents: 116
diff changeset
90 if (*texname != 'n') {
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
91 tex = read_png_file(texname);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
92 ps2util_tex_Set(tex);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
93 ps2util_obj_Set_texture(car->body, tex);
118
b6dc70f6aa7e chenge OBJECT->transfer
e085768
parents: 116
diff changeset
94 }
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
95 */
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
96
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
97 #ifdef DEBUG
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
98 fprintf(main_fp, "malloc car addr = %x\n", (int)free_addr);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
99 #endif
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
100
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
101 return car;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
102 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
103
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
104 // idは 1 か 2 か 3 で引数取ってこないと落ちるよ(登録されていない場合は落ちる)
122
5219bf3d5e71 title_draw
e085768
parents: 118
diff changeset
105 // car/car.dat ファイル内に3つしか車のデータ無から
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
106 static CarPtr
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
107 car_new_readCSV(FILE *fp, int id)
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
108 {
100
e5f2eb98b575 change cc
e085768
parents: 99
diff changeset
109 CarPtr newCar;
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
110 int car_id;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
111 float speed_accel, speed_max, brake, rot;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
112 char buff[BUFSIZE], *bufp;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
113 char carImg[BUFSIZE], texImg[BUFSIZE];
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
114
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
115 bool flag; // 探したい車が見つかったらture
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
116
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
117 flag = false;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
118
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
119 while ((bufp = fgets(buff, BUFSIZE, fp)) != NULL) {
116
ed702e49cc6c conpile
e085768
parents: 115
diff changeset
120
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
121 bufp++;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
122
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
123 switch (buff[0]) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
124 case 'n':
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
125 if (flag == false) {
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
126
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
127 // car_id = car/car.datファイルのnの後ろの数字一文字
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
128 sscanf(bufp, " %d\n", &car_id);
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
129 if (id == car_id) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
130 flag = true;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
131 }
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
132 }
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
133 break;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
134 case 't':
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
135 if (flag == true) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
136 sscanf(bufp, " %s %s %f %f %f %f\n",
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
137 carImg, texImg, &speed_accel, &speed_max, &rot, &brake);
100
e5f2eb98b575 change cc
e085768
parents: 99
diff changeset
138 newCar = car_create(id, carImg, texImg,
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
139 speed_accel, speed_max, rot, brake);
100
e5f2eb98b575 change cc
e085768
parents: 99
diff changeset
140 return newCar;
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
141 }
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
142 break;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
143 default:
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
144 break;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
145 }
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
146 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
147
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
148 /* ここまで辿り着いたら読み込み失敗 */
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
149 fprintf(main_fp, "error - car_new_readCSV\n");
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
150 exit(EXIT_FAILURE);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
151 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
152
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
153 CarPtr car_init(int id)
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
154 {
100
e5f2eb98b575 change cc
e085768
parents: 99
diff changeset
155 CarPtr newCar;
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
156 FILE *fp;
100
e5f2eb98b575 change cc
e085768
parents: 99
diff changeset
157 const char *filename = "car/car.dat";
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
158
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
159 if (!(fp = fopen(filename, "r"))) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
160 fprintf(main_fp, "error read file %s\n", filename);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
161 exit(EXIT_FAILURE);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
162 }
116
ed702e49cc6c conpile
e085768
parents: 115
diff changeset
163
100
e5f2eb98b575 change cc
e085768
parents: 99
diff changeset
164 newCar = car_new_readCSV(fp, id);
116
ed702e49cc6c conpile
e085768
parents: 115
diff changeset
165
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
166 fclose(fp);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
167
100
e5f2eb98b575 change cc
e085768
parents: 99
diff changeset
168 return newCar;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
169 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
170
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
171 /*---------------------------
88
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
172 carをY軸で回転させる
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
173 flg: 回転方向 1:右, -1:左
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
174 ---------------------------*/
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
175 void
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
176 car_swerve(CarPtr car, int flg)
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
177 {
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
178 FMATRIX rot;
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
179 FVECTOR v;
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
180
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
181 car->y_angle += (float)flg*car->rotation_angle;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
182 car->y_angle += (car->y_angle < 0) ? 360.0 : 0;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
183 car->y_angle += (car->y_angle > 360.0) ? -360.0 : 0;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
184
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
185 // rotの初期化が下2行目でなんか2重に処理してる気がするけど別に良いのか
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
186 ps2_vu0_unit_matrix(rot);
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
187 ps2_vu0_rot_matrix_y( rot, rot, degree2radian((float)flg*car->rotation_angle) );
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
188
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
189 ps2_vu0_copy_vector(v, car->direction);
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
190 ps2_vu0_apply_matrix(car->direction, rot, v);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
191 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
192
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
193 /*----------------------------
88
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
194 carを加速・減速する
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
195 (flg == 1) ? 加速 : 減速
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
196 ---------------------------*/
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
197 void
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
198 car_accelerate(CarPtr car, int flg)
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
199 {
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
200 //加速
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
201 car->speed += (flg == 1) ? car->speed_accel : -car->brake;
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
202
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
203 // speedが0以下にならんように
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
204 car->speed = (car->speed < 0) ? 0 : car->speed;
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
205
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
206 // speedがMax超えないように
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
207 car->speed = (car->speed > car->speed_max) ? car->speed_max : car->speed;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
208 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
209
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
210
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
211 /*---------------------------------
88
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
212 進行後のcarに対してコース面の内外判定を行い、
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
213 : 現在のコース
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
214 : 現在のコースの次のコース
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
215 : 現在のコースの前のコース
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
216 に存在すればTRUEを返す
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
217 どのコースにも居ない(壁に衝突した)場合は
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
218 FALSEを返す。
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
219 ---------------------------------*/
90
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
220 static bool
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
221 car_field_check(Game *game ,CarPtr car)
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
222 {
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
223 FieldPtr p;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
224 FieldPtr f = field_get_actual();
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
225
96
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 p = f;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
228 if (col_detect(&p->colface, car->vertical, car->location) == true) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
229 goto FIELD_CHECK_OK;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
230 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
231
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
232 // 現在のコースの次に隣接するコースで衝突・内外判定
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
233 p = f->next;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
234 if (col_detect(&p->colface, car->vertical, car->location) == true) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
235 if (field_rap_increment(1)) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
236 game->rap++;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
237 }
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
238 goto FIELD_CHECK_OK;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
239 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
240
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
241 // 現在のコースの前に隣接するコースで衝突・内外判定
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
242 p = f->prev;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
243 if (col_detect(&p->colface, car->vertical, car->location) == true) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
244 field_rap_increment(-1);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
245 goto FIELD_CHECK_OK;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
246 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
247
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
248 // どのコース上にも居ない(壁に衝突)
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
249 return false;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
250
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
251 FIELD_CHECK_OK:
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
252 field_set_actual(p);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
253 return true;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
254 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
255
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
256
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
257 /*------------------------------
88
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
258 速度speedと向きdirectionから
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
259 進行後の位置locationを求める。
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
260 また、進行後の衝突判定も行う。
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
261 ------------------------------*/
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
262 static void
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
263 car_move(Game *game,CarPtr car)
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
264 {
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
265 FVECTOR mov, prev_location;
126
030394675d8e succes compile
e085768
parents: 125
diff changeset
266
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
267 printf("car->speed = %f ", car->speed);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
268 printf("\n");
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
269
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
270 printf("car->body->xyz[x] = %f ", car->body->xyz[0]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
271 printf("car->body->xyz[y] = %f ", car->body->xyz[1]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
272 printf("car->body->xyz[z] = %f ", car->body->xyz[2]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
273 printf("car->body->xyz[3] = %f ", car->body->xyz[3]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
274 printf("\n");
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
275
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
276 printf("car->direction[x] = %f ", car->direction[0]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
277 printf("car->direction[y] = %f ", car->direction[1]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
278 printf("car->direction[z] = %f ", car->direction[2]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
279 printf("car->direction[3] = %f ", car->direction[3]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
280 printf("\n");
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
281
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
282 printf("car->location[x] = %f ", car->location[0]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
283 printf("car->location[y] = %f ", car->location[1]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
284 printf("car->location[z] = %f ", car->location[2]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
285 printf("car->location[3] = %f ", car->location[3]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
286
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
287 printf("\n");
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
288
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
289 // movは車の移動量を計算して入れるのかな。たぶん
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
290 ps2_vu0_scale_vector(mov, car->direction, car->speed);
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
291
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
292 printf("mov[x] = %f ", mov[0]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
293 printf("mov[y] = %f ", mov[1]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
294 printf("mov[z] = %f ", mov[2]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
295 printf("mov[3] = %f ", mov[3]);
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
296 printf("\n");
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
297
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
298 // 前フレームのcar->locationをprev_locationに保存
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
299 ps2_vu0_copy_vector(prev_location, car->location);
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
300
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
301 // 車の現在地 = 車の位置 + 移動量 って事だと思う多分
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
302 ps2_vu0_add_vector(car->location, car->location, mov);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
303
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
304
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
305 //思う方向と逆に動いたので、マイナスして見ている。
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
306 car->body->xyz[0] = -car->location[0];
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
307 car->body->xyz[1] = -car->location[1];
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
308 car->body->xyz[2] = -car->location[2];
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
309
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
310 // いまちょっとコメントアウト
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
311 // 壁にぶつかった時の処理
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
312 if (car_field_check(game,car) == false) {
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
313 // 壁にぶつかったら計算前の前フレームの座標にしてsppedは半分
126
030394675d8e succes compile
e085768
parents: 125
diff changeset
314 ps2_vu0_copy_vector(car->location, prev_location);
030394675d8e succes compile
e085768
parents: 125
diff changeset
315 car->speed = car->speed*0.5;
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
316 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
317 printf("^^^^^^collision!!!!!^^^^^^^^^\n");
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
318 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
319 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
320
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
321
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
322 /* car->body->transfer と car->y_angle はここでなんか関係ある */
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
323 static void
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
324 car_axis_rotation(CarPtr car)
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
325 {
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
326 FMATRIX pose, // 最後にcar->transferにコピーしてる
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
327 yrot,
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
328 yrotinv;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
329
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
330 ps2_vu0_unit_matrix(yrot);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
331 ps2_vu0_rot_matrix_y(yrot, yrot, -degree2radian(car->y_angle));
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
332
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
333 ps2_vu0_unit_matrix(yrotinv);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
334 ps2_vu0_rot_matrix_y(yrotinv, yrotinv, degree2radian(car->y_angle));
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
335
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
336 {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
337 FVECTOR yd = {0, -1, 0, 1};
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
338 FVECTOR rotaxis;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
339 FVECTOR q;
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
340
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
341 ps2_vu0_outer_product(rotaxis, car->vertical, yd);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
342 {
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
343 float scale=1/NORM(rotaxis); // 単位ベクトル?
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
344 rotaxis[0] *= scale;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
345 rotaxis[1] *= scale;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
346 rotaxis[2] *= scale;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
347 }
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
348
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
349 quotanion(q, rotaxis, acos(ps2_vu0_inner_product(yd, car->vertical)/(NORM(yd)*NORM(car->vertical))));
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
350 quotanion_rotmatrix(pose, q);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
351 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
352
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
353
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
354 ps2_vu0_mul_matrix(pose, yrot, pose);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
355 ps2_vu0_mul_matrix(pose, pose, yrotinv);
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
356 ps2_vu0_copy_matrix(car->body->transfer, pose);
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
357
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
358 ps2_vu0_rot_matrix_y(car->body->transfer, car->body->transfer, degree2radian(car->y_angle));
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
359 }
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
360
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
361
118
b6dc70f6aa7e chenge OBJECT->transfer
e085768
parents: 116
diff changeset
362
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
363 void car_update( Game *game, CarPtr car )
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
364 {
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
365 // 移動 ここで壁との当たり判定もしとる
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
366 car_move(game,car);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
367
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
368 // 摩擦による速度減少
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
369 car->speed -= 0.005;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
370 car->speed = (car->speed < 0) ? 0 : car->speed;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
371
130
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
372 // 角度。なぜかマイナス2倍でウマくいってる
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
373 car->body->angle[1] = -car->y_angle * 2;
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
374 car->body->angle[0] = -90.0f;
4f50f5a3b363 new repository
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 128
diff changeset
375
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
376 // 傾き
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
377 car_axis_rotation(car);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
378 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
379
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
380
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
381 void
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
382 car_destroy(CarPtr p)
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
383 {
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
384 /*
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
385 TEXTURE *t;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
386
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
387 if ((t = p->body->surfaces->texture)) {
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
388 //ps2util_tex_Exclude(t);
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
389 free_texture(t);
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
390 }
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
391 */
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
392
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
393 ps2util_obj_Free(p->body);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
394 free(p->free_addr);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
395
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
396 #ifdef DEBUG
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
397 fprintf(main_fp, "free car addr = %x\n", (int)p->free_addr);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
398 #endif
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
399 }
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
400
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
401 // 適当に自作
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
402 void car_id_update(Game *game, CarPtr jiki)
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
403 {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
404 printf("car_id_update\n");
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
405 }