static void freeSnowglobe (CompScreen *s) { SNOWGLOBE_SCREEN (s); if (as->snow) free (as->snow); freeWater (as->water); freeWater (as->ground); glDeleteLists(as->snowflakeDisplayList, 1); }
void freeScene(Scene * scene) { freeCamera(scene->camera); freeWorld(scene->world); freeWater(scene->water); free(scene->context); free(scene); glfwTerminate(); }
void updateGround (CompScreen *s, float time) { SNOWGLOBE_SCREEN (s); CUBE_SCREEN (s); int sDiv = snowglobeGetGridQuality (s); int size = s->hsize * cs->nOutput; Bool update = FALSE; if (!as->ground) { as->ground = genWater (size, sDiv, cs->distance, -0.5); update = TRUE; } if (!as->ground) return; if (as->ground->size != size || as->ground->sDiv != sDiv || as->ground->distance != cs->distance) { freeWater (as->ground); as->ground = genWater (size, sDiv, cs->distance, -0.5); update = TRUE; if (!as->ground) return; } if (!update) return; as->ground->wave1 = (float)(rand() & 15) / 15.0; as->ground->wave2 = (float)(rand() & 15) / 15.0; as->ground->bh = -0.45; as->ground->wa = 0.1; as->ground->swa = 0.02; as->ground->wf = 2.0; as->ground->swf = 10.0; updateHeight (as->ground); }
void updateWater (CompScreen *s, float time) { SNOWGLOBE_SCREEN (s); CUBE_SCREEN (s); int sDiv = 0; int size = s->hsize * cs->nOutput; if (!as->water) as->water = genWater (size, sDiv, cs->distance, -0.5); if (!as->water) return; if (as->water->size != size || as->water->sDiv != sDiv || as->water->distance != cs->distance) { freeWater (as->water); as->water = genWater (size, sDiv, cs->distance, -0.5); if (!as->water) return; } as->water->wave1 += 0; as->water->wave2 += 0; as->water->wave1 = 0; as->water->wave2 = 0; as->water->bh = 0.5; as->water->wa = 0.0; as->water->swa = 0.0; as->water->wf = 0.0; as->water->swf = 0.0; }