Пример #1
0
/** Allocates and initializes a new dynamic Thing. */
Thing * thing_new_dynamic(Area * area, 
                       int id, int kind, 
                       int x, int y, int z, int w, int h) {
  Thing * self = thing_alloc();
  if(!thing_init_dynamic(self, area, id, kind, x, y, z, w, h)) {
    return thing_free(self); 
  }
  return self;
}
Пример #2
0
void scene_free(scene_t *scene) {
    int i;
    glDisable(GL_LIGHT0);
    glDisable(GL_LIGHT1);
    glDisable(GL_LIGHT2);
    glDisable(GL_LIGHT3);
    glDisable(GL_LIGHT4);
    glDisable(GL_LIGHT5);
    glDisable(GL_LIGHT6);
    glDisable(GL_LIGHT7);
    if(scene->land) land_free(scene->land);
    if(scene->camera) camera_free(scene->camera);
    if(scene->pathpos) spline_free(scene->pathpos);
    if(scene->pathdir) spline_free(scene->pathdir);
    if(scene->sky) sky_free(scene->sky);
    if(scene->sun) sky_sun_free(scene->sun);
    if(scene->pathsun) spline_free(scene->pathsun);
    for(i = 0; i < scene->num_mesh; i++) thing_mesh_free(scene->mesh[i]);
    if(scene->mesh) free(scene->mesh);
    for(i = 0; i < scene->num_thing; i++) thing_free(scene->thing[i]);
    if(scene->thing) free(scene->thing);
    for(i = 0; i < scene->num_animation; i++) {
        thing_free(scene->animation[i]->thing);
        if(scene->animation[i]->path) spline_free(scene->animation[i]->path);
        free(scene->animation[i]);
    }
    if(scene->animation) free(scene->animation);
    for(i = 0; i < scene->num_particle; i++) {
        particle_free(scene->particle[i]->particle);
        if(scene->particle[i]->path) spline_free(scene->particle[i]->path);
        free(scene->particle[i]);
    }
    if(scene->particle) free(scene->particle);
    for(i = 0; i < scene->num_dynamiclight; i++) {
        dynamiclight_free(scene->dynamiclight[i]->light);
        if(scene->dynamiclight[i]->path) spline_free(scene->dynamiclight[i]->path);
        free(scene->dynamiclight[i]);
    }
    if(scene->dynamiclight) free(scene->dynamiclight);
    free(scene);
}