void set_file (GtkFileChooserButton *widget, gpointer user_data) { const char *fname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(widget)); Skeleton *x = new Skeleton(); if (x->load(fname)) { if (skl) delete skl; skl = x; clear_surface(); gtk_widget_queue_draw(GTK_WIDGET(user_data)); } }
void init() { new Logger; new Settings; ERR_CODE ret = settings.load(CONFIG); if (ret != NONE) { logger.logln(LOG_USER | LOG_FILE, "An error occurred while loading the default settings file (" + CONFIG + "): " + errString(ret)); delete loggerPtr; delete settingsPtr; exit(0); } new TextureManager; new SkeletonManager; atexit(cleanUp); srand(time(0)); //plant.parse(); Skeleton *skel = new Skeleton; ret = skel->load("HumanSkel"); if (ret != NONE) { delete skel; die("An error occurred while loading skeleton file: " + errString(ret)); } ret = skel->add_animation("idle"); if (ret != NONE) { delete skel; die("An error occurred while loading idle animation file: " + errString(ret)); } skeletonManager.add_skeleton(skel); #ifdef ANIMATION ret = animation.link_skeleton("HumanSkel"); if (ret != NONE) die("An error occurred while linking skeleton to animation: " + errString(ret)); ret = animation.animate("idle", true); if (ret != NONE) die("An error occurred in starting idle animation: " + errString(ret)); #else ret = mesh.load("human.mesh"); if (ret != NONE) die("An error occurred while loading mesh file: " + errString(ret)); ret = mesh.animate("idle", true); if (ret != NONE) die("An error occurred while animating mesh: " + errString(ret)); #endif cam.advance(-15.0); setPerspective(); glViewport(0, 0, WIDTH, HEIGHT); glClearColor(0.0, 0.0, 0.0, 1.0); glFogi(GL_FOG_MODE, GL_LINEAR); glFogfv(GL_FOG_COLOR, fog_color); glFogf(GL_FOG_DENSITY, 0.25f); glHint(GL_FOG_HINT, GL_DONT_CARE); glFogf(GL_FOG_START, 1.0f); glFogf(GL_FOG_END, 5.0f); glEnable(GL_DEPTH_TEST); glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); Image front, back, right, left, up, down; #define CHECK_RET_NAME(x, name) if ((ret = x.load(name ".tga")) != NONE) die("Error while loading " name ".tga: " + errString(ret)); #define CHECK_RET(x) CHECK_RET_NAME(x, #x) CHECK_RET(front); CHECK_RET(back); CHECK_RET(right); CHECK_RET(left); CHECK_RET(up); CHECK_RET(down); Image img_grass, img_snow; CHECK_RET_NAME(img_grass, "grass"); CHECK_RET_NAME(img_snow, "snow"); grass = textureManager.load(img_grass); snow_tex = textureManager.load(img_snow); box.init(front, left, back, right, up, down); }