public async Task <IVideoPlayer> CreateVideoPlayerAsync(Shared.Models.Screen screen) { var browser = new DuiBrowser(this.duiUrl, this.duiWidth, this.duiHeight); while (!API.IsDuiAvailable(browser.NativeValue)) { await BaseScript.Delay(5); } browser.CreateRuntimeTexture(); await BaseScript.Delay(1000); Debug.WriteLine("sending init.."); browser.Init(screen.Name, this.posterUrl); if (!screen.Is3DRendered) { return(CreateVideoPlayer2D(browser, screen)); } return(await this.CreateVideoPlayer3D(browser, screen)); }
// TODO: Still needs more refactoring => currently way too long public async Task <IVideoPlayer> CreateVideoPlayerAsync(Shared.Models.Screen screen) { RenderTarget renderTarget; TextureRenderer textureRenderer; var browser = new DuiBrowser(this.duiUrl, this.duiWidth, this.duiHeight); while (!API.IsDuiAvailable(browser.NativeValue)) { await BaseScript.Delay(1); } browser.CreateRuntimeTexture(); await BaseScript.Delay(750); Debug.WriteLine("sending init.."); browser.SendInit(screen.Name, this.posterUrl); if (!screen.Is3DRendered) { renderTarget = new RenderTarget( screen.TargetSettings.ModelName, screen.TargetSettings.RenderTargetName); var player = new VideoPlayer2D(browser, renderTarget, screen.Name) { GlobalVolume = screen.BrowserSettings.GlobalVolume, SoundMinDistance = screen.BrowserSettings.SoundMinDistance, SoundAttenuation = screen.BrowserSettings.SoundAttenuation, SoundMaxDistance = screen.BrowserSettings.SoundMaxDistance }; return(player); } else { var position = new Vector3( screen.PositionalSettings.PositionX, screen.PositionalSettings.PositionY, screen.PositionalSettings.PositionZ); var rotation = new Vector3( screen.PositionalSettings.RotationX, screen.PositionalSettings.RotationY, screen.PositionalSettings.RotationZ); var scale = new Vector3( screen.PositionalSettings.ScaleX, screen.PositionalSettings.ScaleY, screen.PositionalSettings.ScaleZ); textureRenderer = await TextureRendererPool.Instance.CreateTextureRenderer(position, rotation, scale); if (textureRenderer == null) { Debug.WriteLine("failed to create scaleform."); return(null); } textureRenderer.SetTexture(browser.TxdName, browser.TxnName); var player = new VideoPlayer3D(browser, textureRenderer, screen.Name) { GlobalVolume = screen.BrowserSettings.GlobalVolume, SoundMinDistance = screen.BrowserSettings.SoundMinDistance, SoundAttenuation = screen.BrowserSettings.SoundAttenuation, SoundMaxDistance = screen.BrowserSettings.SoundMaxDistance }; return(player); } }