Skip to content
Snippets Groups Projects
Commit 089f9bbe authored by Jeija's avatar Jeija Committed by est31
Browse files

Resend blocks when modified while sending to client

parent 2c72f6da
No related branches found
No related tags found
No related merge requests found
......@@ -370,17 +370,21 @@ void RemoteClient::GetNextBlocks (
void RemoteClient::GotBlock(v3s16 p)
{
if(m_blocks_sending.find(p) != m_blocks_sending.end())
m_blocks_sending.erase(p);
else
{
m_excess_gotblocks++;
if (m_blocks_modified.find(p) == m_blocks_modified.end()) {
if (m_blocks_sending.find(p) != m_blocks_sending.end())
m_blocks_sending.erase(p);
else
m_excess_gotblocks++;
m_blocks_sent.insert(p);
}
m_blocks_sent.insert(p);
}
void RemoteClient::SentBlock(v3s16 p)
{
if (m_blocks_modified.find(p) != m_blocks_modified.end())
m_blocks_modified.erase(p);
if(m_blocks_sending.find(p) == m_blocks_sending.end())
m_blocks_sending[p] = 0.0;
else
......@@ -397,6 +401,7 @@ void RemoteClient::SetBlockNotSent(v3s16 p)
m_blocks_sending.erase(p);
if(m_blocks_sent.find(p) != m_blocks_sent.end())
m_blocks_sent.erase(p);
m_blocks_modified.insert(p);
}
void RemoteClient::SetBlocksNotSent(std::map<v3s16, MapBlock*> &blocks)
......@@ -409,6 +414,7 @@ void RemoteClient::SetBlocksNotSent(std::map<v3s16, MapBlock*> &blocks)
i != blocks.end(); ++i)
{
v3s16 p = i->first;
m_blocks_modified.insert(p);
if(m_blocks_sending.find(p) != m_blocks_sending.end())
m_blocks_sending.erase(p);
......
......@@ -394,6 +394,16 @@ class RemoteClient
*/
std::map<v3s16, float> m_blocks_sending;
/*
Blocks that have been modified since last sending them.
These blocks will not be marked as sent, even if the
client reports it has received them to account for blocks
that are being modified while on the line.
List of block positions.
*/
std::set<v3s16> m_blocks_modified;
/*
Count of excess GotBlocks().
There is an excess amount because the client sometimes
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment