made proper skyboxes for dawn/evening and night

This commit is contained in:
Perttu Ahola 2011-04-29 17:53:07 +03:00
parent a5df5f8291
commit a73b10eb1c
8 changed files with 59 additions and 10 deletions

BIN
data/skybox1_dawn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

BIN
data/skybox1_night.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
data/skybox2_dawn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

BIN
data/skybox2_night.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
data/skybox3_dawn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

BIN
data/skybox3_night.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

@ -580,6 +580,47 @@ void getPointedNode(Client *client, v3f player_position,
} // for coords } // 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( void the_game(
bool &kill, bool &kill,
bool random_input, bool random_input,
@ -718,14 +759,9 @@ void the_game(
/* /*
Create skybox Create skybox
*/ */
scene::ISceneNode* skybox; float old_brightness = 1.0;
skybox = smgr->addSkyBoxSceneNode( scene::ISceneNode* skybox = NULL;
driver->getTexture(porting::getDataPath("skybox2.png").c_str()), update_skybox(driver, smgr, skybox, 1.0);
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()));
/* /*
Create the camera node Create the camera node
@ -1682,12 +1718,24 @@ void the_game(
skycolor.getGreen() * l / 255, skycolor.getGreen() * l / 255,
skycolor.getBlue() * 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 Update coulds
*/ */
clouds->step(dtime); 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 Fog
*/ */

@ -2001,7 +2001,8 @@ inline u32 time_to_daynight_ratio(u32 time_of_day)
s32 d = daylength; s32 d = daylength;
s32 t = (((time_of_day)%24000)/(24000/d)); s32 t = (((time_of_day)%24000)/(24000/d));
if(t < nightlength/2 || t >= d - nightlength/2) 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) else if(t >= d/2 - daytimelength/2 && t < d/2 + daytimelength/2)
return 1000; return 1000;
else else