Moved our TerrainRender ref into WorldRenderer; TR.tileSet want to be somewhere else (it's not just renderer, it affects pathing)

This commit is contained in:
Bob
2009-10-30 00:19:53 +13:00
parent 02ed35b501
commit 8580ae0f78
3 changed files with 25 additions and 27 deletions

View File

@@ -20,7 +20,6 @@ namespace OpenRa.Game
public static World world;
public static Map map;
static TreeCache treeCache;
public static TerrainRenderer terrain;
public static Viewport viewport;
public static PathFinder PathFinder;
public static WorldRenderer worldRenderer;
@@ -55,7 +54,6 @@ namespace OpenRa.Game
viewport = new Viewport( clientSize, map.Offset, map.Offset + map.Size, renderer );
terrain = new TerrainRenderer(renderer, map, viewport);
world = new World();
treeCache = new TreeCache(map);
@@ -68,11 +66,11 @@ namespace OpenRa.Game
LoadMapBuildings(mapFile);
LoadMapUnits(mapFile);
PathFinder = new PathFinder(map, terrain.tileSet);
controller = new Controller();
worldRenderer = new WorldRenderer(renderer);
PathFinder = new PathFinder( map, worldRenderer.terrainRenderer.tileSet );
soundEngine = new ISoundEngine();
sounds = new Cache<string, ISoundSource>(LoadSound);
@@ -144,7 +142,7 @@ namespace OpenRa.Game
return map.IsInMap(a.X, a.Y) &&
TerrainCosts.Cost(umt,
terrain.tileSet.GetWalkability(map.MapTiles[a.X, a.Y])) < double.PositiveInfinity;
worldRenderer.terrainRenderer.tileSet.GetWalkability( map.MapTiles[ a.X, a.Y ] ) ) < double.PositiveInfinity;
}
static IEnumerable<Actor> FindUnits(float2 a, float2 b)

View File

@@ -12,19 +12,14 @@ namespace OpenRa.Game.Graphics
IndexBuffer indexBuffer;
Sheet terrainSheet;
public TileSet tileSet;
Region region;
Renderer renderer;
Map map;
Viewport viewport;
OverlayRenderer overlayRenderer;
public TerrainRenderer(Renderer renderer, Map map, Viewport viewport)
public TerrainRenderer(Renderer renderer, Map map)
{
this.renderer = renderer;
this.viewport = viewport;
region = Region.Create(viewport, DockStyle.Left, viewport.Width - 128, Draw, null );
viewport.AddRegion(region);
this.map = map;
overlayRenderer = new OverlayRenderer( renderer, map );
@@ -60,14 +55,14 @@ namespace OpenRa.Game.Graphics
indexBuffer.SetData( indices );
}
void Draw()
public void Draw( Viewport viewport )
{
int indicesPerRow = map.Width * 6;
int verticesPerRow = map.Width * 4;
int visibleRows = (int)(region.Size.Y / 24.0f + 2);
int visibleRows = (int)(viewport.Width / 24.0f + 2);
int firstRow = (int)((region.Position.Y + viewport.Location.Y) / 24.0f - map.YOffset);
int firstRow = (int)((viewport.Location.Y) / 24.0f - map.YOffset);
int lastRow = firstRow + visibleRows;
if (lastRow < 0 || firstRow > map.Height)

View File

@@ -9,6 +9,7 @@ namespace OpenRa.Game.Graphics
{
class WorldRenderer
{
public readonly TerrainRenderer terrainRenderer;
public readonly SpriteRenderer spriteRenderer;
public readonly LineRenderer lineRenderer;
public readonly Region region;
@@ -19,6 +20,8 @@ namespace OpenRa.Game.Graphics
public WorldRenderer(Renderer renderer)
{
terrainRenderer = new TerrainRenderer( renderer, Game.map );
// TODO: this is layout policy. it belongs at a higher level than this.
region = Region.Create(Game.viewport, DockStyle.Left,
Game.viewport.Width - 128, Draw,
@@ -53,6 +56,8 @@ namespace OpenRa.Game.Graphics
public void Draw()
{
terrainRenderer.Draw( Game.viewport );
var rect = new RectangleF((region.Position + Game.viewport.Location).ToPointF(),
region.Size.ToSizeF());