diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-04-29 17:53:07 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-04-29 17:53:07 +0300 |
commit | a73b10eb1c17d7be32c432cb15f508c7f99c5209 (patch) | |
tree | ce4fa21383c638c82e5b1f74dea9554e13838453 /src | |
parent | a5df5f82919ef2cd76942f379d9eca1f5264d599 (diff) | |
download | minetest-a73b10eb1c17d7be32c432cb15f508c7f99c5209.tar.gz minetest-a73b10eb1c17d7be32c432cb15f508c7f99c5209.tar.bz2 minetest-a73b10eb1c17d7be32c432cb15f508c7f99c5209.zip |
made proper skyboxes for dawn/evening and night
Diffstat (limited to 'src')
-rw-r--r-- | src/game.cpp | 66 | ||||
-rw-r--r-- | src/utility.h | 3 |
2 files changed, 59 insertions, 10 deletions
diff --git a/src/game.cpp b/src/game.cpp index 8981638a8..771b05d87 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -580,6 +580,47 @@ void getPointedNode(Client *client, v3f player_position, } // for coords } +void update_skybox(video::IVideoDriver* driver, + scene::ISceneManager* smgr, scene::ISceneNode* &skybox, + float brightness) +{ + if(skybox) + { + skybox->remove(); + } + + if(brightness >= 0.5) + { + skybox = smgr->addSkyBoxSceneNode( + driver->getTexture(porting::getDataPath("skybox2.png").c_str()), + driver->getTexture(porting::getDataPath("skybox3.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1.png").c_str())); + } + else if(brightness >= 0.2) + { + skybox = smgr->addSkyBoxSceneNode( + driver->getTexture(porting::getDataPath("skybox2_dawn.png").c_str()), + driver->getTexture(porting::getDataPath("skybox3_dawn.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1_dawn.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1_dawn.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1_dawn.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1_dawn.png").c_str())); + } + else + { + skybox = smgr->addSkyBoxSceneNode( + driver->getTexture(porting::getDataPath("skybox2_night.png").c_str()), + driver->getTexture(porting::getDataPath("skybox3_night.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1_night.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1_night.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1_night.png").c_str()), + driver->getTexture(porting::getDataPath("skybox1_night.png").c_str())); + } +} + void the_game( bool &kill, bool random_input, @@ -718,14 +759,9 @@ void the_game( /* Create skybox */ - scene::ISceneNode* skybox; - skybox = smgr->addSkyBoxSceneNode( - driver->getTexture(porting::getDataPath("skybox2.png").c_str()), - driver->getTexture(porting::getDataPath("skybox3.png").c_str()), - driver->getTexture(porting::getDataPath("skybox1.png").c_str()), - driver->getTexture(porting::getDataPath("skybox1.png").c_str()), - driver->getTexture(porting::getDataPath("skybox1.png").c_str()), - driver->getTexture(porting::getDataPath("skybox1.png").c_str())); + float old_brightness = 1.0; + scene::ISceneNode* skybox = NULL; + update_skybox(driver, smgr, skybox, 1.0); /* Create the camera node @@ -1682,12 +1718,24 @@ void the_game( skycolor.getGreen() * l / 255, skycolor.getBlue() * l / 255);*/ + float brightness = (float)l/255.0; + + /* + Update skybox + */ + if(fabs(brightness - old_brightness) > 0.01) + update_skybox(driver, smgr, skybox, brightness); + /* Update coulds */ clouds->step(dtime); - clouds->update(v2f(player_position.X, player_position.Z), (float)l/255.0); + clouds->update(v2f(player_position.X, player_position.Z), + 0.05+brightness*0.95); + // Store brightness value + old_brightness = brightness; + /* Fog */ diff --git a/src/utility.h b/src/utility.h index 9c2099fb8..5cb3080a7 100644 --- a/src/utility.h +++ b/src/utility.h @@ -2001,7 +2001,8 @@ inline u32 time_to_daynight_ratio(u32 time_of_day) s32 d = daylength; s32 t = (((time_of_day)%24000)/(24000/d)); if(t < nightlength/2 || t >= d - nightlength/2) - return 300; + //return 300; + return 350; else if(t >= d/2 - daytimelength/2 && t < d/2 + daytimelength/2) return 1000; else |