From a73b10eb1c17d7be32c432cb15f508c7f99c5209 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Fri, 29 Apr 2011 17:53:07 +0300 Subject: made proper skyboxes for dawn/evening and night --- data/skybox1_dawn.png | Bin 0 -> 598 bytes data/skybox1_night.png | Bin 0 -> 2247 bytes data/skybox2_dawn.png | Bin 0 -> 199 bytes data/skybox2_night.png | Bin 0 -> 2583 bytes data/skybox3_dawn.png | Bin 0 -> 190 bytes data/skybox3_night.png | Bin 0 -> 190 bytes src/game.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++------- src/utility.h | 3 ++- 8 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 data/skybox1_dawn.png create mode 100644 data/skybox1_night.png create mode 100644 data/skybox2_dawn.png create mode 100644 data/skybox2_night.png create mode 100644 data/skybox3_dawn.png create mode 100644 data/skybox3_night.png diff --git a/data/skybox1_dawn.png b/data/skybox1_dawn.png new file mode 100644 index 000000000..9711c4781 Binary files /dev/null and b/data/skybox1_dawn.png differ diff --git a/data/skybox1_night.png b/data/skybox1_night.png new file mode 100644 index 000000000..32e43a63e Binary files /dev/null and b/data/skybox1_night.png differ diff --git a/data/skybox2_dawn.png b/data/skybox2_dawn.png new file mode 100644 index 000000000..a761dff2d Binary files /dev/null and b/data/skybox2_dawn.png differ diff --git a/data/skybox2_night.png b/data/skybox2_night.png new file mode 100644 index 000000000..beb07a9cf Binary files /dev/null and b/data/skybox2_night.png differ diff --git a/data/skybox3_dawn.png b/data/skybox3_dawn.png new file mode 100644 index 000000000..22c8cbef5 Binary files /dev/null and b/data/skybox3_dawn.png differ diff --git a/data/skybox3_night.png b/data/skybox3_night.png new file mode 100644 index 000000000..bb509789b Binary files /dev/null and b/data/skybox3_night.png differ 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 -- cgit v1.2.3