Exemplo n.º 1
0
        private void ProcessStatic(BroadcastMode broadcast, ReliabilityMode reliability, NetMessage msg)
        {
            byte rpc;

            if (!msg.ReadByte(out rpc))
            {
                return;
            }
            CallRpc(rpc, msg);

            if (broadcast == BroadcastMode.All || broadcast == BroadcastMode.Others)
            {
                var nmsg = _server.GetMessage(msg.LengthBytes);
                nmsg.Write(msg.Data, 0, msg.LengthBytes);
                NetMessage.RecycleMessage(msg);
                if (broadcast == BroadcastMode.All)
                {
                    SendToAll(nmsg, reliability);
                }
                else
                {
                    SendMessageToOthers(nmsg, reliability);
                }
            }
        }
Exemplo n.º 2
0
        private void ProcessStatic(BroadcastMode broadcast, ReliabilityMode reliability, NetMessage msg)
        {
            var info = new NetMessageInfo(broadcast, this)
            {
                Reliability = reliability
            };

            //route back to room...
            try
            {
                Room.CallRpc(msg, info);
            }
            catch (Exception e)
            {
                info.ContinueForwarding = false;
                Debug.LogException(e);
            }

            //todo: filter if rpc mode is all/others/owner, and then send to appropriate people.
            if (info.ContinueForwarding)
            {
                if (info.Mode == BroadcastMode.Others)
                {
                    Room.SendExcept(msg, info.Sender, info.Reliability);
                }
                else if (info.Mode == BroadcastMode.All)
                {
                    Room.SendToPlayers(msg, info.Reliability);
                }
            }
        }
Exemplo n.º 3
0
 private void RestorePlayerPrefs()
 {
     if (PlayerPrefs.HasKey("Type"))
     {
         bt_Type = (BeaconType)PlayerPrefs.GetInt("Type");
     }
     if (PlayerPrefs.HasKey("Region"))
     {
         s_Region = PlayerPrefs.GetString("Region");
     }
     if (PlayerPrefs.HasKey("UUID"))
     {
         s_UUID = PlayerPrefs.GetString("UUID");
     }
     if (PlayerPrefs.HasKey("Major"))
     {
         s_Major = PlayerPrefs.GetString("Major");
     }
     if (PlayerPrefs.HasKey("Minor"))
     {
         s_Minor = PlayerPrefs.GetString("Minor");
     }
     if (PlayerPrefs.HasKey("BroadcastMode"))
     {
         bm_Mode = (BroadcastMode)PlayerPrefs.GetInt("BroadcastMode");
     }
     else
     {
         bm_Mode = BroadcastMode.unknown;
     }
 }
        partial void ImplSendMessage(NetMessage msg, ReliabilityMode reliable, BroadcastMode broadcast)
        {
            var lmsg = Manager.Room.PlayerServer.CreateMessage(msg.Data.Length);

            msg.Clone(lmsg);
            NetMessage.RecycleMessage(msg);

            int seq;
            var method = reliable.PlayerDelivery(out seq);

            switch (broadcast)
            {
            case BroadcastMode.All:
                if (_observersAndOwner.Count > 0)
                {
                    Manager.Room.PlayerServer.SendMessage(lmsg, _observersAndOwner, method, seq);
                }
                break;

            case BroadcastMode.Others:
                if (_observers.Count > 0)
                {
                    Manager.Room.PlayerServer.SendMessage(lmsg, _observers, method, seq);
                }
                break;

            case BroadcastMode.Owner:
                Manager.Room.PlayerServer.SendMessage(lmsg, Owner.Connection, method, seq);
                break;

            default:
                throw new NotImplementedException();
            }
        }
        /// <summary>
        /// Send message. Filtering is already done for invalid broadcast+owner combinations (others+server, owner+server)
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="reliable"></param>
        /// <param name="broadcast"></param>
        void ImplSendMessage(NetMessage msg, ReliabilityMode reliable, BroadcastMode broadcast)
        {
            switch (broadcast)
            {
            case BroadcastMode.All:
                if (ObserversAndOwner.Count > 0)
                {
                    Manager.Room.SendToConnections(ObserversAndOwner, msg, reliable);
                }
                break;

            case BroadcastMode.Others:
                if (Observers.Count > 0)
                {
                    Manager.Room.SendToConnections(Observers, msg, reliable);
                }
                break;

            case BroadcastMode.Owner:
                Manager.Room.SendToPlayer(Owner, msg, reliable);
                break;

            default:
                throw new NotImplementedException();
                break;
            }
        }
