diff --git a/OpenRA.Game/Graphics/Viewport.cs b/OpenRA.Game/Graphics/Viewport.cs index 539d35ef21..56672d1918 100644 --- a/OpenRA.Game/Graphics/Viewport.cs +++ b/OpenRA.Game/Graphics/Viewport.cs @@ -139,18 +139,20 @@ namespace OpenRA.Graphics lastConnectionState = state; } - Timer.Time( "checking connections: {0}" ); - Game.chrome.DrawWidgets(world); Timer.Time( "widgets: {0}" ); var cursorName = Game.chrome.HitTest(mousePos) ? "default" : Game.controller.ChooseCursor( world ); var c = new Cursor(cursorName); cursorRenderer.DrawSprite(c.GetSprite((int)cursorFrame), mousePos + Location - c.GetHotspot(), "cursor"); - cursorRenderer.Flush(); Timer.Time( "cursors: {0}" ); + renderer.RgbaSpriteRenderer.Flush(); + renderer.SpriteRenderer.Flush(); + renderer.WorldSpriteRenderer.Flush(); + renderer.EndFrame(); + Timer.Time( "endFrame: {0}" ); } public void Tick() diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs index f48bd91521..89380b6373 100644 --- a/OpenRA.Game/World.cs +++ b/OpenRA.Game/World.cs @@ -144,8 +144,18 @@ namespace OpenRA public void Tick() { + var sw = new Stopwatch(); + foreach (var a in actors) a.Tick(); - Queries.WithTraitMultiple().Do( x => x.Trait.Tick( x.Actor ) ); + + Queries.WithTraitMultiple().Do( x => + { + var t = sw.ElapsedTime(); + x.Trait.Tick( x.Actor ); + var dt = sw.ElapsedTime() - t; + if( dt > 0.001 ) + Log.Write( "expensive tick: {0}->{1}", x.Actor.Info.Name, x.Trait.GetType() ); + } ); foreach (var e in effects) e.Tick( this );