private void QueueUI(double timeDelta) { (int windowWidth, int windowHeight) = GameEngine.windowHandler.GetWindowDimensions(); double uiScale = windowWidth > windowHeight ? windowWidth / 1920d : windowHeight / 1080d; textMesh = TextMeshGenerator.RegenerateMesh($"Vector Engine\n" + $"VSync: {UseVSync}\n" + $"FPS: {((int)(1 / timeDelta * 10)) / 10f}", arialFont, textMesh, 2, 50); RenderEngine.AddToRenderQueue(uiMaterial, treeMesh, Mathmatics.CreateTransformationMatrix(new Vector3d(1, 0, 0) / uiScale, Vector3d.Zero, new Vector3d(250d / windowWidth, 250d / windowHeight, 1) * uiScale), true); //RenderEngine.AddToRenderQueue(uiMaterial, treeMesh, Mathmatics.CreateTransformationMatrix(new Vector3d(0, 0, 0) / uiScale, Vector3d.Zero, new Vector3d(0.5d, 0.5d, 1) * uiScale), true); RenderEngine.AddToRenderQueue(arialFontMaterial, textMesh, Mathmatics.CreateTransformationMatrix(new Vector3d(-windowWidth + 50, windowHeight - 50, 0) / uiScale, Vector3d.Zero, new Vector3d(1d / windowWidth, 1d / windowHeight, 1) * uiScale), true); }
private void UpdateMesh() { if (!isDirty) { return; } if (string.IsNullOrEmpty(text)) { return; } if (mesh != null) { mesh.DestroyImmediate(); mesh = null; } TextGenerationSettings settings = new TextGenerationSettings(); settings.generationExtents = new Vector2(540, 47.5f); settings.pivot = new Vector2(0.5f, 0.5f); settings.verticalOverflow = VerticalWrapMode.Overflow; settings.font = UIStyleValues.TextFont; // To-Do: Font Customization settings.textAnchor = (TextAnchor)config.Anchor; settings.color = config.TextColor; settings.richText = config.RichText; settings.fontSize = config.TextSize; settings.fontStyle = config.Style; settings.scaleFactor = config.Scale; settings.lineSpacing = config.LineSpacing; string displayText = text; displayText = displayText.Replace("<loaderName/>", (MelonLaunchOptions.Console.Mode == MelonLaunchOptions.Console.DisplayMode.LEMON) ? "LemonLoader" : "MelonLoader"); displayText = displayText.Replace("<loaderVersion/>", BuildInfo.Version); displayText = displayText.Replace("LemonLoader", "<color=#FFCC4D>LemonLoader</color>"); displayText = displayText.Replace("MelonLoader", "<color=#78f764>Melon</color><color=#ff3c6a>Loader</color>"); mesh = TextMeshGenerator.Generate(displayText, settings); mesh.hideFlags = HideFlags.HideAndDontSave; mesh.DontDestroyOnLoad(); isDirty = false; }
private void RefreshTextmesh() { if (textCached == text) { return; } textCached = text; TextGenerationSettings settings2 = new TextGenerationSettings(); settings2.textAnchor = TextAnchor.MiddleCenter; settings2.color = UICustomization.ProgressText.TextColor; settings2.generationExtents = new Vector2(540, 47.5f); settings2.richText = true; settings2.font = font; settings2.pivot = new Vector2(0.5f, 0.5f); settings2.fontSize = 16; settings2.fontStyle = FontStyle.Bold; settings2.verticalOverflow = VerticalWrapMode.Overflow; settings2.scaleFactor = 1f; settings2.lineSpacing = 1f; textmesh = TextMeshGenerator.Generate(text, settings2); }