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); } } }
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); } }