Exemplo n.º 1
0
        private static void LogNewConnection(int connId, int originFrameId, int frameCount, out ConnectionTickOffsets offsets)
        {
            int currentFrame = NetMaster.CurrentFrameId;

            /// Apply default followOffset from current local frame
            int startingFrameId = currentFrame + (TickEngineSettings.targetBufferSize /*+ 1*/);

            while (startingFrameId >= frameCount)
            {
                startingFrameId -= frameCount;
            }

            int originToLocal = startingFrameId - originFrameId;

            if (originToLocal < 0)
            {
                originToLocal += frameCount;
            }

            int localToOrigin = frameCount - originToLocal;

            if (localToOrigin < 0)
            {
                localToOrigin += frameCount;
            }

            /// Currently local and origin are the same.
            /// TODO: Pool these
            offsets = new ConnectionTickOffsets(connId, originToLocal, localToOrigin);

            AddConnection(connId, offsets);
        }
Exemplo n.º 2
0
        private static void AddConnection(int connId, ConnectionTickOffsets offsets = null)
        {
#if PUN_2_OR_NEWER
            /// We don't treat own own connection as a thing
            if (PhotonNetwork.LocalPlayer.ActorNumber == connId)
            {
                return;
            }
#endif
            if (!connections.Contains(connId))
            {
                perConnOffsets.Add(connId, offsets);
                connections.Add(connId);
                /// Add this connection to the NetSends list of targets for a reliable update.
                NetMsgSends.newPlayers.Add(connId);
                needToSendInitialForNewConn = true;
            }
            else
            {
                perConnOffsets[connId] = offsets;
            }
        }