diff options
author | Perttu Ahola <celeron55@gmail.com> | 2013-05-02 23:52:50 +0300 |
---|---|---|
committer | sapier <Sapier at GMX dot net> | 2014-02-01 18:34:26 +0100 |
commit | 86a6cca3cf641fc2c88184ad26d2be3d7e7460f7 (patch) | |
tree | 25406b5df8244667ae3c494eaf3f945be1d0ae2b /src/game.cpp | |
parent | e258675eabc874d31bc9c6cf49e4bbc1f7f3f417 (diff) | |
download | minetest-86a6cca3cf641fc2c88184ad26d2be3d7e7460f7.tar.gz minetest-86a6cca3cf641fc2c88184ad26d2be3d7e7460f7.tar.bz2 minetest-86a6cca3cf641fc2c88184ad26d2be3d7e7460f7.zip |
Add player:set_sky() with simple skybox support
Diffstat (limited to 'src/game.cpp')
-rw-r--r-- | src/game.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/game.cpp b/src/game.cpp index 407672ac2..ef694b6af 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1337,6 +1337,8 @@ void the_game( Sky *sky = NULL; sky = new Sky(smgr->getRootSceneNode(), smgr, -1, client.getEnv().getLocalPlayer()); + + scene::ISceneNode* skybox = NULL; /* A copy of the local inventory @@ -2462,6 +2464,40 @@ void the_game( delete event.hudchange.v2fdata; delete event.hudchange.sdata; } + else if (event.type == CE_SET_SKY) + { + sky->setVisible(false); + if(skybox){ + skybox->drop(); + skybox = NULL; + } + // Handle according to type + if(*event.set_sky.type == "regular"){ + sky->setVisible(true); + } + else if(*event.set_sky.type == "skybox" && + event.set_sky.params->size() == 6){ + sky->setFallbackBgColor(*event.set_sky.bgcolor); + skybox = smgr->addSkyBoxSceneNode( + tsrc->getTexture((*event.set_sky.params)[0]), + tsrc->getTexture((*event.set_sky.params)[1]), + tsrc->getTexture((*event.set_sky.params)[2]), + tsrc->getTexture((*event.set_sky.params)[3]), + tsrc->getTexture((*event.set_sky.params)[4]), + tsrc->getTexture((*event.set_sky.params)[5])); + } + // Handle everything else as plain color + else { + if(*event.set_sky.type != "plain") + infostream<<"Unknown sky type: " + <<(*event.set_sky.type)<<std::endl; + sky->setFallbackBgColor(*event.set_sky.bgcolor); + } + + delete event.set_sky.bgcolor; + delete event.set_sky.type; + delete event.set_sky.params; + } } } |