private void InitPacket()
    {
        packet = new Packet();
        packet.trackerDatas = new List <Packet.TrackerData>();

        foreach (Configuration.TrackerAndUserIDPair pair in config.circlevr.pairs)
        {
            Packet.TrackerData trackerData = new Packet.TrackerData();
            trackerData.onAirVRUserID = pair.userID;
            packet.trackerDatas.Add(trackerData);
        }
    }
    private void AddConnectedPair(UserIDAndConnectionIDPair pair)
    {
        Packet.TrackerData trackerData = GetTrackerDataInPacket(pair.userID);
        trackerData.connected = true;

        CircleVRNetwork.Send(CircleVRPacketType.HostInfo,
                             CircleVRNetwork.StringToByte(JsonUtility.ToJson(new HostInfo(config.circlevr.showBarrier, config.circlevr.safetyBarrierRadius))),
                             pair.connectionId, CircleVRNetwork.reliableChannel);

        connectedPairs.Add(pair);
        CircleVRDisplay.GetHead(CircleVR.GetPair(pair.userID).trackerID).Connected = true;

        Debug.Log("[CircleVR Host Network] Connected User ID : " + pair.userID);
    }
    private void UpdatePacket(Packet.TrackerData trackerData)
    {
        if (!CircleVR.HasUserIDInPairs(trackerData.onAirVRUserID))
        {
            //TODO : must be notify in gui
            return;
        }

        Configuration.TrackerAndUserIDPair pair = CircleVR.GetPair(trackerData.onAirVRUserID);

        Transform tracker = CircleVRTrackingSystem.GetTracker(pair.trackerID);

        if (tracker == null)
        {
            //TODO : must be notify in gui
            return;
        }

        trackerData.position = tracker.localPosition;
        trackerData.oriented = tracker.localRotation;
    }