protected override void InitControl() { this.loadingDisplayControl = this.GetByName <LoadingDisplayControl>("LoadingDisplayControl"); this.tradingStationDisplayControl = this.GetByName <ObjectTradingStationDisplayControl>("TradingStationDisplayControl"); this.tradingStationDisplayControl.Visibility = Visibility.Collapsed; this.loadingDisplayControl.Visibility = Visibility.Visible; }
// Generate texture containing text. // For text rendering we will use UI. private async Task <ITextureResource> ClientGenerateProceduralTextureForTradingStationContent( TPublicState publicState, ProceduralTextureRequest request) { var rendering = Client.Rendering; var renderingTag = request.TextureName; var qualityScaleCoef = rendering.CalculateCurrentQualityScaleCoefWithOffset(-1); var scale = 1.0 / qualityScaleCoef; var controlWidth = (int)Math.Floor(90 * (this.LotsCount / 2.0)); var controlHeight = 268; // create and prepare UI renderer for the sign text to render var control = new ObjectTradingStationDisplayControl { IsBuyMode = publicState.Mode == TradingStationMode.StationBuying, TradingLots = publicState.Lots .Select(l => new TradingStationsMapMarksSystem.TradingStationLotInfo(l)) .ToArray(), Width = controlWidth, Height = controlHeight, LayoutTransform = new ScaleTransform(scale, scale) }; var textureSize = new Vector2Ushort((ushort)(scale * controlWidth), (ushort)(scale * controlHeight)); // create camera and render texture var renderTexture = rendering.CreateRenderTexture(renderingTag, textureSize.X, textureSize.Y); var cameraObject = Client.Scene.CreateSceneObject(renderingTag); var camera = rendering.CreateCamera(cameraObject, renderingTag, drawOrder: -200); camera.RenderTarget = renderTexture; camera.SetOrthographicProjection(textureSize.X, textureSize.Y); rendering.CreateUIElementRenderer( cameraObject, control, size: textureSize, renderingTag: renderingTag); await camera.DrawAsync(); cameraObject.Destroy(); request.ThrowIfCancelled(); var generatedTexture = await renderTexture.SaveToTexture(isTransparent : true, qualityScaleCoef : qualityScaleCoef); renderTexture.Dispose(); request.ThrowIfCancelled(); return(generatedTexture); }