Example #1
0
 public async ValueTask <IEnumerable <IScene> > BuildStack(IScene scene, SceneBuilderContext context,
                                                           SceneStackFunc sceneProviderFunc)
 {
     return(new List <IScene> {
         AutonomousScene.Instance, FindPreferredScene(context)
     });
 }
Example #2
0
        public async ValueTask <IEnumerable <IScene> > BuildStack(IScene scene, SceneBuilderContext context,
                                                                  SceneStackFunc sceneProviderFunc)
        {
            var stack = new Stack <IScene>();

            stack.Push(scene);

            return(stack);
        }
Example #3
0
        public async ValueTask <IEnumerable <IScene> > BuildStack(IScene scene, SceneBuilderContext context,
                                                                  SceneStackFunc sceneProviderFunc)
        {
            var presenterScene = (PresenterScene)scene;
            var stack          = new List <IScene> {
                presenterScene
            };

            var screenShare = context.AvailableScenes.OfType <ScreenShareScene>()
                              .FirstOrDefault(x => x.ParticipantId == presenterScene.PresenterParticipantId);

            if (screenShare != null)
            {
                stack.Add(screenShare);
            }
            else
            {
                stack.Add(ActiveSpeakerScene.Instance);
            }

            return(stack);
        }
        public async ValueTask <IEnumerable <IScene> > BuildStack(IScene scene, SceneBuilderContext context,
                                                                  SceneStackFunc sceneProviderFunc)
        {
            var stack = new List <IScene> {
                scene
            };

            var syncObj = await GetSyncObj(context.ConferenceId, context.RoomId);

            if (syncObj.CurrentSpeakerId != null)
            {
                var rooms = await _mediator.FetchSynchronizedObject <SynchronizedRooms>(context.ConferenceId,
                                                                                        SynchronizedRooms.SyncObjId);

                if (rooms.Participants.TryGetValue(syncObj.CurrentSpeakerId, out var roomId) &&
                    context.RoomId == roomId)
                {
                    var presenterScene = new PresenterScene(syncObj.CurrentSpeakerId);
                    stack.AddRange(await sceneProviderFunc(presenterScene, context));
                }
            }

            return(stack);
        }