void move(mat4 & e, vec3 & pos) { //e_position -= vec3(getPosition().v[0],0,getPosition().v[2]) * getDelta() * e_speed; if(e_isAlive) { e = scale(e, vec3(1.5,1.5,1.5)); e_direction = vec3(getPosition() - e_cs.center); e_direction = normalise(e_direction); e_rotation.v[1] = std::acos(e_direction.v[2]); if(e_direction.v[0] > 0) e_rotation.v[1] =-e_rotation.v[1]; e = rotate_x_deg(e, e_rotation.v[0]); e = rotate_y_deg(e, (-e_rotation.v[1] * (180/M_PI))); e = rotate_z_deg(e, e_rotation.v[2]); } if(e_isAlive) { vec3 newpos(e_cs.center); newpos += e_direction * e_speed; // newpos.v[1] -= 0.3; setE_Position(newpos); e = translate(e,getE_Position()); } // e_position = getPosition() - e_position; // temp -= getPosition() * getDelta() * e_speed;//vec3(getPosition().v[0],0,getPosition().v[2]);// * getDelta() * e_speed; }
void createShaders(GLuint shader_programme) { #define ONE_DEG_IN_RAD (2.0 * M_PI) / 360.0 // 0.017444444 // input variables float near = 0.1f; // clipping plane float far = 100.0f; // clipping plane float fov = 67.0f * ONE_DEG_IN_RAD; // convert 67 degrees to radians float aspect = (float)g_gl_width / (float)g_gl_height; // aspect ratio // matrix components float range = tan (fov * 0.5f) * near; float Sx = (2.0f * near) / (range * aspect + range * aspect); float Sy = near / range; float Sz = -(far + near) / (far - near); float Pz = -(2.0f * far * near) / (far - near); GLfloat proj_mat[] = { Sx, 0.0f, 0.0f, 0.0f, 0.0f, Sy, 0.0f, 0.0f, 0.0f, 0.0f, Sz, -1.0f, 0.0f, 0.0f, Pz, 0.0f }; mat4 T = translate (identity_mat4 (), vec3 (-cam_pos[0], -cam_pos[1], -cam_pos[2])); mat4 R = rotate_z_deg (identity_mat4 (), -cam_zaw); mat4 view_mat = T * R; view_mat_location = glGetUniformLocation (shader_programme, "view"); glUseProgram (shader_programme); glUniformMatrix4fv (view_mat_location, 1, GL_FALSE, view_mat.m); proj_mat_location = glGetUniformLocation (shader_programme, "proj"); glUseProgram (shader_programme); glUniformMatrix4fv (proj_mat_location, 1, GL_FALSE, proj_mat); }
// Maintain translations and rotations. inline void updateView() { mat4 T = translate (identity_mat4 (), vec3 (-cam_pos[0], -cam_pos[1], -cam_pos[2])); // cam translation mat4 R = rotate_z_deg(identity_mat4(), -cam_zaw) * rotate_y_deg(identity_mat4(), -cam_yaw) * rotate_x_deg(identity_mat4(), -cam_xaw); mat4 view_mat = T * R; glUniformMatrix4fv (view_mat_location, 1, GL_FALSE, view_mat.m); }