public async ValueTask <IEnumerable <IScene> > BuildStack(IScene scene, SceneBuilderContext context, SceneStackFunc sceneProviderFunc) { return(new List <IScene> { AutonomousScene.Instance, FindPreferredScene(context) }); }
public async ValueTask <IEnumerable <IScene> > BuildStack(IScene scene, SceneBuilderContext context, SceneStackFunc sceneProviderFunc) { var stack = new Stack <IScene>(); stack.Push(scene); return(stack); }
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); }