private int GenNextId()
{
int id = 0;
int startId = 0;
if (GlobalVariables.Instance.IsClient) {
startId = c_StartId_Client;
while (m_UnusedClientIds.Count > 100) {
int t = m_UnusedClientIds.Pop();
if (!m_Entities.Contains(t)) {
id = t;
break;
}
}
} else {
startId = c_StartId;
while (m_UnusedIds.Count > 100) {
int t = m_UnusedIds.Pop();
if (!m_Entities.Contains(t)) {
id = t;
break;
}
}
}
if (id <= 0) {
for (int i = 0; i < c_MaxIdNum; ++i) {
int t = (m_NextInfoId + i - startId) % c_MaxIdNum + startId;
if (!m_Entities.Contains(t)) {
id = t;
break;
}
}
if (id > 0) {
m_NextInfoId = (id + 1 - startId) % c_MaxIdNum + startId;
}
}
return id;
}