annotate camera.c @ 91:cb6c6de125dc

halfway
author Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
date Thu, 26 May 2011 14:44:03 +0900
parents 8edae89a3877
children 0b65ca27f113
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
1 #include <stdlib.h>
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
2 #include <string.h>
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
3 #include "libps2.h"
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
4 #include "ps2util.h"
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
5 #include "car.h"
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
6 #include "game.h"
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
7 #include "controler.h"
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
8 #include "camera.h"
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
9
90
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
10 //大域変数、各部で共有
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
11 //extern SGO_PAD pad;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
12
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
13 static CAMERA camera, def_camera;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
14
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
15
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
16 void
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
17 camera_init()
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
18 {
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
19
90
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
20 //カメラの初期位置設定
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
21 def_camera.xyz[0] = 0;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
22 def_camera.xyz[1] =-7;// -3;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
23 def_camera.xyz[2] =-14; //0;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
24 def_camera.xyz[3] = 1;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
25
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
26 def_camera.zd[0] = 0;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
27 def_camera.zd[1] = 2;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
28 def_camera.zd[2] = 7;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
29 def_camera.zd[3] = 1;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
30
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
31 def_camera.yd[0] = 0;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
32 def_camera.yd[1] = 1;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
33 def_camera.yd[2] = 0;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
34 def_camera.yd[3] = 1;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
35
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
36 def_camera.angle[0]=-0.2;//0; //pich
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
37 def_camera.angle[1]=0; //yoh
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
38 def_camera.angle[2]=0; //roll
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
39 def_camera.angle[3]=0;
90
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
40
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
41 //def_cameraをcameraにコピー
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
42 memcpy( &camera, &def_camera, sizeof(CAMERA));
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
43 set_camera(&def_camera);
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
44
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
45 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
46
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
47
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
48
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
49 /*
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
50 ps2依存関係から拝借。
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
51 自分が消したのか、元々無いのかは覚えていないけど
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
52 呼ばれているのでとりあえず(空っぽにしておく)。
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
53 */
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
54 // set_camera must be called if camera's parameters were moved
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
55 void set_camera(CAMERA *camera)
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
56 {
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
57 //vu0_rot_camera_matrix(world_view, camera->xyz, camera->zd, camera->yd,camera->angle);
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
58 }
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
59
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
60
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
61
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
62
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
63 /**
88
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
64 * pose: カメラの対象物(obj)の座標行列
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
65 * カメラがobjについていくように(そのような動きに見せるため)
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
66 * カメラの位置ベクトル、視点ベクトルを更新
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
67 */
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
68 void
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
69 camera_update(Game *game, FMATRIX pose)
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
70 {
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
71
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
72 FVECTOR location, eyes, vertical, angle;
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
73
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
74 //int type = game->camera_type;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
75
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
76 ps2_vu0_apply_matrix(location, pose, def_camera.xyz);
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
77 ps2_vu0_apply_matrix(eyes, pose, def_camera.zd);
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
78 ps2_vu0_apply_matrix(vertical, pose, def_camera.yd);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
79
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
80 /**When the car bends, the angle of the camera is changed**/
90
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
81 //if(pad.left>0 && game.jiki->speed !=0){
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
82 if(game->jiki->speed !=0){
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
83 if(def_camera.angle[1]<=0.2){
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
84 def_camera.angle[1]+=0.02;
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
85 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
86 }
90
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
87 //else if(pad.right>0 && game.jiki->speed !=0){
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
88 else if(game->jiki->speed !=0){
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
89 if(def_camera.angle[1]>=-0.2){
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
90 def_camera.angle[1]-=0.02;
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
91 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
92 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
93 else {
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
94 if(def_camera.angle[1]<-0.01){
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
95 def_camera.angle[1]+=0.02;
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
96 }
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
97 else if(def_camera.angle[1]>0.01){
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
98 def_camera.angle[1]-=0.02;
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
99 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
100 }
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
101 ps2_vu0_apply_matrix(angle, pose, def_camera.angle);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
102 ps2_vu0_copy_vector(camera.xyz, location);
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
103 ps2_vu0_copy_vector(camera.zd, eyes);
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
104 ps2_vu0_copy_vector(camera.yd, vertical);
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
105 ps2_vu0_copy_vector(camera.angle, angle);
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
106 set_camera(&camera);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
107
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
108 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
109
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
110