]> git.lizzy.rs Git - minetest.git/blobdiff - src/client.cpp
Add player:set_sky() with simple skybox support
[minetest.git] / src / client.cpp
index 6c4d9eea87a831c6493ef2d63254687b405ae89a..48b00377f36138077191cf76399ce92a2ef7c8a3 100644 (file)
@@ -383,13 +383,6 @@ void Client::step(float dtime)
                // 0ms
                ReceiveAll();
        }
-       
-       {
-               //TimeTaker timer("m_con_mutex + m_con.RunTimeouts()", m_device);
-               // 0ms
-               //JMutexAutoLock lock(m_con_mutex); //bulk comment-out
-               m_con.RunTimeouts(dtime);
-       }
 
        /*
                Packet counter
@@ -758,6 +751,7 @@ void Client::step(float dtime)
        if (m_media_downloader && m_media_downloader->isStarted()) {
                m_media_downloader->step(this);
                if (m_media_downloader->isDone()) {
+                       received_media();
                        delete m_media_downloader;
                        m_media_downloader = NULL;
                }
@@ -1610,11 +1604,6 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
                }
 
                m_media_downloader->step(this);
-               if (m_media_downloader->isDone()) {
-                       // might be done already if all media is in the cache
-                       delete m_media_downloader;
-                       m_media_downloader = NULL;
-               }
        }
        else if(command == TOCLIENT_MEDIA)
        {
@@ -1666,11 +1655,6 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
                        m_media_downloader->conventionalTransferDone(
                                        name, data, this);
                }
-
-               if (m_media_downloader->isDone()) {
-                       delete m_media_downloader;
-                       m_media_downloader = NULL;
-               }
        }
        else if(command == TOCLIENT_TOOLDEF)
        {
@@ -2042,6 +2026,25 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
                        ((LocalPlayer *) player)->hotbar_selected_image = value;
                }
        }
+       else if(command == TOCLIENT_SET_SKY)
+       {
+               std::string datastring((char *)&data[2], datasize - 2);
+               std::istringstream is(datastring, std::ios_base::binary);
+
+               video::SColor *bgcolor = new video::SColor(readARGB8(is));
+               std::string *type = new std::string(deSerializeString(is));
+               u16 count = readU16(is);
+               std::vector<std::string> *params = new std::vector<std::string>;
+               for(size_t i=0; i<count; i++)
+                       params->push_back(deSerializeString(is));
+
+               ClientEvent event;
+               event.type = CE_SET_SKY;
+               event.set_sky.bgcolor = bgcolor;
+               event.set_sky.type = type;
+               event.set_sky.params = params;
+               m_client_event_queue.push_back(event);
+       }
        else
        {
                infostream<<"Client: Ignoring unknown command "