From 0ca9423b8b2cf7bd1435fb09eba7a9f50d444864 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 19 Dec 2010 16:51:45 +0200 Subject: day/night working client side --- src/client.cpp | 132 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 113 insertions(+), 19 deletions(-) (limited to 'src/client.cpp') diff --git a/src/client.cpp b/src/client.cpp index 9fc9ebce6..b4871ff61 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -47,6 +47,8 @@ void * ClientUpdateThread::Thread() { m_client->asyncStep(); + //m_client->updateSomeExpiredMeshes(); + bool was = m_client->AsyncProcessData(); if(was == false) @@ -84,7 +86,15 @@ Client::Client(IrrlichtDevice *device, m_inventory_updated(false), m_time(0), m_time_counter(0.0) + //m_daynight_i(0) + //m_daynight_ratio(1000) { + m_packetcounter_timer = 0.0; + m_delete_unused_sectors_timer = 0.0; + m_connection_reinit_timer = 0.0; + m_avg_rtt_timer = 0.0; + m_playerpos_send_timer = 0.0; + //m_fetchblock_mutex.Init(); m_incoming_queue_mutex.Init(); m_env_mutex.Init(); @@ -154,14 +164,41 @@ void Client::step(float dtime) m_time += seconds; if(seconds > 0) { - dstream<<"m_time="<= 0 && m_daynight_i < DAYNIGHT_CACHE_COUNT); + return m_daynight_i; +}*/ + +u32 Client::getDayNightRatio() { JMutexAutoLock envlock(m_env_mutex); - return m_env.getDaylightRatio(); + return m_env.getDayNightRatio(); } +/*void Client::updateSomeExpiredMeshes() +{ + TimeTaker timer("updateSomeExpiredMeshes()", g_device); + + Player *player; + { + JMutexAutoLock envlock(m_env_mutex); + player = m_env.getLocalPlayer(); + } + + u32 daynight_ratio = getDayNightRatio(); + + v3f playerpos = player->getPosition(); + v3f playerspeed = player->getSpeed(); + + v3s16 center_nodepos = floatToInt(playerpos); + v3s16 center = getNodeBlockPos(center_nodepos); + + u32 counter = 0; + + s16 d_max = 5; + + for(s16 d = 0; d <= d_max; d++) + { + core::list list; + getFacePositions(list, d); + + core::list::Iterator li; + for(li=list.begin(); li!=list.end(); li++) + { + v3s16 p = *li + center; + MapBlock *block = NULL; + try + { + //JMutexAutoLock envlock(m_env_mutex); + block = m_env.getMap().getBlockNoCreate(p); + } + catch(InvalidPositionException &e) + { + } + + if(block == NULL) + continue; + + if(block->getMeshExpired() == false) + continue; + + block->updateMesh(daynight_ratio); + + counter++; + if(counter >= 5) + return; + } + } +}*/ + -- cgit v1.2.3