summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/skybox1_dawn.pngbin0 -> 598 bytes
-rw-r--r--data/skybox1_night.pngbin0 -> 2247 bytes
-rw-r--r--data/skybox2_dawn.pngbin0 -> 199 bytes
-rw-r--r--data/skybox2_night.pngbin0 -> 2583 bytes
-rw-r--r--data/skybox3_dawn.pngbin0 -> 190 bytes
-rw-r--r--data/skybox3_night.pngbin0 -> 190 bytes
-rw-r--r--src/game.cpp66
-rw-r--r--src/utility.h3
8 files changed, 59 insertions, 10 deletions
diff --git a/data/skybox1_dawn.png b/data/skybox1_dawn.png
new file mode 100644
index 000000000..9711c4781
--- /dev/null
+++ b/data/skybox1_dawn.png
Binary files differ
diff --git a/data/skybox1_night.png b/data/skybox1_night.png
new file mode 100644
index 000000000..32e43a63e
--- /dev/null
+++ b/data/skybox1_night.png
Binary files differ
diff --git a/data/skybox2_dawn.png b/data/skybox2_dawn.png
new file mode 100644
index 000000000..a761dff2d
--- /dev/null
+++ b/data/skybox2_dawn.png
Binary files differ
diff --git a/data/skybox2_night.png b/data/skybox2_night.png
new file mode 100644
index 000000000..beb07a9cf
--- /dev/null
+++ b/data/skybox2_night.png
Binary files differ
diff --git a/data/skybox3_dawn.png b/data/skybox3_dawn.png
new file mode 100644
index 000000000..22c8cbef5
--- /dev/null
+++ b/data/skybox3_dawn.png
Binary files differ
diff --git a/data/skybox3_night.png b/data/skybox3_night.png
new file mode 100644
index 000000000..bb509789b
--- /dev/null
+++ b/data/skybox3_night.png
Binary files 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