Fix missing initialization of confirmed item ticks in child server

This commit is contained in:
Benau
2020-03-15 10:14:29 +08:00
parent 846ee94247
commit 2cf36570c4
3 changed files with 12 additions and 2 deletions

View File

@@ -41,7 +41,14 @@ NetworkItemManager::NetworkItemManager()
{
m_confirmed_switch_ticks = -1;
m_last_confirmed_item_ticks.clear();
initServer();
} // NetworkItemManager
//-----------------------------------------------------------------------------
/** If this is a server, initializing the peers in game
*/
void NetworkItemManager::initServer()
{
if (NetworkConfig::get()->isServer())
{
auto peers = STKHost::get()->getPeers();
@@ -52,8 +59,7 @@ NetworkItemManager::NetworkItemManager()
m_last_confirmed_item_ticks[p] = 0;
}
}
} // NetworkItemManager
} // initServer
//-----------------------------------------------------------------------------
/** Destructor. Cleans up all items and meshes stored.

View File

@@ -110,6 +110,8 @@ public:
void saveCompleteState(BareNetworkString* buffer) const;
// ------------------------------------------------------------------------
void restoreCompleteState(const BareNetworkString& buffer);
// ------------------------------------------------------------------------
void initServer();
}; // NetworkItemManager

View File

@@ -2942,6 +2942,8 @@ void Track::initChildTrack()
// Add in child process for rewind manager
std::dynamic_pointer_cast<NetworkItemManager>
(m_item_manager)->rewinderAdd();
std::dynamic_pointer_cast<NetworkItemManager>
(m_item_manager)->initServer();
// We call physics init in child process too
Physics::get()->init(m_aabb_min, m_aabb_max);