コード例 #1
0
        internal static void OnClientLevelLoaded(QNetMessage message, QNetMessageReader reader, ref bool disallowRecycle)
        {
            // SERVER: player loads level
            if (QNetManager.IsHostActive)
            {
                if (QNetManager.Client.ConnectionIdentity == reader.Connection.ConnectionIdentity)
                {
                    // loaded level message has been send from host client, send only WORLD_SERIALIZATION message
                    QNetManager.Server.Send(reader.Connection, QNetLocalChannel.DEFAULT,
                                            QNetMessageMethod.ReliableOrdered, QNetUnityLocalHeader.WORLD_SERIALIZATION);
                    return;
                }
            }

            JEMLogger.Log($"Connection {reader.Connection} loads level. Sending world objects.");

            // send WORLD_SERIALIZING message to prepare client
            QNetManager.Server.Send(reader.Connection, QNetLocalChannel.DEFAULT, QNetMessageMethod.ReliableOrdered,
                                    QNetUnityLocalHeader.WORLD_SERIALIZING);

            // send all objects to client
            QNetServerObjects.SendAllObjectsToConnection(reader.Connection);

            // send WORLD_SERIALIZATION message to start object loading on client
            QNetManager.Server.Send(reader.Connection, QNetLocalChannel.DEFAULT, QNetMessageMethod.ReliableOrdered,
                                    QNetUnityLocalHeader.WORLD_SERIALIZATION);
        }
コード例 #2
0
        /// <summary>
        ///     Tags this player as not ready.
        ///     An actual unloading method.
        /// </summary>
        public void TagAsNotReady()
        {
            if (!Ready)
            {
                throw new InvalidOperationException("Unable to tag player as not ready while is already not ready.");
            }

            JEMLogger.Log($"> Tagging player {ToString()} as not ready.");

            Ready = false;

            JEMLogger.Log("> (Tagging) De-Initializing player on server side.");

            // destroy all owned objects
            QNetServerObjects.DestroyAllOwnedObjectsOfConnection(Connection);

            JEMLogger.Log($"> Player {ToString()} is now not ready.");
        }