private void _network_MessageRecieved(RemoteSim sim, object[] messages) { foreach (var message in messages) { switch (message) { case EntityAdded added: ProcessEntityAdded(added); break; case EntityRemoved removed: RemoveEntityInternal(removed.EntityId); break; case EntityMessage <DeltaEnvelope> delta: if (_entities.ContainsKey(delta.EntityId)) { var entity = _entities[delta.EntityId]; entity.RecieveDeltas(delta.Message); } break; case EntityMessage <FrameCommands> cmd: if (!_recievedFrameRecords.ContainsKey(cmd.Message.SentTimestamp)) { _recievedFrameRecords.Add(cmd.Message.SentTimestamp, new List <EntityMessage <FrameCommands> >()); } _recievedFrameRecords[cmd.Message.SentTimestamp].Add(cmd); break; } } }
private void _network_PeerDisconnected(RemoteSim sim) { if (sim.Role == InstanceRole.OWNER) { OwnerSimDisconnecting?.Invoke(_ownerSim); _ownerSim = null; } else { ClientSimDisconnecting?.Invoke(sim); _clientSims.Remove(sim); } }
private void _network_PeerConnected(RemoteSim sim) { if (sim.Role == InstanceRole.OWNER) { _ownerSim = sim; OwnerSimConnected?.Invoke(_ownerSim); } else { _clientSims.Add(sim); ClientSimConnected?.Invoke(sim); } }