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

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

                if (selected.isStreaming && Delegate != null)
                {
                    Delegate.AirVRCameraRigActivated(selected);
                }
            }
            else
            {
                onairvr_Disconnect(item.playerID);
            }
        }

        updateApplicationTargetFrameRate();

        _eventDispatcher.MessageReceived += onAirVRMessageReceived;
    }
    internal void UnregisterCameraRig(AirVRCameraRig cameraRig, bool applicationQuit = false)
    {
        _cameraRigList.RemoveCameraRig(cameraRig);

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

            if (Delegate != null)
            {
                if (cameraRig.isStreaming)
                {
                    Delegate.AirVRCameraRigDeactivated(cameraRig);
                }
                Delegate.AirVRCameraRigHasBeenUnbound(cameraRig);
            }
            cameraRig.PostHandOverStreams();
        }
    }