protected override void Read(DataStreamReader stream) { var readerLength = Readers.Count; for (int i = 0; i < readerLength; i++) { INetworkReader reader = Readers[i]; var context = default(DataStreamReader.Context); var header = reader.Match(stream, ref context); if (!header.Matched) { continue; } reader.Read(stream, ref context); // Need to come up with a nicer way if (reader is SpawnRPC spawnRpc) { var spawner = FindObjectOfType <SpawnSystem>(); var spawnData = spawnRpc.Data; var position = spawnData.Position; var rotation = spawnData.Rotation; spawner.SpawnInClient(spawnData.PrefabId, spawnData.InstanceId, (int)spawnData.Ownership, position, rotation, this); } } }
private void ThreadProc() { while (!exit) { try { var args = new IncommingMessageEventArgs <E> { Message = reader.Read(), Sender = reader.Sender }; IncomingMessage?.Invoke(this, args); } catch (System.Net.Sockets.SocketException e) { } catch (Exception e) { string message = e.Message; string caption = "Error Detected in Input"; MessageBoxButtons buttons = MessageBoxButtons.OK; var result = MessageBox.Show(message, caption, buttons); } } }
protected override void Read(int connectionId, DataStreamReader stream, ref DataStreamReader.Context context) { var readerLength = Readers.Count; for (int i = 0; i < readerLength; i++) { INetworkReader reader = Readers[i]; var readerContext = default(DataStreamReader.Context); var header = reader.Match(stream, ref readerContext); if (!header.Matched) { continue; } reader.Read(stream, ref readerContext); // TODO This should be refactored to not have to check if (reader is SpawnRequestRPC spawnRpc) { var spawner = FindObjectOfType <SpawnSystem>(); var spawnData = spawnRpc.Data; // Passing the connection id will make it owned by the connection. spawner.SpawnInServer(spawnData.PrefabId, spawnData.Position, spawnData.Rotation, null); } SuccessfullyRead(reader, connectionId); } }