void Start()
    {
        var streams = new List <AirXRServerStreamHandover.Streams>();

        AirXRServerStreamHandover.TakeAllStreamsHandedOverInPrevScene(streams);
        foreach (var item in streams)
        {
            var selected = notifyCameraRigWillBeBound(item.playerID);
            if (selected != null)
            {
                _cameraRigList.RetainCameraRig(selected);
                selected.BindPlayer(item.playerID, item.mediaStream, item.inputStream);

                if (selected.isStreaming && Delegate != null)
                {
                    Delegate.AirXRCameraRigActivated(selected);
                }
            }
            else
            {
                AXRServerPlugin.Disconnect(item.playerID);
            }
        }

        updateApplicationTargetFrameRate();

        eventDispatcher.MessageReceived += onAirXRMessageReceived;
    }
    internal void UnregisterCameraRig(AirXRCameraRig cameraRig, bool applicationQuit = false)
    {
        _cameraRigList.RemoveCameraRig(cameraRig);

        if (applicationQuit == false && cameraRig.isBoundToClient)
        {
            cameraRig.PreHandOverStreams();
            AirXRServerStreamHandover.HandOverStreamsForNextScene(new AirXRServerStreamHandover.Streams(cameraRig.playerID, cameraRig.mediaStream, cameraRig.inputStream));

            if (Delegate != null)
            {
                if (cameraRig.isStreaming)
                {
                    Delegate.AirXRCameraRigDeactivated(cameraRig);
                }
                Delegate.AirXRCameraRigHasBeenUnbound(cameraRig);
            }
            cameraRig.PostHandOverStreams();
        }
    }