internal static void OnPlayerCreate(QNetMessage message, QNetMessageReader reader, ref bool disallowRecycle) { JEMLogger.Log("QNet is receiving player create event."); // de-serialized message var serializedPlayer = reader.ReadMessage <QNetPlayerSerialized>(); // resolve qNetPlayer var qNetPlayer = QNetPlayer.GetQNetPlayer(serializedPlayer.ConnectionIdentity); if (qNetPlayer == null) { if (QNetManager.IsHostActive) { throw new InvalidOperationException( $"Host is unable to GetQNetPlayer by identity {serializedPlayer.ConnectionIdentity}."); } qNetPlayer = QNetPlayer.CreateQNetPlayer(serializedPlayer.ConnectionIdentity, serializedPlayer.NickName, 0); } if (QNetManager.Client.ConnectionIdentity == serializedPlayer.ConnectionIdentity) { // do something with local player // we can't TagAsReady because WORLD_SERIALIZED message already do this } else { // tag player as ready qNetPlayer.TagAsReady(); } }
internal static void OnServerObjectCreate(QNetMessage message, QNetMessageReader reader, ref bool disallowRecycle) { // write new object in to serializer var obj = reader.ReadMessage <QNetObjectSerialized>(); //JEMLogger.Log($"Local QNet received object create message. PrefabIdentity -> {obj.PrefabIdentity}, ObjectIdentity -> {obj.ObjectIdentity}, OwnerIdentity -> {obj.OwnerIdentity} at position -> {obj.Position}"); QNetWorldSerializer.WriteSerializedObjectToMemory(new QNetWorldSerializerObject { Object = obj, SerializedServerState = reader }); // disallow to recycle this message disallowRecycle = true; }