Exemplo n.º 6
0
 public static void ReadHeader(byte value, out ReliabilityMode rel, out BroadcastMode broad, out MsgType msg, out SubMsgType sub)
 {
     rel   = (ReliabilityMode)(value & ReliabilityMask);
     broad = (BroadcastMode)(value & BroadcastMask);
     msg   = (MsgType)(value & MsgTypeMask);
     sub   = (SubMsgType)(value & SubTypeMask);
 }
Exemplo n.º 7
0
        NetMessage StartMessage(byte rpcId, ReliabilityMode mode, int size, BroadcastMode broad = BroadcastMode.Server)
        {
            var msg = _room.ServerGetMessage(size + 2);

            msg.Write(RpcUtils.GetHeader(mode, broad, MsgType.Static));
            msg.Write(rpcId);
            return(msg);
        }
Exemplo n.º 8
0
        internal static NetMessage GetMessage(int size, ReliabilityMode rel, BroadcastMode broad, MsgType mType,
                                              SubMsgType sub = SubMsgType.Out)
        {
            var msg = GetMessage(size + 1);

            msg.Write(RpcUtils.GetHeader(rel, broad, mType, sub));
            return(msg);
        }
Exemplo n.º 9
0
    private void setBeaconPropertiesAtStart()
    {
        //RestorePlayerPrefs();
        if (bm_Mode == BroadcastMode.unknown)           // first start
        {
            bm_Mode = BroadcastMode.receive;
            bt_Type = BeaconType.iBeacon;
            if (iBeaconServer.region.regionName != "")
            {
                Debug.Log("check iBeaconServer-inspector");
                s_Region = iBeaconServer.region.regionName;
                bt_Type  = iBeaconServer.region.beacon.type;
                if (bt_Type == BeaconType.EddystoneURL)
                {
                    s_UUID = iBeaconServer.region.beacon.UUID;
                }
                else if (bt_Type == BeaconType.EddystoneUID)
                {
                    s_UUID  = iBeaconServer.region.beacon.UUID;
                    s_Major = iBeaconServer.region.beacon.instance;
                }
                else if (bt_Type == BeaconType.iBeacon)
                {
                    s_UUID  = iBeaconServer.region.beacon.UUID;
                    s_Major = iBeaconServer.region.beacon.major.ToString();
                    s_Minor = iBeaconServer.region.beacon.minor.ToString();
                }
            }
            else if (iBeaconReceiver.regions.Length != 0)
            {
                Debug.Log("check iBeaconReceiver-inspector");
                s_Region = iBeaconReceiver.regions[0].regionName;
                bt_Type  = iBeaconReceiver.regions[0].beacon.type;
                if (bt_Type == BeaconType.EddystoneURL)
                {
                    s_UUID = iBeaconReceiver.regions[0].beacon.UUID;
                }
                else if (bt_Type == BeaconType.EddystoneUID)
                {
                    s_UUID  = iBeaconReceiver.regions[0].beacon.UUID;
                    s_Major = iBeaconReceiver.regions[0].beacon.instance;
                }
                else if (bt_Type == BeaconType.iBeacon)
                {
                    s_UUID  = iBeaconReceiver.regions[0].beacon.UUID;
                    s_Major = iBeaconReceiver.regions[0].beacon.major.ToString();
                    s_Minor = iBeaconReceiver.regions[0].beacon.minor.ToString();
                }
            }
        }

        InputDropdown.value = (int)bt_Type;
        bs_State            = BroadcastState.inactive;
        SetBeaconProperties();
        SetBroadcastMode();
        SetBroadcastState();
        Debug.Log("Beacon properties and modes restored");
    }
