internal static void ClearAllCache() { TextureManager.ClearSkinCache(true); TextureManager.ClearDefaultCache(true); LoadCursor(true); }
public override void Update() { base.Update(); progressBar.SetProgress((float)(elapsedTime / test_time_cooldown)); if (!running) { return; } elapsedTime += GameBase.ElapsedMilliseconds; if (elapsedTime > test_time_cooldown) { startNextStage(); return; } else if (elapsedTime > test_time) { if (!cooldown) { benchmarkSpriteManager.SpriteList.ForEach(s => s.FadeOut(300)); cooldown = true; } GC.Collect(); } if (stageScores.ContainsKey(activeStage)) { stageScores[activeStage]++; } if (cooldown) { return; } switch (activeStage) { case Stages.TextRendering: const int text_lines = 4; if (benchmarkSpriteManager.SpriteList.Count == 0) { for (int i = 0; i < text_lines; i++) { benchmarkSpriteManager.Add(new pText("Testing text rendering", 20, new Vector2(RNG.Next(0, GameBase.WindowManager.Width), RNG.Next(0, GameBase.WindowManager.Height)), new Vector2(400, 0), 1, true, Color.White, true) { TextAlignment = TextAlignment.Centre, Origin = Origins.Centre, }); } } for (int i = 0; i < text_lines; i++) { ((pText)benchmarkSpriteManager.SpriteList[i]).Text = RNG.NextDouble().ToString(); } break; case Stages.CPUPerformance: case Stages.GarbageCollection: Color col = Color.MediumPurple; if (activeStage == Stages.CPUPerformance) { benchmarkSpriteManager.Clear(); col = Color.GreenYellow; } else { benchmarkSpriteManager.SpriteList.Clear(); } for (int i = 0; i < 1000; i++) { benchmarkSpriteManager.Add(new pSprite(GameBase.WhitePixel, Fields.Native, Origins.TopLeft, Clocks.Game, new Vector2(RNG.Next(0, GameBase.WindowManager.Width), RNG.Next(0, GameBase.WindowManager.Height)), 0, true, col) { Alpha = 1, Additive = true }); } break; case Stages.TextureLoading: { TextureManager.ClearDefaultCache(); pSprite p = new pSprite(TextureManager.Load(@"sliderb" + RNG.Next(0, 10), SkinSource.Osu), Fields.TopLeft, Origins.TopLeft, Clocks.Game, new Vector2(RNG.Next(0, GameBase.WindowManager.Width), RNG.Next(0, GameBase.WindowManager.Height)), 0, false, Color.White) { Additive = true, }; p.FadeOutFromOne(500); benchmarkSpriteManager.Add(p); benchmarkSpriteManager.SpriteList.ForEach(s => ((pSprite)s).Texture = TextureManager.Load(@"sliderb" + RNG.Next(0, 10), SkinSource.Osu)); } break; case Stages.Threading: if (benchmarkSpriteManager.SpriteList.Count == 0) { pSprite p = new pSprite(GameBase.WhitePixel, Fields.Native, Origins.TopLeft, Clocks.Game, Vector2.Zero, 0, true, Color.Orange) { Additive = true, VectorScale = new Vector2(GameBase.WindowManager.Width, GameBase.WindowManager.Height) }; p.FadeInFromZero(test_time); benchmarkSpriteManager.Add(p); for (int i = 0; i < 2; i++) { GameBase.RunBackgroundThread(delegate { while (elapsedTime < test_time) { Thread.SpinWait(1); } }); } } break; case Stages.FillRate: if (benchmarkSpriteManager.SpriteList.Count == 0) { for (int i = 0; i < 10; i++) { pSprite p = new pSprite(GameBase.WhitePixel, Fields.Native, Origins.TopLeft, Clocks.Game, Vector2.Zero, 0, true, new Color((byte)RNG.Next(0, 255), (byte)RNG.Next(0, 255), (byte)RNG.Next(0, 255), 255)) { Additive = true, VectorScale = new Vector2(GameBase.WindowManager.Width, GameBase.WindowManager.Height) }; p.FadeInFromZero(RNG.Next(10000, 30000)); benchmarkSpriteManager.Add(p); } } break; case Stages.TexturedFillRate: if (benchmarkSpriteManager.SpriteList.Count == 0) { for (int i = 0; i < 10; i++) { pSprite p = new pSprite(TextureManager.Load(@"menu-background", SkinSource.Osu), Fields.Native, Origins.TopLeft, Clocks.Game, Vector2.Zero, 0, true, Color.White); if (GameBase.WindowManager.Width / GameBase.WindowManager.Height > 1.6f) { p.VectorScale = new Vector2(GameBase.WindowManager.Width / GameBase.WindowManager.Ratio / WindowManager.DEFAULT_WIDTH, GameBase.WindowManager.Height / GameBase.WindowManager.Ratio / WindowManager.DEFAULT_HEIGHT); } p.Additive = true; p.FadeInFromZero(20000); benchmarkSpriteManager.Add(p); } } break; } }