public void Register(PeripheralDevice device)
        {
            m_registeredDevices.Add(device);
            int i = 0;

            foreach (PeripheralConnectedDevice d in m_connectedDevices)
            {   // ちょっと非効率.
                TryMatching(d, i);
                i++;
            }
        }
        private int GetDeviceIndex(PeripheralDevice dev)
        {
            int ret = 0;

            for (int i = 0; i < m_registeredDevices.Count; i++)
            {
                if (m_registeredDevices[i] == dev)
                {
                    ret = i;
                    break;
                }
            }
            return(ret);
        }
        // アビリティを加味してPeripheralDeviceとPeripheralConnectedDeviceのマッチングをとる
        public bool TryMatching(PeripheralConnectedDevice connectedDevice, int regDeviceIdx, int cnctDeviceIdx)
        {
            bool ret = false;

            if (regDeviceIdx >= 0 && regDeviceIdx < m_registeredDevices.Count)
            {
                PeripheralDevice registeredDevice = m_registeredDevices[regDeviceIdx];
                if (!registeredDevice.IsAlreadyConnected(connectedDevice, cnctDeviceIdx))  // 同じコネクションを2つ張らない
                {
                    if (!connectedDevice.IsMatched && registeredDevice.IsAcceptable(connectedDevice))
                    {
                        connectedDevice.Match(registeredDevice, cnctDeviceIdx);
                        registeredDevice.Match(connectedDevice);
                        ret = true;
                    }
                }
            }
            else
            {
                foreach (PeripheralDevice r in m_registeredDevices)
                {
                    if (!r.IsAlreadyConnected(connectedDevice, cnctDeviceIdx))  // 同じコネクションを2つ張らない
                    {
                        if (!connectedDevice.IsMatched && r.IsAcceptable(connectedDevice))
                        {
                            connectedDevice.Match(r, cnctDeviceIdx);
                            r.Match(connectedDevice);
                            ret = true;
                            break;
                        }
                    }
                }
            }

            return(ret);
        }
 public void UnRegister(PeripheralDevice device)
 {
     m_registeredDevices.Remove(device);
 }
Esempio n. 5
0
 public void UnMatch()
 {
     m_target = null;
 }
Esempio n. 6
0
 public void Match(PeripheralDevice target, int deviceIdx)
 {
     m_target             = target;
     m_devidx             = deviceIdx;
     m_latestAliveReceive = Time.time;
 }