Route viewport centering via WorldRenderer.

This commit is contained in:
Paul Chote
2013-09-27 17:13:54 +12:00
parent b3d608092c
commit f575c20d38
21 changed files with 77 additions and 70 deletions

View File

@@ -22,14 +22,16 @@ namespace OpenRA.Mods.RA
class CncShellmapScript : IWorldLoaded, ITick
{
static CPos viewportOrigin;
WPos viewportOrigin;
Dictionary<string, Actor> actors;
WorldRenderer worldRenderer;
public void WorldLoaded(World w, WorldRenderer wr)
{
worldRenderer = wr;
var b = w.Map.Bounds;
viewportOrigin = new CPos(b.Left + b.Width / 2, b.Top + b.Height / 2);
Game.MoveViewport(viewportOrigin.ToFloat2());
viewportOrigin = new CPos(b.Left + b.Width / 2, b.Top + b.Height / 2).CenterPosition;
worldRenderer.Viewport.Center(viewportOrigin);
actors = w.WorldActor.Trait<SpawnMapActors>().Actors;
@@ -39,8 +41,8 @@ namespace OpenRA.Mods.RA
void SetViewport()
{
var t = (ticks + 45) % (360f * speed) * (Math.PI / 180) * 1f / speed;
var loc = viewportOrigin.ToFloat2() + (new float2(-15, 4) * float2.FromAngle((float)t));
Game.viewport.Center(loc);
var offset = new float2(-15360, 4096) * float2.FromAngle((float)t);
worldRenderer.Viewport.Center(viewportOrigin + new WVec((int)offset.X, (int)offset.Y, 0));
}
int ticks = 0;