private void receiveRelayData(ByteReceiver br, int uniqueID)
    {
        DataType typeL = (DataType)br.getInt();

        br.clean();
        ReceiveDataEvent(typeL, playerInfoList[findWithUniqueID(uniqueID)], br.data);
    }
    public virtual void receiveSyncOthers(ByteReceiver br)
    {
        br.clean();
        if (isServer())
        {
            return;
        }
        //Remove all synced PlayerInfo's
        int count = 0;

        for (int i = 0; i < playerInfoList.Count; i++)
        {
            if (playerInfoList [count].synced)
            {
                playerInfoList.RemoveAt(count);
            }
            else
            {
                count++;
            }
        }

        int max = br.getInt();

        for (int i = 0; i < max; i++)
        {
            var pi = new PlayerInfo();
            br.index  = pi.deserialize(br.data, br.index);
            pi.synced = true;
            playerInfoList.Add(pi);
        }
        updatePlayerInfoListArrays();
    }
    public override void ReceiveDataEvent(DataType type, PlayerInfo playerInfo, byte[] data, int index = 0)
    {
        base.ReceiveDataEvent(type, playerInfo, data, index);

        if (type == DataType.Sync)
        {
            ByteReceiver br    = new ByteReceiver(data, index);
            var          stype = (SyncType)br.getInt();
            data = br.clean();
            switch (stype)
            {
            case SyncType.Spawning:
                receiveSpawn(data);
                break;

            case SyncType.TransUpdate:
                receiveTransUpdate(data);
                break;

            case SyncType.Request:
                if (!server)
                {
                    logMessage("Request Received, not server", "error");
                    return;
                }
                receiveRequest(data, playerInfo);
                break;
            }
        }
    }
Ejemplo n.º 4
0
    public void ReceiveDataBasicEvent(int hostId, int connectionID, int channelId, byte[] data, int size)
    {
        ByteReceiver br   = new ByteReceiver(data);
        var          type = (DataType)br.getInt();

        br.clean();
        ReceiveDataEvent(type, playerInfoList [findWithConnID(connectionID)], br.data);
    }
    public override void ReceiveDataEvent(DataType type, PlayerInfo playerInfo, byte[] data, int index = 0)
    {
        base.ReceiveDataEvent(type, playerInfo, data, index);

        ByteReceiver br = new ByteReceiver(data, index);

        switch (type)
        {
        case DataType.ListUpdate:
            switch ((ListUpdateType)br.getInt())
            {
            case ListUpdateType.UpdateYourself:
                receiveUpdateYourself(br);
                break;

            case ListUpdateType.SyncOthers:
                receiveSyncOthers(br);
                break;
            }
            break;

        case DataType.Relay:
            int[] uniqueIDs   = br.getIntArray();
            bool  runInServer = br.getBool();
            br.clean();
            sendRelayS(br.data, playerInfo.uniqueID, uniqueIDs);
            if (runInServer)
            {
                receiveRelayData(br, playerInfo.uniqueID);
            }

            break;

        case DataType.RelayS:
            receiveRelayS(br);
            break;
        }
    }
 public virtual void receiveUpdateYourself(ByteReceiver br)
 {
     br.clean();
     playerInfo.deserialize(br.data, br.index);
 }