Beispiel #1
0
 internal static void ClearAllCache()
 {
     TextureManager.ClearSkinCache(true);
     TextureManager.ClearDefaultCache(true);
     LoadCursor(true);
 }
Beispiel #2
0
        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;
            }
        }