Exemplo n.º 10
0
    // BroadcastMode
    public void btn_switch()
    {
        //Debug.Log("Button Switch pressed");

        //Ku this
        //if (bm_Mode == BroadcastMode.receive)
        //	bm_Mode = BroadcastMode.send;
        //else
        bm_Mode = BroadcastMode.receive;
        SetBroadcastMode();
        //SavePlayerPrefs();
    }
Exemplo n.º 11
0
        public static byte GetHeader(ReliabilityMode rel, BroadcastMode broad, MsgType msg, SubMsgType sub = SubMsgType.Out)
        {
            //OR can be used because the values should not encroach in the other bit areas.
            byte ret = (byte)rel;

            ret |= (byte)broad;
            ret |= (byte)msg;
            ret |= (byte)sub;
            return(ret);

            //todo: which is more efficient?

            //return (byte)((byte)rel | (byte)broad | (byte)msg | (byte)sub);
        }
Exemplo n.º 12
0
 // BroadcastMode
 public void btn_switch()
 {
     //Debug.Log("Button Switch pressed");
     if (bm_Mode == BroadcastMode.receive)
     {
         bm_Mode = BroadcastMode.send;
     }
     else
     {
         bm_Mode = BroadcastMode.receive;
     }
     SetBroadcastMode();
     SavePlayerPrefs();
 }
Exemplo n.º 13
0
        private void ProcessInternal(BroadcastMode broadcast, ReliabilityMode reliability, NetMessage msg)
        {
            var rpc = msg.ReadByte();

            switch (rpc)
            {
            case RandPRpcs.Instantiate:
                Room.NetworkManager.FinishedInstantiate(this, msg);
                break;

            case RandPRpcs.SceneObjectRpc:
                Room.SceneViewManager.CallRpc(msg, new NetMessageInfo(broadcast, this));
                break;
            }
        }
Exemplo n.º 14
0
 private void ProcessStatic(BroadcastMode broadcast, ReliabilityMode reliability, NetMessage msg)
 {
     try
     {
         if (!msg.ReadByte(out var rpc))
         {
             return;
         }
         CallRpc(rpc, msg);
     }
     catch (Exception e)
     {
         Debug.LogException(e);
     }
 }
Exemplo n.º 15
0
    private void setBeaconPropertiesAtStart()
    {
        RestorePlayerPrefs();                                   //載入前次紀錄
        //----------------------------------------------------------------------------------------------------
        s_Region = ck_Region;                                   //讀入設定的區域名
        ck_UUID  = ck_UUID.ToLower();
        s_UUID   = ck_UUID;                                     //讀入設定的UUID
        bm_Mode  = BroadcastMode.receive;                       //廣播模式設定為接收
        bt_Type  = BeaconType.Any;                              //Beacon模式設定為所有類型
        bs_State = BroadcastState.inactive;                     //將廣播狀態設為未啟動
        //----------------------------------------------------------------------------------------------------
        // 若iBeaconServer或Receiver有設定,就優先讀取(目前未使用)

        /*if (bm_Mode == BroadcastMode.unknown) { // first start
         *      bm_Mode = BroadcastMode.receive;
         *      bt_Type = BeaconType.iBeacon;
         *      if (iBeaconServer.region.regionName != "") {
         *              Debug.Log("check iBeaconServer-inspector");
         *              s_Region = iBeaconServer.region.regionName;
         *              bt_Type     = iBeaconServer.region.beacon.type;
         *              if (bt_Type == BeaconType.EddystoneURL) {
         *                      s_UUID = iBeaconServer.region.beacon.UUID;
         *              } else if (bt_Type == BeaconType.EddystoneUID) {
         *                      s_UUID = iBeaconServer.region.beacon.UUID;
         *                      s_Major = iBeaconServer.region.beacon.instance;
         *              } else if (bt_Type == BeaconType.iBeacon) {
         *                      s_UUID = iBeaconServer.region.beacon.UUID;
         *                      s_Major = iBeaconServer.region.beacon.major.ToString();
         *                      s_Minor = iBeaconServer.region.beacon.minor.ToString();
         *              }
         *      } else if (iBeaconReceiver.regions.Length != 0) {
         *              Debug.Log("check iBeaconReceiver-inspector");
         *              s_Region	= iBeaconReceiver.regions[0].regionName;
         *              bt_Type     = iBeaconReceiver.regions[0].beacon.type;
         *              if (bt_Type == BeaconType.EddystoneURL) {
         *                      s_UUID = iBeaconReceiver.regions[0].beacon.UUID;
         *              } else if (bt_Type == BeaconType.EddystoneUID) {
         *                      s_UUID = iBeaconReceiver.regions[0].beacon.UUID;
         *                      s_Major = iBeaconReceiver.regions[0].beacon.instance;
         *              } else if (bt_Type == BeaconType.iBeacon) {
         *                      s_UUID = iBeaconReceiver.regions[0].beacon.UUID;
         *                      s_Major = iBeaconReceiver.regions[0].beacon.major.ToString();
         *                      s_Minor = iBeaconReceiver.regions[0].beacon.minor.ToString();
         *              }
         *      }
         * }
         * bs_State = BroadcastState.inactive;*/
    }
