public void Draw(TileWorld world) { Engine.GraphicsDevice.Clear(ClearColor); //sorting out jerks /*camDiff = transform.Position - camDiffLast; camDiffLast = transform.Position; accum += camDiff.X; ++num; if(Math.Abs(accum/num - camDiff.X) > accum/num * 0.3) Console.WriteLine(world.gt + " " + world.gts + " " + camDiff.X);*/ DrawWorld(world); SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null, (1 == 0) ? Matrix.Identity : transform.TransformMatrix); foreach (RenderableComponent c in renderables) { switch(c.Type) { case "Sprite": Sprite sprite = ((SpriteComponent)c).Sprite; SpriteBatch.Draw(sprite.Texture, world.WorldToPixelCoordinates(c.Owner.Position), sprite.CurrentTextureFrame, sprite.Tint); break; } } SpriteBatch.End(); renderables.Clear(); renderAlreadyProcessed = false; }
public void DrawWorld(TileWorld world) { Area a = world.CurrentArea; FloatRectangle r = world.WorldCameraBounds(); SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, transform.TransformMatrix); //Sprite s; for (int y = (int)Math.Floor(r.Top); y <= Math.Ceiling(r.Bottom); ++y) { for (int x = (int)Math.Floor(r.Left); x <= Math.Ceiling(r.Right)+4; ++x) { Sprite s = a.GetTile(x, y).Sprite; SpriteBatch.Draw(s.Texture, world.WorldToPixelCoordinates(new Vector2(x, y)), s.Tint); } } SpriteBatch.End(); }