Move Viewport inside WorldRenderer.
This commit is contained in:
@@ -39,7 +39,6 @@ namespace OpenRA
|
|||||||
set { worldRenderer.Viewport.Zoom = value; }
|
set { worldRenderer.Viewport.Zoom = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Viewport viewport;
|
|
||||||
public static Settings Settings;
|
public static Settings Settings;
|
||||||
|
|
||||||
internal static OrderManager orderManager;
|
internal static OrderManager orderManager;
|
||||||
@@ -122,7 +121,8 @@ namespace OpenRA
|
|||||||
public static void RunAfterTick(Action a) { delayedActions.Add(a); }
|
public static void RunAfterTick(Action a) { delayedActions.Add(a); }
|
||||||
public static void RunAfterDelay(int delay, Action a) { delayedActions.Add(a, delay); }
|
public static void RunAfterDelay(int delay, Action a) { delayedActions.Add(a, delay); }
|
||||||
|
|
||||||
static void Tick(OrderManager orderManager, Viewport viewPort)
|
static float cursorFrame = 0f;
|
||||||
|
static void Tick(OrderManager orderManager)
|
||||||
{
|
{
|
||||||
if (orderManager.Connection.ConnectionState != lastConnectionState)
|
if (orderManager.Connection.ConnectionState != lastConnectionState)
|
||||||
{
|
{
|
||||||
@@ -130,17 +130,35 @@ namespace OpenRA
|
|||||||
ConnectionStateChanged(orderManager);
|
ConnectionStateChanged(orderManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
Tick(orderManager);
|
TickInner(orderManager);
|
||||||
if (worldRenderer != null && orderManager.world != worldRenderer.world)
|
if (worldRenderer != null && orderManager.world != worldRenderer.world)
|
||||||
Tick(worldRenderer.world.orderManager);
|
TickInner(worldRenderer.world.orderManager);
|
||||||
|
|
||||||
using (new PerfSample("render"))
|
using (new PerfSample("render"))
|
||||||
{
|
{
|
||||||
++RenderFrame;
|
++RenderFrame;
|
||||||
viewport.DrawRegions(worldRenderer, new DefaultInputHandler(orderManager.world));
|
|
||||||
|
|
||||||
|
// worldRenderer is null during the initial install/download screen
|
||||||
if (worldRenderer != null)
|
if (worldRenderer != null)
|
||||||
Sound.SetListenerPosition(worldRenderer.Position(viewport.CenterLocation.ToInt2()));
|
{
|
||||||
|
Game.Renderer.BeginFrame(worldRenderer.Viewport.Location, Zoom);
|
||||||
|
Sound.SetListenerPosition(worldRenderer.Position(worldRenderer.Viewport.CenterLocation.ToInt2()));
|
||||||
|
worldRenderer.Draw();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Game.Renderer.BeginFrame(float2.Zero, 1f);
|
||||||
|
|
||||||
|
using (new PerfSample("render_widgets"))
|
||||||
|
{
|
||||||
|
Ui.Draw();
|
||||||
|
var cursorName = Ui.Root.GetCursorOuter(Viewport.LastMousePos) ?? "default";
|
||||||
|
CursorProvider.DrawCursor(Game.Renderer, cursorName, Viewport.LastMousePos, (int)cursorFrame);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (new PerfSample("render_flip"))
|
||||||
|
{
|
||||||
|
Game.Renderer.EndFrame(new DefaultInputHandler(orderManager.world));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PerfHistory.items["render"].Tick();
|
PerfHistory.items["render"].Tick();
|
||||||
@@ -151,7 +169,7 @@ namespace OpenRA
|
|||||||
delayedActions.PerformActions();
|
delayedActions.PerformActions();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Tick(OrderManager orderManager)
|
static void TickInner(OrderManager orderManager)
|
||||||
{
|
{
|
||||||
int t = Environment.TickCount;
|
int t = Environment.TickCount;
|
||||||
int dt = t - orderManager.LastTickTime;
|
int dt = t - orderManager.LastTickTime;
|
||||||
@@ -163,6 +181,7 @@ namespace OpenRA
|
|||||||
var world = orderManager.world;
|
var world = orderManager.world;
|
||||||
if (orderManager.GameStarted)
|
if (orderManager.GameStarted)
|
||||||
++Viewport.TicksSinceLastMove;
|
++Viewport.TicksSinceLastMove;
|
||||||
|
|
||||||
Sound.Tick();
|
Sound.Tick();
|
||||||
Sync.CheckSyncUnchanged(world, orderManager.TickImmediate);
|
Sync.CheckSyncUnchanged(world, orderManager.TickImmediate);
|
||||||
|
|
||||||
@@ -194,7 +213,8 @@ namespace OpenRA
|
|||||||
orderManager.LastTickTime = Environment.TickCount;
|
orderManager.LastTickTime = Environment.TickCount;
|
||||||
|
|
||||||
Sync.CheckSyncUnchanged(world, () => world.TickRender(worldRenderer));
|
Sync.CheckSyncUnchanged(world, () => world.TickRender(worldRenderer));
|
||||||
viewport.Tick();
|
|
||||||
|
cursorFrame += 0.5f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -212,7 +232,6 @@ namespace OpenRA
|
|||||||
BeforeGameStart();
|
BeforeGameStart();
|
||||||
|
|
||||||
var map = modData.PrepareMap(mapUID);
|
var map = modData.PrepareMap(mapUID);
|
||||||
viewport = new Viewport(map.Bounds);
|
|
||||||
orderManager.world = new World(modData.Manifest, map, orderManager, isShellmap);
|
orderManager.world = new World(modData.Manifest, map, orderManager, isShellmap);
|
||||||
worldRenderer = new WorldRenderer(orderManager.world);
|
worldRenderer = new WorldRenderer(orderManager.world);
|
||||||
orderManager.world.LoadComplete(worldRenderer);
|
orderManager.world.LoadComplete(worldRenderer);
|
||||||
@@ -328,7 +347,6 @@ namespace OpenRA
|
|||||||
PerfHistory.items["render_flip"].hasNormalTick = false;
|
PerfHistory.items["render_flip"].hasNormalTick = false;
|
||||||
|
|
||||||
JoinLocal();
|
JoinLocal();
|
||||||
viewport = new Viewport(Rectangle.Empty);
|
|
||||||
|
|
||||||
if (Game.Settings.Server.Dedicated)
|
if (Game.Settings.Server.Dedicated)
|
||||||
{
|
{
|
||||||
@@ -392,7 +410,7 @@ namespace OpenRA
|
|||||||
var idealFrameTime = 1.0 / Settings.Graphics.MaxFramerate;
|
var idealFrameTime = 1.0 / Settings.Graphics.MaxFramerate;
|
||||||
var sw = new Stopwatch();
|
var sw = new Stopwatch();
|
||||||
|
|
||||||
Tick( orderManager, viewport );
|
Tick(orderManager);
|
||||||
|
|
||||||
if (Settings.Graphics.CapFramerate)
|
if (Settings.Graphics.CapFramerate)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -66,8 +66,6 @@ namespace OpenRA.Graphics
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float cursorFrame = 0f;
|
|
||||||
|
|
||||||
public static int TicksSinceLastMove = 0;
|
public static int TicksSinceLastMove = 0;
|
||||||
public static int2 LastMousePos;
|
public static int2 LastMousePos;
|
||||||
|
|
||||||
@@ -111,30 +109,6 @@ namespace OpenRA.Graphics
|
|||||||
scrollPosition = new int2(scrollLimits.Location) + new int2(scrollLimits.Size)/2;
|
scrollPosition = new int2(scrollLimits.Location) + new int2(scrollLimits.Size)/2;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawRegions(WorldRenderer wr, IInputHandler inputHandler)
|
|
||||||
{
|
|
||||||
Game.Renderer.BeginFrame(scrollPosition, Zoom);
|
|
||||||
if (wr != null)
|
|
||||||
wr.Draw();
|
|
||||||
|
|
||||||
using (new PerfSample("render_widgets"))
|
|
||||||
{
|
|
||||||
Ui.Draw();
|
|
||||||
var cursorName = Ui.Root.GetCursorOuter(Viewport.LastMousePos) ?? "default";
|
|
||||||
CursorProvider.DrawCursor(Game.Renderer, cursorName, Viewport.LastMousePos, (int)cursorFrame);
|
|
||||||
}
|
|
||||||
|
|
||||||
using (new PerfSample("render_flip"))
|
|
||||||
{
|
|
||||||
Game.Renderer.EndFrame(inputHandler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Tick()
|
|
||||||
{
|
|
||||||
cursorFrame += 0.5f;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert from viewport coords to cell coords (not px)
|
// Convert from viewport coords to cell coords (not px)
|
||||||
public CPos ViewToWorld(MouseInput mi) { return ViewToWorld(mi.Location); }
|
public CPos ViewToWorld(MouseInput mi) { return ViewToWorld(mi.Location); }
|
||||||
public CPos ViewToWorld(int2 loc)
|
public CPos ViewToWorld(int2 loc)
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
public readonly World world;
|
public readonly World world;
|
||||||
public readonly Theater Theater;
|
public readonly Theater Theater;
|
||||||
public Viewport Viewport { get { return Game.viewport; } }
|
public Viewport Viewport { get; private set; }
|
||||||
|
|
||||||
internal readonly TerrainRenderer terrainRenderer;
|
internal readonly TerrainRenderer terrainRenderer;
|
||||||
internal readonly ShroudRenderer shroudRenderer;
|
internal readonly ShroudRenderer shroudRenderer;
|
||||||
@@ -45,6 +45,7 @@ namespace OpenRA.Graphics
|
|||||||
internal WorldRenderer(World world)
|
internal WorldRenderer(World world)
|
||||||
{
|
{
|
||||||
this.world = world;
|
this.world = world;
|
||||||
|
Viewport = new Viewport(world.Map.Bounds);
|
||||||
palette = new HardwarePalette();
|
palette = new HardwarePalette();
|
||||||
|
|
||||||
palettes = new Cache<string, PaletteReference>(CreatePaletteReference);
|
palettes = new Cache<string, PaletteReference>(CreatePaletteReference);
|
||||||
|
|||||||
Reference in New Issue
Block a user