X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=demos%2Fdesertpillars%2Fsource%2Fdesertpillars.cpp;fp=demos%2Fdesertpillars%2Fsource%2Fdesertpillars.cpp;h=513d81743d700dec32bc734eea0ff63357ea4a49;hp=84583551a75d484ca9a2c52d55680897738c6873;hb=be3b67fdd0d0420ffc1e97a6535159c63a97fdc8;hpb=0542080f04c13236dc04a4f19e8a30016ad86bfa diff --git a/demos/desertpillars/source/desertpillars.cpp b/demos/desertpillars/source/desertpillars.cpp index 84583551..513d8174 100644 --- a/demos/desertpillars/source/desertpillars.cpp +++ b/demos/desertpillars/source/desertpillars.cpp @@ -29,6 +29,8 @@ DesertPillars::DesertPillars(int, char **): sphere_morph(0.0f), sphere_frozen(false), sphere_stopped(false), + sun(resources.get("Sun.light")), + sun_angle(Geometry::Angle::from_turns(0.1f)), camera_stopped(false) { window.set_title("Desert Pillars"); @@ -43,7 +45,6 @@ DesertPillars::DesertPillars(int, char **): global_env->set_fixed_position(GL::Vector3(0.0f, 0.0f, 0.0f)); global_env->set_debug_name("Global environment"); - GL::DirectionalLight &sun = resources.get("Sun.light"); sky = make_unique(*global_env, sun); sky->set_debug_name("Sky"); @@ -78,6 +79,10 @@ DesertPillars::DesertPillars(int, char **): view.set_content(sequence.get()); view.set_camera(&camera); + const GL::Vector3 &sun_direction = sun.get_direction(); + sun_node = normalize(GL::Vector3(sun_direction.y, -sun_direction.x, 0.0f)); + sun_axis = normalize(cross(sun_direction, sun_node)); + const GL::Vector3 &cam_pos = camera.get_position(); camera_distance = cam_pos.norm(); camera_angle = Geometry::atan2(cam_pos.y, cam_pos.x); @@ -118,6 +123,9 @@ void DesertPillars::tick() camera.set_look_direction(-cam_dir); } + sun_angle += Geometry::Angle::from_degrees(4*dt/Time::sec); + sun.set_direction(GL::Matrix::rotation(sun_angle, sun_axis)*-sun_node); + display.tick(); view.render(); }