Example #1
0
void WorldWeather::update_sky() {
    float frac_cycle = time * 1.0f / time_per_day;
    
    float frac_day = 0.5f + 0.5f * cosf(frac_cycle * 2 * M_PI);
    float frac_night = 0.5f + 0.5f * sinf(frac_cycle * 2 * M_PI);
    
    Rotation* tilt = skybox->get_angle();
    tilt->set_angle(glm::angleAxis((float)(frac_cycle * 2 * M_PI), fvec3(0,0,1)));
    
    dir_light.direction = fvec3(0.5f - frac_day, 0.4f, 0.2f);
    dir_light.direction = glm::normalize(dir_light.direction);
    
    float sun_x;
    if (frac_cycle < 0.5f) {
        // daytime
        sun_x = 0.5f;
    }
    else {
        sun_x = 0.0f;
    }
}