Network not longer threaded

This commit is contained in:
stiffly
2015-12-18 12:00:14 +01:00
parent 6d649e4d35
commit a858dab8b6
6 changed files with 90 additions and 102 deletions
+23 -38
View File
@@ -37,21 +37,11 @@ void Client::Start(World* world, EventBroker* eventBroker)
}
m_Socket.connect(m_ReceiverEndpoint);
LOG_INFO("I am client. BIP BOP");
readFromServer();
}
void Client::Update()
{
while (m_PlayersToCreate.size() > 0) {
unsigned int i = m_PlayersToCreate.size() - 1;
unsigned int tempID = m_World->CreateEntity();
ComponentWrapper transform = m_World->AttachComponent(tempID, "Transform");
ComponentWrapper model = m_World->AttachComponent(tempID, "Model");
model["Resource"] = "Models/Core/UnitSphere.obj";
ComponentWrapper player = m_World->AttachComponent(tempID, "Player");
m_PlayerDefinitions[m_PlayersToCreate[i]].EntityID = tempID;
m_PlayersToCreate.pop_back();
}
readFromServer();
}
void Client::Close()
@@ -65,27 +55,19 @@ void Client::Close()
void Client::readFromServer()
{
int bytesRead = -1;
char readBuf[1024] = { 0 };
int snapshotInterval = 33;
std::clock_t previousSnapshotMessage = std::clock();
while (m_ThreadIsRunning) {
if (m_Socket.available()) {
bytesRead = receive(readBuf, INPUTSIZE);
if (bytesRead > 0) {
Packet packet(readBuf, bytesRead);
parseMessageType(packet);
}
if (m_Socket.available()) {
bytesRead = receive(readBuf, INPUTSIZE);
if (bytesRead > 0) {
Packet packet(readBuf, bytesRead);
parseMessageType(packet);
}
std::clock_t currentTime = std::clock();
if (snapshotInterval < (1000 * (currentTime - previousSnapshotMessage) / (double)CLOCKS_PER_SEC)) {
if (isConnected()) {
sendSnapshotToServer();
}
previousSnapshotMessage = currentTime;
}
std::clock_t currentTime = std::clock();
if (snapshotInterval < (1000 * (currentTime - previousSnapshotMessage) / (double)CLOCKS_PER_SEC)) {
if (isConnected()) {
sendSnapshotToServer();
}
previousSnapshotMessage = currentTime;
}
}
@@ -215,7 +197,7 @@ void Client::parseSnapshot(Packet& packet)
// New player connected on the server side
if (m_PlayerDefinitions[i].Name == "" && tempName != "") {
m_PlayerDefinitions[i].Name = tempName;
m_PlayersToCreate.push_back(i);
m_PlayerDefinitions[i].EntityID = createPlayer();
} else if (m_PlayerDefinitions[i].Name != "" && tempName == "") {
// Someone disconnected
// TODO: Insert code here
@@ -321,13 +303,6 @@ bool Client::OnInputCommand(const Events::InputCommand & e)
return false;
}
void Client::createNewPlayer(int i)
{
m_PlayerDefinitions[i].EntityID = m_World->CreateEntity();
ComponentWrapper transform = m_World->AttachComponent(m_PlayerDefinitions[i].EntityID, "Transform");
ComponentWrapper model = m_World->AttachComponent(m_PlayerDefinitions[i].EntityID, "Model");
model["Resource"] = "Models/Core/UnitSphere.obj";
}
void Client::identifyPacketLoss()
{
@@ -347,3 +322,13 @@ bool Client::isConnected()
}
return false;
}
EntityID Client::createPlayer()
{
EntityID entityID = m_World->CreateEntity();
ComponentWrapper transform = m_World->AttachComponent(entityID, "Transform");
ComponentWrapper model = m_World->AttachComponent(entityID, "Model");
model["Resource"] = "Models/Core/UnitSphere.obj";
ComponentWrapper player = m_World->AttachComponent(entityID, "Player");
return entityID;
}