Exemplo n.º 16
0
            public void Broadcast(string message, BroadcastMode mode)
            {
                var msg = Encrypt.EncryptString(message, LicenseKey);

                var peers_Unreachable = new List <string>();

                foreach (var peer in this.peers)
                {
                    try
                    {
                        using (var cf = new ChannelFactory <IHexChainService>
                                            (new WebHttpBinding(), peer))
                        {
                            cf.Endpoint.Behaviors.Add(new WebHttpBehavior());
                            IHexChainService channel = cf.CreateChannel();
                            switch (mode)
                            {
                            case BroadcastMode.Send:
                                channel.Send(msg); break;

                            case BroadcastMode.SendValidBlock:
                                channel.SendValidBlock(msg); break;

                            case BroadcastMode.Discovery:
                                var id = channel.Discover(msg);
                                Console.WriteLine("Found : {0} at {1}", id, peer);
                                break;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        // Console.WriteLine(ex.Message);
                        if (mode == BroadcastMode.Discovery)
                        {
                            peers_Unreachable.Add(peer);
                        }
                        Console.WriteLine("Not Reachable : {0}", peer);
                    }
                }

                foreach (var peer in peers_Unreachable)
                {
                    this.peers.Remove(peer);
                }
            }
Exemplo n.º 17
0
 private void ProcessInternal(BroadcastMode broadcast, ReliabilityMode reliability, NetMessage msg)
 {
     try
     {
         var id = msg.ReadByte();
         switch (id)
         {
         case RandPRpcs.FinishedRoomSwitch:
             ClientFinishedRoomSwitch();
             break;
         }
     }
     catch (Exception e)
     {
         Debug.LogException(e);
     }
 }
Exemplo n.º 18
0
 internal NetMessageInfo(BroadcastMode mode, Player sender)
 {
     Mode               = mode;
     Sender             = sender;
     ContinueForwarding = true;
 }
Exemplo n.º 19
0
 /// <summary>
 /// Send message. Filtering is already done for invalid broadcast+owner combinations (others+server, owner+server)
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="reliable"></param>
 /// <param name="broadcast"></param>
 partial void ImplSendMessage(NetMessage msg, ReliabilityMode reliable, BroadcastMode broadcast);
Exemplo n.º 20
0
        private void ProcessInternal(BroadcastMode broadcast, ReliabilityMode reliability, NetMessage msg)
        {
            byte rpc;

            if (!msg.ReadByte(out rpc))
            {
                Debug.LogError("Malformed internal rpc");
                return;
            }

            try
            {
                ushort pid;
                Player player;
                switch (rpc)
                {
                case DandRRpcs.RoomSwitch:
                    pid = msg.ReadUInt16();
                    var room = msg.ReadString();
                    player = _server.GetPlayer(pid);
                    if (player != null)
                    {
                        player.ChangeRoom(room);
                    }
                    else
                    {
                        Debug.LogError("Attempted to switch a null player");
                    }
                    break;

                case DandRRpcs.SyncNetUser:
                    pid    = msg.ReadUInt16();
                    player = _server.GetPlayer(pid);
                    if (player != null && player.NetUserData != null)
                    {
                        player.NetUserData.OnDeserialize(msg);
                        player.OnNetUserDataChanged();
                    }
                    break;

                case DandRRpcs.PlayerConnected:
                    pid    = msg.ReadUInt16();
                    player = _server.GetPlayer(pid);
                    if (player != null)
                    {
                        player.FinishedRoomSwitch();
                    }
                    break;

                case DandRRpcs.DisconnectMessage:
                    string reason;
                    if (!msg.ReadString(out reason))
                    {
                        reason = "Shutting down";
                    }
                    Debug.Log($"Room disconnecting: {reason}");
                    Running = false;
                    break;
                }
            }
            catch (Exception e)
            {
                Debug.LogException(e);
            }
        }
Exemplo n.º 21
0
 internal RoomMessageInfo(BroadcastMode mode)
 {
     Mode = mode;
 }
Exemplo n.º 22
0
 public static RpcMode RpcMode(ReliabilityMode reliable, BroadcastMode broadcast)
 {
     //this is necessary because csharp refuses to give back the correct enum value.
     return((RpcMode)((byte)reliable | (byte)broadcast));
 }
Exemplo n.º 23
0
 public void Digl_SetSwitch(BroadcastMode m)
 {
     bm_Mode = m;
 }
Exemplo n.º 24
0
    private void StartStates()
    {
        s_Region = ck_Region;                           //讀入設定的區域名
        ck_UUID  = ck_UUID.ToLower();
        s_UUID   = ck_UUID;                             //讀入設定的UUID
        bm_Mode  = BroadcastMode.receive;               //廣播模式設定為接收
        bt_Type  = BeaconType.Any;                      //Beacon模式設定為任意模式
        bs_State = BroadcastState.inactive;             //將廣播狀態設為未啟動

        ck_Minor1 = 1001;
        ck_Minor2 = 1002;
        ck_Minor3 = 1003;
        ck_Minor4 = 1004;

        /*ck_Minor1 = 22720;
        *  ck_Minor2 = 31168;
        *  ck_Minor3 = 64703;
        *  ck_Minor4 = 59583;*/
        myStr1  = -65;
        myStr2  = -62;
        myStr3  = -57;
        myStr4  = -59;
        envfac  = 2.0;
        sheight = 2.0;
        lheight = 0.5;
        pos12   = 4.4;
        pos23   = 9.6;
        tps     = 1.1f;

        /*if(_B1minor.text != "")
         *      ck_Minor1 = Convert.ToInt32(_B1minor.text);
         * if(_B2minor.text != "")
         *      ck_Minor2 = Convert.ToInt32(_B2minor.text);
         * if(_B3minor.text != "")
         *      ck_Minor3 = Convert.ToInt32(_B3minor.text);
         * if(_B4minor.text != "")
         *      ck_Minor4 = Convert.ToInt32(_B4minor.text);
         * if(_IFB1str.text != "")
         *      myStr1 = Convert.ToInt32(_IFB1str.text);
         * if(_IFB2str.text != "")
         *      myStr2 = Convert.ToInt32(_IFB2str.text);
         * if(_IFB3str.text != "")
         *      myStr3 = Convert.ToInt32(_IFB3str.text);
         * if(_IFB4str.text != "")
         *      myStr4 = Convert.ToInt32(_IFB4str.text);
         * if(_IFEV.text != "")
         *      envfac = Convert.ToDouble(_IFEV.text);
         * if(_IFHT.text != "")
         *      sheight = Convert.ToDouble(_IFHT.text);
         * if(_POS12.text != "")
         *      pos12 = Convert.ToDouble(_POS12.text);
         * else
         *      pos12 = 0.0;
         * if(_POS23.text != "")
         *      pos23 = Convert.ToDouble(_POS23.text);
         * else
         *      pos23 = 0.0;*/
        /*if(_POS34.text != "")
         * pos34 = Convert.ToDouble(_POS34.text);
         * else
         *      pos34 = 0.0;
         * if(_POS14.text != "")
         *      pos14 = Convert.ToDouble(_POS14.text);
         * else
         *      pos14 = 0.0;*/
        //四顆版面積
        //HF_area = pos12 * pos23;
    }
Exemplo n.º 25
0
 internal PlayerMessageInfo(BroadcastMode mode)
 {
     Mode = mode;
 }