void init_scene(t_img *img) { init_cam(&img->scene.cam, init_vect(-2, -2, 0)); img->scene.light = create_light(init_vect(0, 0, -35), 0xffffff); img->scene.obj[0] = create_sphere(init_vect(0, 0, -10), 80, 0xffffff); img->scene.obj[1] = create_sphere(init_vect(-20, 24, -80), 50, 0x00ff00); img->scene.obj[2] = create_sphere(init_vect(10, 10, -100), 50, 0xfff700); img->scene.obj[3] = create_sphere(init_vect(200, 200, -150), 50, 0x0000ff); // img->scene.obj[4] = create_cone(init_vect(0, 0, -5), 20, 0xff00ff); img->scene.obj[4] = create_sphere(init_vect(600, 600, -150), 50, 0xff00ff); img->scene.obj[5] = create_cylinder(init_vect(2, 2, -110), init_vect(0, 1, 1), 50, 0x777777); img->scene.obj[6] = create_plane(init_vect(1, 0, 1), init_vect(0, 0, -200), 0xff0000); img->scene.obj[7] = create_plane(init_vect(0, 1, 1), init_vect(0, 0, -200), 0xffffcc); }
void update_state(void){ state.planes_num = get_airplanes(state.planes); state.crashed_planes = get_crashed(); state.landed_planes = get_landed(); state.cur_time = time(NULL); if (difftime(state.cur_time, state.tick_time) > 20){ state.tick_time = state.cur_time; create_plane(); } }
int main(int argc, char ** argv) { init_signal_handler(); atc_init(); init_UI(); init_time(); create_plane(); state.airports_num = get_airports(state.airports); while(1){ update_state(); draw_UI(); input(wgetch(ui.cmd_log)); } atc_deinit(); dispose_UI(); return 0; }
static int omap_modeset_init(struct drm_device *dev) { const struct omap_drm_platform_data *pdata = dev->dev->platform_data; struct omap_kms_platform_data *kms_pdata = NULL; struct omap_drm_private *priv = dev->dev_private; struct omap_dss_device *dssdev = NULL; int i, j; unsigned int connected_connectors = 0; drm_mode_config_init(dev); if (pdata && pdata->kms_pdata) { kms_pdata = pdata->kms_pdata; /* if platform data is provided by the board file, use it to * control which overlays, managers, and devices we own. */ for (i = 0; i < kms_pdata->mgr_cnt; i++) { struct omap_overlay_manager *mgr = omap_dss_get_overlay_manager( kms_pdata->mgr_ids[i]); create_encoder(dev, mgr); } for (i = 0; i < kms_pdata->dev_cnt; i++) { struct omap_dss_device *dssdev = omap_dss_find_device( (void *)kms_pdata->dev_names[i], match_dev_name); if (!dssdev) { dev_warn(dev->dev, "no such dssdev: %s\n", kms_pdata->dev_names[i]); continue; } create_connector(dev, dssdev); } connected_connectors = detect_connectors(dev); j = 0; for (i = 0; i < kms_pdata->ovl_cnt; i++) { struct omap_overlay *ovl = omap_dss_get_overlay(kms_pdata->ovl_ids[i]); create_crtc(dev, ovl, &j, connected_connectors); } for (i = 0; i < kms_pdata->pln_cnt; i++) { struct omap_overlay *ovl = omap_dss_get_overlay(kms_pdata->pln_ids[i]); create_plane(dev, ovl, (1 << priv->num_crtcs) - 1); } } else { /* otherwise just grab up to CONFIG_DRM_OMAP_NUM_CRTCS and try * to make educated guesses about everything else */ int max_overlays = min(omap_dss_get_num_overlays(), num_crtc); for (i = 0; i < omap_dss_get_num_overlay_managers(); i++) { create_encoder(dev, omap_dss_get_overlay_manager(i)); } for_each_dss_dev(dssdev) { create_connector(dev, dssdev); } connected_connectors = detect_connectors(dev); j = 0; for (i = 0; i < max_overlays; i++) { create_crtc(dev, omap_dss_get_overlay(i), &j, connected_connectors); } /* use any remaining overlays as drm planes */ for (; i < omap_dss_get_num_overlays(); i++) { struct omap_overlay *ovl = omap_dss_get_overlay(i); create_plane(dev, ovl, (1 << priv->num_crtcs) - 1); } } /* for now keep the mapping of CRTCs and encoders static.. */ for (i = 0; i < priv->num_encoders; i++) { struct drm_encoder *encoder = priv->encoders[i]; struct omap_overlay_manager *mgr = omap_encoder_get_manager(encoder); encoder->possible_crtcs = (1 << priv->num_crtcs) - 1; DBG("%s: possible_crtcs=%08x", mgr->name, encoder->possible_crtcs); } dump_video_chains(); dev->mode_config.min_width = 32; dev->mode_config.min_height = 32; /* note: eventually will need some cpu_is_omapXYZ() type stuff here * to fill in these limits properly on different OMAP generations.. */ dev->mode_config.max_width = 2048; dev->mode_config.max_height = 2048; dev->mode_config.funcs = &omap_mode_config_funcs; return 0; }
Primitive * create_scene(cl_uint & n_primitives) { int curr_prim = 0; Primitive * primitive_list; if (CHOOSE_SCENE == 0){ n_primitives = 17; primitive_list = (Primitive *) malloc(sizeof(Primitive) * n_primitives); memset(primitive_list, 0, sizeof(Primitive) * n_primitives); float light = 0.85f; //create_plane(create_material(r, g, b, refl, refr, refr_index, diff, spec), is_light, x, y, z, depth/radius); // floor plane primitive_list[curr_prim++] = create_plane(create_material(0.6f, 0.6f, 0.6f, 0.0f, 0.0f, 0.0f, 0.4f, 1.8f), false, 0.0f, 0.75f, 0.0f, 4.4f); // big sphere primitive_list[curr_prim++] = create_sphere(create_material(0.08f, 0.08f, 0.08f, 0.2f, 1.0f, 1.4f, 0.0f, 0.0f), false, 3.4f, -3.4f, 23.0f, 2.5f); // small sphere 5 primitive_list[curr_prim++] = create_sphere(create_material(0.07f, 0.17f, 0.07f, 0.1f, 1.0f, 1.2f, 0.0f, 0.0f), false, -0.7f, -4.90f, 27.0f, 1.0f); // small sphere primitive_list[curr_prim++] = create_sphere(create_material(1.0f, 1.0f, 1.0f, 0.8f, 0.0f, 0.0f, 0.0f, 0.0f), false, -3.4f, -3.4f, 29.0f, 2.5f); // small sphere 2 primitive_list[curr_prim++] = create_sphere(create_material(1.5f, 0.7f, 0.7f, 0.1f, 0.0f, 0.0f, 0.2f, 0.2f), false, 0.5f, -4.1f, 29.0f, 1.5f); // small sphere 3 primitive_list[curr_prim++] = create_sphere(create_material(0.7f, 0.7f, 1.7f, 0.2f, 0.0f, 0.0f, 0.2f, 0.2f), false, -6.0f, -4.1f, 32.0f, 1.5f); // small sphere 4 primitive_list[curr_prim++] = create_sphere(create_material(0.07f, 0.17f, 0.07f, 0.3f, 1.0f, 1.2f, 0.2f, 0.8f), false, -6.7f, -4.90f, 29.0f, 1.0f); // small sphere 6 up front primitive_list[curr_prim++] = create_sphere(create_material(0.08f, 0.08f, 0.08f, 0.7f, 1.0f, 1.3f, 0.8f, 0.0f), false, 6.4f, -4.9f, 18.0f, 1.0f); // left wall primitive_list[curr_prim++] = create_plane(create_material(1.0f, 0.6f, 0.6f, 0.0f, 0.0f, 0.0f, 0.8f, 1.5f), false, 0.7f, 0.0f, 0.0f, 5.4f); // right wall primitive_list[curr_prim++] = create_plane(create_material(0.7f, 0.6f, 1.0f, 0.0f, 0.0f, 0.0f, 0.8f, 0.8f), false, -0.7f, 0.0f, 0.0f, 5.4f); // top wall primitive_list[curr_prim++] = create_plane(create_material(1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.2f, 0.8f), false, 0.0f, -0.8f, 0.0f, 5.4f); // back wall primitive_list[curr_prim++] = create_plane(create_material(1.5f, 1.5f, 1.5f, 0.0f, 0.0f, 0.0f, 1.2f, 0.8f), false, 0.0f, 0.0f, -0.14f, 5.4f); // front wall primitive_list[curr_prim++] = create_plane(create_material(0.1f, 0.1f, 0.1f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f), false, 0.0f, 0.0f, 0.72f, 5.4f); // light source center primitive_list[curr_prim++] = create_sphere(create_material(light, light, light, 0.0f, 0.0f, 0.0f, 0.0f, 1.8f), true, 0.0f, 6.5f, 22.0f, 0.35f); // light source right primitive_list[curr_prim++] = create_sphere(create_material(light, light, light, 0.0f, 0.0f, 0.0f, 0.0f, 1.8f), true, -3.0f, 6.5f, 22.0f, 0.35f); // light source left primitive_list[curr_prim++] = create_sphere(create_material(light, light, light, 0.0f, 0.0f, 0.0f, 0.0f, 1.8f), true, 3.0f, 6.5f, 22.0f, 0.35f); /* // light source ground back primitive_list[curr_prim++] = create_sphere(create_material(0.85f, 0.25f, 0.25f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), false, -5.8f, -5.55f, 31.0f, 0.35f); */ }else if(CHOOSE_SCENE == 1){ n_primitives = 64; primitive_list = (Primitive *) malloc(sizeof(Primitive) * n_primitives); memset(primitive_list, 0, sizeof(Primitive) * n_primitives); //create_plane(create_material(r, g, b, refl, refr, refr_index, diff, spec), is_light, x, y, z, depth/radius); // floor plane primitive_list[curr_prim++] = create_plane(create_material(0.4f, 0.3f, 0.3f, 0.0f, 0.0f, 1.0f, 1.0f, 0.8f), false, 0.0f, 1.0f, 0.0f, 4.4f); // big sphere primitive_list[curr_prim++] = create_sphere(create_material(0.7f, 0.7f, 1.0f, 0.0f, 1.0f, 1.3f, 0.2f, 0.8f), false, 2.0f, 0.8f, 3.0f, 2.5f); // small sphere primitive_list[curr_prim++] = create_sphere(create_material(0.7f, 0.7f, 1.0f, 0.5f, 0.0f, 1.0f, 0.1f, 0.8f), false, -5.5f, -0.5f, 7.0f, 2.0f); // light source 1 primitive_list[curr_prim++] = create_sphere(create_material(0.4f, 0.4f, 0.4f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f), true, 0.0f, 5.0f, 5.0f, 0.1f); // light source 2 primitive_list[curr_prim++] = create_sphere(create_material(0.6f, 0.6f, 0.8f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f), true, -3.0f, 5.0f, 1.0f, 0.1f); // sphere 3 primitive_list[curr_prim++] = create_sphere(create_material(1.0f, 0.4f, 0.4f, 0.5f, 0.0f, 1.0f, 0.2f, 0.8f), false, -1.5f, -3.8f, 1.0f, 1.5f); // back plane primitive_list[curr_prim++] = create_plane(create_material(0.5f, 0.3f, 0.5f, 0.0f, 0.0f, 1.0f, 0.6f, 0.0f), false, 0.4f, 0.0f, -1.0f, 12.0f); // ceiling plane primitive_list[curr_prim++] = create_plane(create_material(0.4f, 0.7f, 0.7f, 0.0f, 0.0f, 1.0f, 0.5f, 0.0f), false, 0.0f, -1.0f, 0.0f, 7.4f); for (int x = 0; x < 8; x++) for (int y = 0; y < 7; y++) { primitive_list[curr_prim++] = create_sphere(create_material(0.3f, 1.0f, 0.4f, 0.0f, 0.0f, 1.0f, 0.6f, 0.6f), false, -4.5f + x * 1.5f, -4.3f + y * 1.5f, 10.0f, 0.3f); } } return primitive_list; }
void CRevise_group::show () { init (); SetBackPixmap (g_pReciteWord->fixed, Skin->revise_group.revise_group.p[0]); return_button.create (g_pReciteWord->fixed, Skin->revise_group.return_button.x[0], Skin->revise_group.return_button.y[0], Skin->revise_group.return_button.p[0], Skin->revise_group.return_button.p[1], Skin->revise_group.return_button.p[2], (GdkPixmap *) NULL, on_revise_group_return_clicked); chooseword_button.create (g_pReciteWord->fixed, Skin->revise_group.chooseword_button.x[0], Skin->revise_group.chooseword_button.y[0], Skin->revise_group.chooseword_button.p[0], Skin->revise_group.chooseword_button.p[1], Skin->revise_group.chooseword_button.p[2], on_revise_group_chooseword_clicked,this); gtk_tooltips_set_tip (g_pReciteWord->tooltips, chooseword_button.event_box,"Ctrl-W",""); order_ckbutton.create (g_pReciteWord->fixed, Skin->revise_group.order_ckbutton.x[0], Skin->revise_group.order_ckbutton.y[0], Skin->revise_group.order_ckbutton.p[0], Skin->revise_group.order_ckbutton.p[1], Skin->revise_group.order_ckbutton.p[2], Skin->revise_group.order_ckbutton.p[3], NULL); gboolean order; rw_cfg_read_boolean(usercfgfile, "revise_group", "disorder", &order); order_ckbutton.set_status(order); glong found_group = 0; gint found = TRUE; gint zu_index = 0, revise_times; gchar tmpstr[256]; std::time_t last_time; double between_time; while (found) { sprintf (tmpstr, "zu%d_time0", zu_index); if (rw_cfg_read_time (usercfgfile, g_pReciteWord->now_book->bookfilename, tmpstr, &last_time)) // have firstrecited { sprintf (tmpstr, "zu%d_revisetimes", zu_index); rw_cfg_read_int (usercfgfile, g_pReciteWord->now_book-> bookfilename, tmpstr, &revise_times); if (revise_times < max_revise_times) { sprintf (tmpstr, "zu%d_time%d", zu_index, revise_times); rw_cfg_read_time (usercfgfile, g_pReciteWord->now_book-> bookfilename, tmpstr, &last_time); between_time = (revise_times * (24 * 60 * 60)) - (12 * 60 * 60); std::time_t now = std::time (0); if (difftime (now, last_time) > between_time) { found_group++; if (found_group <= 5) //only show the first 5 groups. { this->revise_zu_index[found_group-1] = zu_index; if (revise_times > 4) create_plane (4,found_group-1); else create_plane (revise_times,found_group-1); } } } } zu_index++; if (zu_index > g_pReciteWord->max_zu_index) //the current book is search over....will try old books. found = FALSE; } sprintf(tmpstr,_("found %ld groups in total"),found_group); total_groups_label = gtk_label_new(tmpstr); gtk_fixed_put (GTK_FIXED (g_pReciteWord->fixed), total_groups_label, Skin->revise_group.total_groups_label.x[0], Skin->revise_group.total_groups_label.y[0]); gtk_widget_show (total_groups_label); }
int reply_handler(struct atc_conn * conn){ int aux; struct atc_res * response = &conn->res; response->type = atc_ack; response->msg.return_code = 0; switch (conn->req.type){ case atc_speed_up: if (set(speed_up, &(conn->req.plane)) == -1){ response->msg.return_code = -1; } break; case atc_speed_down: if(set(speed_down, &(conn->req.plane)) == -1){ response->msg.return_code = -1; } break; case atc_turn_left: if(set(turn_left, &(conn->req.plane)) == -1){ response->msg.return_code = -1; } break; case atc_turn_right: if(set(turn_right, &(conn->req.plane)) == -1){ response->msg.return_code = -1; } break; case atc_ascend: if (set(climb, &(conn->req.plane)) == -1){ response->msg.return_code = -1; } break; case atc_descend: if(set(descend, &(conn->req.plane)) == -1){ response->msg.return_code = -1; } break; case atc_get_planes: response->type = atc_planes; aux = get_airplanes(response->msg.planes); if (aux == -1){ response->msg.return_code = -1; }else{ response->len.planes = aux; } break; case atc_get_airports: response->type = atc_airports; response->len.airports = get_airports(response->msg.airports); break; case atc_get_landed: response->type = atc_ack; aux = get_landed(); if (aux == -1){ response->msg.return_code = -1; }else{ response->msg.return_code = aux; } break; case atc_get_crashed: response->type = atc_ack; aux = get_crashed(); if (aux == -1){ response->msg.return_code = -1; }else{ response->msg.return_code = aux; } break; case atc_create_plane: create_plane(); break; case atc_join: break; case atc_leave: puts("Hanging"); return -1; break; } return 0; }
/** to initialize the scene with the default one. */ void make_test_scene (int xsize, int ysize) { //camera set_camera (0.f, 4.f, -4.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f, 90.f, xsize, ysize); //objects Material * plastic = create_plastic_mat (0.6f, 0.5f, 0.5f, 0.6f, 0.5f, 0.5f, 100.f); // ground plane Geometry * plane = create_plane (0.f, -1.f, 0.f, 0.f, 1.f, 0.f); add_object (plane, plastic); // Up row // base objects Geometry *boxLeft = create_box (-2.f, 3.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.25f, 1.f, 1.f, 1.f, 1.f); Geometry *sphereLeft = create_sphere (-2.f, 3.f, 0.f, 0.65f); Geometry *boxCenter = create_box (0.f, 3.25f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.25f, 1.f, 1.f, 1.f, 1.f); Geometry *sphereCenter = create_sphere (0.f, 3.25f, 0.f, 0.65f); Geometry *boxRight = create_box (2.f, 3.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.25f, 1.f, 1.f, 1.f, 1.f); Geometry *sphereRight = create_sphere (2.f, 3.f, 0.f, 0.65f); // CSG objects Geometry *unionUp = create_csg_union (boxLeft, sphereLeft); Geometry *intersectionUp = create_csg_intersection(boxCenter, sphereCenter); Geometry *differenceUp = create_csg_difference(boxRight, sphereRight); add_object (unionUp, plastic); add_object (intersectionUp, plastic); add_object (differenceUp, plastic); // Middle row // base objects Geometry *coneLeft = create_cone(-2.25f, 1.f, -1.25f, -2.25f, 3.f, -1.25f, 0.5f); Geometry *cylinderLeft = create_cylinder(-2.25f, 1.75f, -1.25f, 0.5f, 0.f, 1.f, 0.25f, 1.5f); Geometry *coneCenter = create_cone(0.f, 1.5f, -0.75f, 0.f, 3.5f, -0.75f, 0.5f); Geometry *cylinderCenter = create_cylinder(0.f, 2.25f, -0.75f, 0.5f, 0.f, 1.f, 0.25f, 1.5f); Geometry *coneRight = create_cone(2.25f, 1.f, -1.25f, 2.25f, 3.f, -1.25f, 0.5f); Geometry *cylinderRight = create_cylinder(2.25f, 1.75f, -1.25f, 0.5f, 0.f, 1.f, 0.25f, 1.5f); // CSG objects Geometry * unionDown = create_csg_union (coneLeft, cylinderLeft); Geometry * intersectionDown = create_csg_intersection(coneCenter, cylinderCenter); Geometry * differenceDown = create_csg_difference(coneRight, cylinderRight); add_object (unionDown, plastic); add_object (intersectionDown, plastic); add_object (differenceDown, plastic); // front object char complex_tree[] = "(- (* (bo 0. 2.5 -3.25 1. 0. 0. 0. 0. 1. 1.0 1.0 1.0) (sp 0. 2.5 -3.25 0.65) ) (+ (cy 0. 2.5 -3.25 1.0 0.0 0.0 0.3 1.75) (+ (cy 0. 2.5 -3.25 0.0 1.0 0.0 0.3 1.75) (cy 0. 2.5 -3.25 0.0 0.0 1.0 0.3 1.75) ) ) )"; Geometry *tree = csg_parse(complex_tree); if (tree) add_object (tree, plastic); //lights // Front light -- white add_light (0.f, 5.f, -1.5f, 1.5f, 1.5f, 1.5f); // Back light -- blue add_light (4.f, 2.f, 10.f, 0.1f, 0.1f, 0.9f); // Left light -- red add_light (-4.f, 5.f, -2.f, 0.9f, 0.1f, 0.1f); }
bool create_plane(NodeInstance& node, const Context& context, uint32_t flags) { add_part(node.mesh); return create_plane(node.mesh, context, flags); }
/*...screate_z_gt_plane \45\ create plane solid for z \62\\61\ some value:0:*/ PLANE *create_z_gt_plane(double z) { return create_plane(0.0, 0.0, -1.0, z); }
/*...screate_z_lt_plane \45\ create plane solid for z \60\\61\ some value:0:*/ PLANE *create_z_lt_plane(double z) { return create_plane(0.0, 0.0, 1.0, -z); }
/*...screate_y_gt_plane \45\ create plane solid for y \62\\61\ some value:0:*/ PLANE *create_y_gt_plane(double y) { return create_plane(0.0, -1.0, 0.0, y); }
/*...screate_y_lt_plane \45\ create plane solid for y \60\\61\ some value:0:*/ PLANE *create_y_lt_plane(double y) { return create_plane(0.0, 1.0, 0.0, -y); }
/*...screate_x_gt_plane \45\ create plane solid for x \62\\61\ some value:0:*/ PLANE *create_x_gt_plane(double x) { return create_plane(-1.0, 0.0, 0.0, x); }
/*...screate_x_lt_plane \45\ create plane solid for x \60\\61\ some value:0:*/ PLANE *create_x_lt_plane(double x) { return create_plane(1.0, 0.0, 0.0, -x); }