Ejemplo n.º 1
0
CAMERA_POLAR * camera_control_center_get(AGE_MAIN *p_age)
{
  CAMERA_POLAR *p_camera = camera_control_get(p_age);
  SCENE   *p_scene = p_age->scene_get();
  int     sx,sy,sdx,sdy;
  
  p_camera->view_get(&sx,&sy,&sdx,&sdy);
  float depth = p_scene->scene_box_depth_get();
  VECT v1((float)(sx+sdx/2),(float)(sy+sdy/2),depth);
  
  p_camera->screen_to_world(&v1);
  p_camera->target_set(&v1);
  p_camera->distance_set(depth);
  
  return(p_camera);
}
Ejemplo n.º 2
0
bool scene_reset(AGE_MAIN *p_age)
{
  CAMERA_POLAR *p_camera = camera_control_get(p_age);
  SCENE *p_scene = p_age->scene_get();
    
  VECT  s_center;
  VECT  s_length;
  
  p_scene->scene_box_center_get(&s_center);  // Return center of the scene
  p_scene->scene_box_length_get(&s_length);  // Return size of the scene
    
  p_camera->target_set(&s_center);
  p_camera->elevation_set(DEG2RAD(60));
  p_camera->rotation_set(DEG2RAD(0));
  p_camera->distance_set(s_length.size()*2);
  
  return(TRUE);
}
Ejemplo n.º 3
0
void test(AGE_MAIN *p_age)
{
  CAMERA_POLAR *p_camera = camera_control_get(p_age);
  int           sx,sy,sdx,sdy;
  
  GLMATRIX m,m2;
  
  p_camera->target_set(0,0,0);
  p_camera->distance_set(0);  
  p_camera->elevation_set(0);  
  p_camera->update();
      
  p_camera->view_get(&sx,&sy,&sdx,&sdy);

  VECT v2;
  
  v2.set((float)(sx+sdx/2),(float)(sy+sdy/2),1);
  p_camera->screen_to_world(&v2);
  p_camera->world_to_screen(&v2);
  v2.set((float)(sx+sdx/2),(float)(sy+sdy/2),10);
  p_camera->screen_to_world(&v2);
  p_camera->world_to_screen(&v2);
  v2.set((float)(sx+sdx/2),(float)(sy+sdy/2),99);
  p_camera->screen_to_world(&v2);
  p_camera->world_to_screen(&v2);

  transf_2d_3d_z((float)(sx+sdx/2),(float)(sy+sdy/2),1,
                  &v2.x,&v2.y,&v2.z,
                  p_camera->camera_get(), p_camera->projection_get(),
                  sdx,sdy,sx,sy,
                  1.0f,100.0f);
  transf_2d_3d_z((float)(sx+sdx/2),(float)(sy+sdy/2),2,
                  &v2.x,&v2.y,&v2.z,
                  p_camera->camera_get(), p_camera->projection_get(),
                  sdx,sdy,sx,sy,
                  1.0f,100.0f);
  transf_2d_3d_z((float)(sx+sdx/2),(float)(sy+sdy/2),10,
                  &v2.x,&v2.y,&v2.z,
                  p_camera->camera_get(), p_camera->projection_get(),
                  sdx,sdy,sx,sy,
                  1.0f,100.0f);
  transf_2d_3d_z((float)(sx+sdx/2),(float)(sy+sdy/2),99,
                  &v2.x,&v2.y,&v2.z,
                  p_camera->camera_get(), p_camera->projection_get(),
                  sdx,sdy,sx,sy,
                  1.0f,100.0f);

  v2.set((float)0,(float)0,1);
  p_camera->world_to_screen(&v2);
  v2.set((float)0,(float)0,2);
  p_camera->world_to_screen(&v2);
  v2.set((float)0,(float)0,100);
  p_camera->world_to_screen(&v2);
  
/*
  m.projection(DEG2RAD(DEFAULT_PROJECTION_ANGLE), 1024.0f/768.0f, 1.0f, 100.0f);
  glu_invert_matrix(&m,&m2);
  //p_camera->projection_set(&m);

  float w;

  w = 1; v2.set(0,0,-1);
  matrix_transformate(&v2.x,&v2.y,&v2.z,&w,&m2);
  v2.x /= w;
  v2.y /= w;
  v2.z /= w;
  
  w = 1; v2.set(0,0,0);
  matrix_transformate(&v2.x,&v2.y,&v2.z,&w,&m2);
  v2.x /= w;
  v2.y /= w;
  v2.z /= w;
  
  w = 1; v2.set(0,0,1);
  matrix_transformate(&v2.x,&v2.y,&v2.z,&w,&m2);
  v2.x /= w;
  v2.y /= w;
  v2.z /= w;
*/
}
Ejemplo n.º 4
0
AGE_MAIN * initialize(void)
{
  AGE_MAIN *p_age = new AGE_MAIN;
  
  GRAPH3D *p_grf = p_age->graph_sdl_set(1024, 768);
  
  SCENE *p_scene = p_age->scene_new();
  p_scene->render_state_set(TRUE);

  //log_open("/home/komat/b1log.txt");
  
  //GAME_MESH *p_mesh = p_scene->mesh_new();
  //MESH_MATERIAL *p_mat = p_scene->material_new();
  
  // TODO -> material_load() ->
  
  // TODO
  // Loading mesh / mesh list
  // Set material list for meshes during loading
  
  //p_scene->load(NULL, "/home/komat/Projekty/Graph/test.b2m");
  //p_scene->load(NULL, "/home/komat/Projekty/Graph/Scenes/level1.bpr");
  //p_scene->load(NULL, "/home/komat/Projekty/test.3ds",SCENE_3DS);
  //p_scene->load(NULL, "/home/komat/Projekty/komat.3ds",SCENE_3DS);
  //p_scene->load(NULL, "/home/komat/Projekty/redshit.3ds",SCENE_3DS);
  //p_scene->load(NULL, "/home/komat/Projekty/test.b2m");
  //p_scene->load(NULL, "/home/komat/Projekty/auto.b2m");
  //p_scene->save(NULL, "/home/komat/Projekty/auto-1.b2m");
  //p_scene->load(NULL, "/home/komat/Projekty/auto-1.b2m");
  //p_scene->load(NULL, "/home/komat/tmp310/apollo13.3ds",SCENE_3DS);
  //p_scene->texture_dir_add("/home/komat/Projekty/Graph/Textures");
  //p_scene->texture_reload();
    
  CAMERA_POLAR *p_camera = (CAMERA_POLAR *)camera_control_get(p_age);
  p_scene->camera_active_set(p_camera);
  
  /*
  GAME_MESH *p_mesh = p_scene->mesh_get("bedna8.b2m");
  p_mesh->translate_set(0.0f,0.0f,5.0f);
  */
 
  p_age->callback_set(callback);

  INPUT *p_input = p_age->input_get();
  
  static INPUT_EVENT events[] = 
  {
    INPUT_EVENT(KEY_STATE(K_M), (INPUT_EVENT_FUNC)scene_move),
    INPUT_EVENT(KEY_STATE(K_R), (INPUT_EVENT_FUNC)scene_rotate),
    INPUT_EVENT(KEY_STATE(K_R), (INPUT_EVENT_FUNC)scene_reset),
    INPUT_EVENT(KEY_STATE(K_A), (INPUT_EVENT_FUNC)scene_test)
  };
  
  p_input->events_add(events, sizeof(events)/sizeof(events[0]));
  
  p_grf->config_draw_grid(FALSE);
  p_grf->config_draw_mouse_cursor(TRUE);
  //p_grf->config_draw_boxes(TRUE);
  p_grf->config_draw_console(TRUE);
  p_grf->config_draw_wired(TRUE);
  //p_grf->config_normals_draw(TRUE);
  //p_grf->config_opengl_lighting(TRUE);
  p_grf->config_draw_all_objects(TRUE);
  p_grf->config_draw_pivots(TRUE);
  
  p_grf->console_font_color_set(RGBB(0,0xff,0));
  p_grf->console_origin_set(0,10);
  p_grf->console_print("Zdar ty jelito 1!");
  p_grf->console_print("Zdar ty jelito 2!");
  p_grf->console_print("Zdar ty jelito 3!");
    
  
  return(p_age);
}