Exemplo n.º 1
0
 public void Render(ITessellator tessellator)
 {
     foreach (var layer in _layers)
     {
         layer.Render(tessellator);
     }
 }
Exemplo n.º 2
0
		public void Render(ITessellator tessellator)
		{
			var color = tessellator.CurrentColor;

			// TODO: If this is an entity tile, then don't adjust the color...?

			// This will cause tile images to become darker as they move into the background layers.
			var layer =  -tessellator.Transform(Vector3.Zero).Z;
			if (layer < _numChunkLayers)
			{
				var multiplier = 1.0 - (_numChunkLayers - layer) / (_numChunkLayers * 2); // + 0.25f;
				tessellator.BindColor(Color.FromArgb((int)MathHelper.Clamp(color.R * multiplier, 0, 255), (int)MathHelper.Clamp(color.G * multiplier, 0, 255), (int)MathHelper.Clamp(color.B * multiplier, 0, 255)));
			}

			if (Transform != null)
			{
				tessellator.PushTransform();
				Transform.Apply(tessellator);

				_tileSet.Render(tessellator, TileIndex, Transform.MirrorX, Transform.MirrorY);
				tessellator.PopTransform();
			}
			else
			{
				_tileSet.Render(tessellator, TileIndex);
			}

			tessellator.BindColor(color);
		}
Exemplo n.º 3
0
		protected override void RenderContent(ITessellator tessellator)
		{
			base.RenderContent(tessellator);

			_label.TextColor = ModifyColorByState(_labelColor);
			_label.Render(tessellator);
		}
Exemplo n.º 4
0
 public ChunkRenderer(Viewport viewport)
 {
     _tessellator = new VertexBufferTessellator()
     {
         Mode = VertexTessellatorMode.Render
     };
 }
Exemplo n.º 5
0
        private void RenderFieldOfView(int[,] fovMap, ITessellator tessellator, Camera <OrthographicProjection> camera, IChunkAccess chunk, int minX, int maxX, int minY, int maxY)
        {
            tessellator.PushTransform();
            tessellator.Translate(0, 0, -1 * (int)ChunkLayer.Lights);
            tessellator.BindTexture(null);

            for (var y = 0; y < fovMap.GetLength(0); y++)
            {
                for (var x = 0; x < fovMap.GetLength(1); x++)
                {
                    if (fovMap[y, x] == 255)
                    {
                        continue;
                    }

                    tessellator.BindColor(Color.FromArgb(255 - fovMap[y, x], 0, 0, 0));
                    tessellator.Translate(minX + x, minY + y);
                    tessellator.AddPoint(0, 0);
                    tessellator.AddPoint(0, 1);
                    tessellator.AddPoint(1, 1);
                    tessellator.AddPoint(1, 0);
                    tessellator.Translate(-(minX + x), -(minY + y));
                }
            }

            tessellator.PopTransform();
        }
Exemplo n.º 6
0
		public void Render(ITessellator tessellator)
		{
			foreach (var layer in _layers)
			{
				layer.Render(tessellator);
			}
		}
Exemplo n.º 7
0
        protected override void RenderContent(ITessellator tessellator)
        {
            base.RenderContent(tessellator);

            _label.TextColor = ModifyColorByState(_labelColor);
            _label.Render(tessellator);
        }
Exemplo n.º 8
0
        public void Render(ITessellator tessellator)
        {
            var color = tessellator.CurrentColor;

            // TODO: If this is an entity tile, then don't adjust the color...?

            // This will cause tile images to become darker as they move into the background layers.
            var layer = -tessellator.Transform(Vector3.Zero).Z;

            if (layer < _numChunkLayers)
            {
                var multiplier = 1.0 - (_numChunkLayers - layer) / (_numChunkLayers * 2);                 // + 0.25f;
                tessellator.BindColor(Color.FromArgb((int)MathHelper.Clamp(color.R * multiplier, 0, 255), (int)MathHelper.Clamp(color.G * multiplier, 0, 255), (int)MathHelper.Clamp(color.B * multiplier, 0, 255)));
            }

            if (Transform != null)
            {
                tessellator.PushTransform();
                Transform.Apply(tessellator);

                _tileSet.Render(tessellator, TileIndex, Transform.MirrorX, Transform.MirrorY);
                tessellator.PopTransform();
            }
            else
            {
                _tileSet.Render(tessellator, TileIndex);
            }

            tessellator.BindColor(color);
        }
Exemplo n.º 9
0
        public override void Render(ITessellator tessellator, IChunkAccess chunk, ChunkLayer layer, int x, int y)
        {
            base.Render(tessellator, chunk, layer, x, y);

            var color = tessellator.CurrentColor;

            tessellator.BindColor(OutlineColor);
            if (chunk[layer, x - 1, y] != chunk[layer, x, y])
            {
                _connectedWallTiles.Render(tessellator, _connectedWallTiles.GetTileIndexFromName(_westWall));
            }
            if (chunk[layer, x + 1, y] != chunk[layer, x, y])
            {
                _connectedWallTiles.Render(tessellator, _connectedWallTiles.GetTileIndexFromName(_eastWall));
            }
            if (chunk[layer, x, y - 1] != chunk[layer, x, y])
            {
                _connectedWallTiles.Render(tessellator, _connectedWallTiles.GetTileIndexFromName(_northWall));
            }
            if (chunk[layer, x, y + 1] != chunk[layer, x, y])
            {
                _connectedWallTiles.Render(tessellator, _connectedWallTiles.GetTileIndexFromName(_southWall));
            }
            tessellator.BindColor(color);
        }
Exemplo n.º 10
0
		/// <param name="closeOnFocus">Should this state close when the game receives input focus?</param>
		public PauseState(GameStateManager manager)
			: base(manager)
		{
			var viewport = new Viewport(0, 0, manager.GameWindow.Width, manager.GameWindow.Height);
			_tessellator = new VertexBufferTessellator() { Mode = VertexTessellatorMode.Render };
			_hudCamera = Camera.CreateOrthographicCamera(viewport);
			_hudCamera.Projection.OrthographicSize = viewport.Height / 2;
		}
Exemplo n.º 11
0
		public void Render(ITessellator tessellator)
		{
			tessellator.PushTransform();
			tessellator.Translate(Bounds.X, Bounds.Y);

			RenderContent(tessellator);

			tessellator.PopTransform();
		}
Exemplo n.º 12
0
		public void Apply(ITessellator tessellator)
		{
			var position = tessellator.Transform(Vector2.Zero);
			tessellator.Translate(-position);
			tessellator.Scale(Scale.X, Scale.Y);
			tessellator.Rotate(Rotation, 0, 0, 1);
			tessellator.Translate(Translation);
			tessellator.Translate(position);
		}
Exemplo n.º 13
0
        public void Render(ITessellator tessellator)
        {
            tessellator.PushTransform();
            tessellator.Translate(Bounds.X, Bounds.Y);

            RenderContent(tessellator);

            tessellator.PopTransform();
        }
Exemplo n.º 14
0
        /// <summary>
        /// Calculate a scale according to the current position.
        /// </summary>
        /// <remarks>
        /// This assumes you are inside of RenderContent, and handles pushing and popping the current transformation accordingly.
        /// </remarks>
        protected void Scale(ITessellator tessellator, float scale)
        {
            var position = tessellator.Transform(Vector2.Zero);

            tessellator.PopTransform();
            tessellator.PushTransform();
            tessellator.Scale(scale, scale);
            tessellator.Translate(position);
        }
Exemplo n.º 15
0
        public void Apply(ITessellator tessellator)
        {
            var position = tessellator.Transform(Vector2.Zero);

            tessellator.Translate(-position);
            tessellator.Scale(Scale.X, Scale.Y);
            tessellator.Rotate(Rotation, 0, 0, 1);
            tessellator.Translate(Translation);
            tessellator.Translate(position);
        }
Exemplo n.º 16
0
		public LoadWorldGameState(GameStateManager manager)
			: base(manager)
		{
			var viewport = new Viewport(0, 0, manager.GameWindow.Width, manager.GameWindow.Height);
			_hudCamera = Camera.CreateOrthographicCamera(viewport);
			_hudCamera.Projection.OrthographicSize = viewport.Height / 2;
			_tessellator = new VertexBufferTessellator() { Mode = VertexTessellatorMode.Render };

			_progressMessages = new ConcurrentStack<string>();
		}
Exemplo n.º 17
0
        /// <param name="closeOnFocus">Should this state close when the game receives input focus?</param>
        public PauseState(GameStateManager manager)
            : base(manager)
        {
            var viewport = new Viewport(0, 0, manager.GameWindow.Width, manager.GameWindow.Height);

            _tessellator = new VertexBufferTessellator()
            {
                Mode = VertexTessellatorMode.Render
            };
            _hudCamera = Camera.CreateOrthographicCamera(viewport);
            _hudCamera.Projection.OrthographicSize = viewport.Height / 2;
        }
Exemplo n.º 18
0
		protected override void RenderContent(ITessellator tessellator)
		{
			base.RenderContent(tessellator);

			if ((ItemStack != null) && (ItemStack.StackSize > 1))
			{
				tessellator.BindColor(Color.Yellow);
				tessellator.Translate(-6, 16, -1);
				ASCII.RenderText(tessellator, ItemStack.StackSize.ToString());
				tessellator.Translate(6, -16, 1);
			}
		}
Exemplo n.º 19
0
        protected override void RenderContent(ITessellator tessellator)
        {
            base.RenderContent(tessellator);

            if ((ItemStack != null) && (ItemStack.StackSize > 1))
            {
                tessellator.BindColor(Color.Yellow);
                tessellator.Translate(-6, 16, -1);
                ASCII.RenderText(tessellator, ItemStack.StackSize.ToString());
                tessellator.Translate(6, -16, 1);
            }
        }
Exemplo n.º 20
0
        protected override void RenderContent(ITessellator tessellator)
        {
            if (Shadowed)
            {
                tessellator.Translate(1, 1);
                tessellator.BindColor(ShadowColor);
                UI_ASCII.RenderText(tessellator, Text);
                tessellator.Translate(-1, -1);
            }

            tessellator.BindColor(TextColor);
            UI_ASCII.RenderText(tessellator, Text);
        }
Exemplo n.º 21
0
		protected override void RenderContent(ITessellator tessellator)
		{
			if (Shadowed)
			{
				tessellator.Translate(1, 1);
				tessellator.BindColor(ShadowColor);
				UI_ASCII.RenderText(tessellator, Text);
				tessellator.Translate(-1, -1);
			}

			tessellator.BindColor(TextColor);
			UI_ASCII.RenderText(tessellator, Text);
		}
Exemplo n.º 22
0
        public void RenderText(ITessellator tessellator, string format, params object[] args)
        {
            Vector2 unitX = tessellator.Transform(Vector2.UnitX * (IsNormalized ? 1 : Width)) - tessellator.Transform(Vector2.Zero);

            format = string.Format(format, args);
            for (var index = 0; index < format.Length; index++)
            {
                Render(tessellator, (int)format[index]);
                tessellator.Translate(unitX);
            }

            tessellator.Translate(-unitX * format.Length);
        }
Exemplo n.º 23
0
        public LoadWorldGameState(GameStateManager manager)
            : base(manager)
        {
            var viewport = new Viewport(0, 0, manager.GameWindow.Width, manager.GameWindow.Height);

            _hudCamera = Camera.CreateOrthographicCamera(viewport);
            _hudCamera.Projection.OrthographicSize = viewport.Height / 2;
            _tessellator = new VertexBufferTessellator()
            {
                Mode = VertexTessellatorMode.Render
            };

            _progressMessages = new ConcurrentStack <string>();
        }
Exemplo n.º 24
0
		public GameplayState(GameStateManager manager, Level level)
			: base(manager)
		{
			var viewport = new Viewport(0, 0, manager.GameWindow.Width, manager.GameWindow.Height);

			_frameCount = 0;
			_totalGameTime = TimeSpan.Zero;
			_timer = Stopwatch.StartNew();

			_worldManager = new WorldManager(viewport, level);
			_uiManager = new UIManager(manager.GameWindow, viewport, _worldManager);

			_tessellator = new VertexBufferTessellator() { Mode = VertexTessellatorMode.Render };
		}
Exemplo n.º 25
0
		public void Render(ITessellator tessellator, Entity entity)
		{
			if (entity is BlockEntity)
			{
				Render(tessellator, entity as BlockEntity);
			}
			else if (entity is PlayerEntity)
			{
				Render(tessellator, entity as PlayerEntity);
			}
			else
			{
				throw new NotImplementedException();
			}
		}
Exemplo n.º 26
0
 public void Render(ITessellator tessellator, Entity entity)
 {
     if (entity is BlockEntity)
     {
         Render(tessellator, entity as BlockEntity);
     }
     else if (entity is PlayerEntity)
     {
         Render(tessellator, entity as PlayerEntity);
     }
     else
     {
         throw new NotImplementedException();
     }
 }
Exemplo n.º 27
0
 /// <summary>
 /// Render a solid rectangle.
 /// </summary>
 protected void RenderRectangle(ITessellator tessellator, Color color, int tileWidth, int tileHeight)
 {
     tessellator.PushTransform();
     tessellator.BindColor(color);
     for (var y = 0; y < tileHeight; y++)
     {
         for (var x = 0; x < tileWidth; x++)
         {
             UI_ASCII.Render(tessellator, ASCII_SOLID);
             tessellator.Translate(UI_ASCII.Width, 0);
         }
         tessellator.Translate(-UI_ASCII.Width * tileWidth, UI_ASCII.Height);
     }
     tessellator.PopTransform();
 }
Exemplo n.º 28
0
		private void Render(ITessellator tessellator, PlayerEntity entity)
		{
			tessellator.PushTransform();

			var origin = tessellator.Transform(Vector3.Zero);

			tessellator.LoadIdentity();
			tessellator.Scale(entity.Size, entity.Size);
			tessellator.Translate(origin);
			//tessellator.Translate(0.1f, 0.1f); // center on the current tile position

			tessellator.Translate(entity.Position); // move to the entity's position

			_playerTile.Render(tessellator);
			tessellator.PopTransform();
		}
Exemplo n.º 29
0
		public UIManager(IGameWindow window, Viewport viewport, WorldManager worldManager)
		{
			_window = window;

			_worldManager = worldManager;

			_children = new List<UIElement>();

			_hudCamera = Camera.CreateOrthographicCamera(viewport);
			_hudCamera.Projection.OrthographicSize = viewport.Height / 2;

			//_tessellator = new ImmediateModeTessellator();
			_tessellator = new VertexBufferTessellator() { Mode = VertexTessellatorMode.Render };

			ToolbarItems = new List<ItemStackButton>();
		}
Exemplo n.º 30
0
        private void RenderEntities(ITessellator tessellator, IChunkAccess chunk, int minX, int maxX, int minY, int maxY)
        {
            tessellator.Translate(0, 0, -1 * (int)ChunkLayer.Blocking);

            foreach (var entity in chunk.Entities)
            {
                if (CommonCore.Math.MathHelper.IsInRange(entity.Position.X, minX, maxX + 1) &&
                    CommonCore.Math.MathHelper.IsInRange(entity.Position.Y, minY, maxY + 1))
                {
                    tessellator.BindColor(Color.White);
                    EntityRenderManager.Instance.Render(tessellator, entity);
                }
            }

            tessellator.Translate(0, 0, (int)ChunkLayer.Blocking);
        }
Exemplo n.º 31
0
        private void Render(ITessellator tessellator, PlayerEntity entity)
        {
            tessellator.PushTransform();

            var origin = tessellator.Transform(Vector3.Zero);

            tessellator.LoadIdentity();
            tessellator.Scale(entity.Size, entity.Size);
            tessellator.Translate(origin);
            //tessellator.Translate(0.1f, 0.1f); // center on the current tile position

            tessellator.Translate(entity.Position);             // move to the entity's position

            _playerTile.Render(tessellator);
            tessellator.PopTransform();
        }
Exemplo n.º 32
0
        public GameplayState(GameStateManager manager, Level level)
            : base(manager)
        {
            var viewport = new Viewport(0, 0, manager.GameWindow.Width, manager.GameWindow.Height);

            _frameCount    = 0;
            _totalGameTime = TimeSpan.Zero;
            _timer         = Stopwatch.StartNew();

            _worldManager = new WorldManager(viewport, level);
            _uiManager    = new UIManager(manager.GameWindow, viewport, _worldManager);

            _tessellator = new VertexBufferTessellator()
            {
                Mode = VertexTessellatorMode.Render
            };
        }
Exemplo n.º 33
0
		public void Render(ITessellator tessellator, int tileIndex, bool mirrorX = false, bool mirrorY = false)
		{
			var tile = _tiles[tileIndex];

			var minU = mirrorX ? tile.URight : tile.ULeft;
			var maxU = mirrorX ? tile.ULeft : tile.URight;
			var minV = mirrorY ? tile.VBottom : tile.VTop;
			var maxV = mirrorY ? tile.VTop : tile.VBottom;

			var width = IsNormalized ? 1 : Width;
			var height = IsNormalized ? 1 : Height;

			tessellator.BindTexture(_texture);
			tessellator.AddPoint(0, 0, minU, minV);
			tessellator.AddPoint(0, height, minU, maxV);
			tessellator.AddPoint(width, height, maxU, maxV);
			tessellator.AddPoint(width, 0, maxU, minV);
		}
Exemplo n.º 34
0
        public void Render(ITessellator tessellator, int tileIndex, bool mirrorX = false, bool mirrorY = false)
        {
            var tile = _tiles[tileIndex];

            var minU = mirrorX ? tile.URight : tile.ULeft;
            var maxU = mirrorX ? tile.ULeft : tile.URight;
            var minV = mirrorY ? tile.VBottom : tile.VTop;
            var maxV = mirrorY ? tile.VTop : tile.VBottom;

            var width  = IsNormalized ? 1 : Width;
            var height = IsNormalized ? 1 : Height;

            tessellator.BindTexture(_texture);
            tessellator.AddPoint(0, 0, minU, minV);
            tessellator.AddPoint(0, height, minU, maxV);
            tessellator.AddPoint(width, height, maxU, maxV);
            tessellator.AddPoint(width, 0, maxU, minV);
        }
Exemplo n.º 35
0
        public UIManager(IGameWindow window, Viewport viewport, WorldManager worldManager)
        {
            _window = window;

            _worldManager = worldManager;

            _children = new List <UIElement>();

            _hudCamera = Camera.CreateOrthographicCamera(viewport);
            _hudCamera.Projection.OrthographicSize = viewport.Height / 2;

            //_tessellator = new ImmediateModeTessellator();
            _tessellator = new VertexBufferTessellator()
            {
                Mode = VertexTessellatorMode.Render
            };

            ToolbarItems = new List <ItemStackButton>();
        }
Exemplo n.º 36
0
		public void Render(ITessellator tessellator, IChunkAccess chunk, ChunkLayer layer, int x, int y)
		{
			var metadata = chunk.GetMetadata(layer, x, y);
			if (_layers.ContainsKey(metadata))
			{
				_layers[metadata].Render(tessellator);
			}
			else
			{
				if (metadata > _maxKey)
				{
					_layers[_maxKey].Render(tessellator);
				}
				else
				{
					_layers[_minKey].Render(tessellator);
				}
			}
		}
Exemplo n.º 37
0
		protected override void RenderContent(ITessellator tessellator)
		{
			RenderRectangle(tessellator, BackgroundColor, _tileWidth, _tileHeight);

			tessellator.BindColor(BorderColor);

			UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_TOPLEFT : ASCII_SINGLELINE_TOPLEFT);

			for (var n = 0; n < _tileWidth - 2; n++)
			{
				tessellator.Translate(UI_ASCII.Width, 0);
				UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_HORIZONTAL : ASCII_SINGLELINE_HORIZONTAL); // top
			}

			tessellator.Translate(UI_ASCII.Width, 0);
			UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_TOPRIGHT : ASCII_SINGLELINE_TOPRIGHT);

			tessellator.Translate(0, UI_ASCII.Height * (_tileHeight - 1));
			UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_BOTTOMRIGHT : ASCII_SINGLELINE_BOTTOMRIGHT);

			for (var n = 0; n < _tileWidth - 2; n++)
			{
				tessellator.Translate(-UI_ASCII.Width, 0);
				UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_HORIZONTAL : ASCII_SINGLELINE_HORIZONTAL); // bottom
			}

			tessellator.Translate(-UI_ASCII.Width, 0);
			UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_BOTTOMLEFT : ASCII_SINGLELINE_BOTTOMLEFT);

			for (var n = 0; n < _tileHeight - 2; n++)
			{
				tessellator.Translate(0, -UI_ASCII.Height);
				UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_VERTICAL : ASCII_SINGLELINE_VERTICAL); // left
			}

			tessellator.Translate(UI_ASCII.Width * (_tileWidth - 1), 0);
			for (var n = 0; n < _tileHeight - 2; n++)
			{
				UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_VERTICAL : ASCII_SINGLELINE_VERTICAL); // right
				tessellator.Translate(0, UI_ASCII.Height);
			}
		}
Exemplo n.º 38
0
        protected override void RenderContent(ITessellator tessellator)
        {
            RenderRectangle(tessellator, BackgroundColor, _tileWidth, _tileHeight);

            tessellator.BindColor(BorderColor);

            UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_TOPLEFT : ASCII_SINGLELINE_TOPLEFT);

            for (var n = 0; n < _tileWidth - 2; n++)
            {
                tessellator.Translate(UI_ASCII.Width, 0);
                UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_HORIZONTAL : ASCII_SINGLELINE_HORIZONTAL);                 // top
            }

            tessellator.Translate(UI_ASCII.Width, 0);
            UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_TOPRIGHT : ASCII_SINGLELINE_TOPRIGHT);

            tessellator.Translate(0, UI_ASCII.Height * (_tileHeight - 1));
            UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_BOTTOMRIGHT : ASCII_SINGLELINE_BOTTOMRIGHT);

            for (var n = 0; n < _tileWidth - 2; n++)
            {
                tessellator.Translate(-UI_ASCII.Width, 0);
                UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_HORIZONTAL : ASCII_SINGLELINE_HORIZONTAL);                 // bottom
            }

            tessellator.Translate(-UI_ASCII.Width, 0);
            UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_BOTTOMLEFT : ASCII_SINGLELINE_BOTTOMLEFT);

            for (var n = 0; n < _tileHeight - 2; n++)
            {
                tessellator.Translate(0, -UI_ASCII.Height);
                UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_VERTICAL : ASCII_SINGLELINE_VERTICAL);                 // left
            }

            tessellator.Translate(UI_ASCII.Width * (_tileWidth - 1), 0);
            for (var n = 0; n < _tileHeight - 2; n++)
            {
                UI_ASCII.Render(tessellator, DOUBLELINED ? ASCII_DOUBLELINE_VERTICAL : ASCII_SINGLELINE_VERTICAL);                 // right
                tessellator.Translate(0, UI_ASCII.Height);
            }
        }
Exemplo n.º 39
0
        private void RenderLayer(ITessellator tessellator, IChunkAccess chunk, ChunkLayer layer, int minX, int maxX, int minY, int maxY)
        {
            for (var y = minY; y < maxY; y++)
            {
                for (var x = minX; x < maxX; x++)
                {
                    if ((chunk[layer, x, y] > 0) && chunk.CanSeeSky(layer, x, y))
                    {
                        //var position = tessellator.WorldToScreenPoint(new Vector3(column, row, (int)layer));
                        var position = new Vector3(x, y, -1 * (int)layer);

                        tessellator.Translate(position);
                        var id = BlockRegistry.Instance.GetById(chunk[layer, x, y]);
                        BlockRegistry.Instance.GetById(chunk[layer, x, y]).Renderer.Render(tessellator, chunk, layer, x, y);

                        tessellator.Translate(-position);
                    }
                }
            }
        }
Exemplo n.º 40
0
        public void Render(ITessellator tessellator, IChunkAccess chunk, ChunkLayer layer, int x, int y)
        {
            var metadata = chunk.GetMetadata(layer, x, y);

            if (_layers.ContainsKey(metadata))
            {
                _layers[metadata].Render(tessellator);
            }
            else
            {
                if (metadata > _maxKey)
                {
                    _layers[_maxKey].Render(tessellator);
                }
                else
                {
                    _layers[_minKey].Render(tessellator);
                }
            }
        }
Exemplo n.º 41
0
        private int[,] CalculateFieldOfView(ITessellator tessellator, Camera <OrthographicProjection> camera, PlayerEntity player, IChunkAccess chunk, int minX, int maxX, int minY, int maxY)
        {
            int[,] fovMap = new int[maxY - minY + 1, maxX - minX + 1];
            var originX = player.Position.X + player.Size / 2.0f;
            var originY = player.Position.Y + player.Size / 2.0f;

            var considered = new List <Vector2I>();

            //for (var angle = 0.0f; angle < 360.0f; angle += (9.0f - distance)) // hit more angles as you move further out
            for (var angle = 0.0f; angle < 360.0f; angle += 1.0f)
            {
                for (var distance = 0.0f; distance < chunk.AmbientLightLevel * 2.0f; distance++)
                {
                    var x      = (int)Math.Floor(originX + distance * Math.Cos(OpenTK.MathHelper.DegreesToRadians(angle)));
                    var y      = (int)Math.Floor(originY + distance * Math.Sin(OpenTK.MathHelper.DegreesToRadians(angle)));
                    var vector = new Vector2I(y - minY, x - minX);
                    if (!considered.Contains(vector))
                    {
                        considered.Add(vector);

                        if (CommonCore.Math.MathHelper.IsInRange(y - minY, 0, maxY - minY + 1) && CommonCore.Math.MathHelper.IsInRange(x - minX, 0, maxX - minX + 1))
                        {
                            //var alpha = (8.0f - distance) / 8.0f;
                            var alpha = 1.0f / Math.Pow((distance + 1) / chunk.AmbientLightLevel, 2);

                            fovMap[y - minY, x - minX] = OpenTK.MathHelper.Clamp((int)(fovMap[y - minY, x - minX] + alpha * 255.0f), 0, 255);
                        }
                        else
                        {
                            break;
                        }
                    }

                    if (chunk[ChunkLayer.Blocking, x, y] != 0)
                    {
                        break;
                    }
                }
            }
            return(fovMap);
        }
Exemplo n.º 42
0
		private int[,] CalculateFieldOfView(ITessellator tessellator, Camera<OrthographicProjection> camera, PlayerEntity player, IChunkAccess chunk, int minX, int maxX, int minY, int maxY)
		{
			int[,] fovMap = new int[maxY - minY + 1, maxX - minX + 1];
			var originX = player.Position.X + player.Size / 2.0f;
			var originY = player.Position.Y + player.Size / 2.0f;

			var considered = new List<Vector2I>();
			//for (var angle = 0.0f; angle < 360.0f; angle += (9.0f - distance)) // hit more angles as you move further out
			for (var angle = 0.0f; angle < 360.0f; angle += 1.0f)
			{
				for (var distance = 0.0f; distance < chunk.AmbientLightLevel * 2.0f; distance++)
				{
					var x = (int)Math.Floor(originX + distance * Math.Cos(OpenTK.MathHelper.DegreesToRadians(angle)));
					var y = (int)Math.Floor(originY + distance * Math.Sin(OpenTK.MathHelper.DegreesToRadians(angle)));
					var vector = new Vector2I(y - minY, x - minX);
					if (!considered.Contains(vector))
					{
						considered.Add(vector);

						if (CommonCore.Math.MathHelper.IsInRange(y - minY, 0, maxY - minY + 1) && CommonCore.Math.MathHelper.IsInRange(x - minX, 0, maxX - minX + 1))
						{
							//var alpha = (8.0f - distance) / 8.0f;
							var alpha = 1.0f / Math.Pow((distance + 1) / chunk.AmbientLightLevel, 2);

							fovMap[y - minY, x - minX] = OpenTK.MathHelper.Clamp((int)(fovMap[y - minY, x - minX] + alpha * 255.0f), 0, 255);
						}
						else
						{
							break;
						}
					}

					if (chunk[ChunkLayer.Blocking, x, y] != 0)
					{
						break;
					}
				}
			}
			return fovMap;
		}
Exemplo n.º 43
0
		private void Render(ITessellator tessellator, BlockEntity entity)
		{
			var color = tessellator.CurrentColor;
			tessellator.BindColor(Color.FromArgb(196, entity.IsSelected ? Color.Red : Color.White));
			tessellator.PushTransform();

			var origin = tessellator.Transform(Vector3.Zero);

			tessellator.LoadIdentity();
			tessellator.Scale(entity.Size, entity.Size);
			tessellator.Translate(-entity.Size / 2, -entity.Size / 2); // center the rotation
			tessellator.Rotate(entity.Rotation, 0, 0, 1);
			tessellator.Translate(entity.Size, entity.Size);
			tessellator.Translate(origin);
			//tessellator.Translate(entity.Size, entity.Size); // center on the current tile position
			tessellator.Translate(entity.Position); // move to the entity's position

			BlockRegistry.Instance.GetById(entity.BlockID).Renderer.Render(tessellator);

			tessellator.PopTransform();
			tessellator.BindColor(color); // TODO: Is this still needed?
		}
Exemplo n.º 44
0
        private void Render(ITessellator tessellator, BlockEntity entity)
        {
            var color = tessellator.CurrentColor;

            tessellator.BindColor(Color.FromArgb(196, entity.IsSelected ? Color.Red : Color.White));
            tessellator.PushTransform();

            var origin = tessellator.Transform(Vector3.Zero);

            tessellator.LoadIdentity();
            tessellator.Scale(entity.Size, entity.Size);
            tessellator.Translate(-entity.Size / 2, -entity.Size / 2);             // center the rotation
            tessellator.Rotate(entity.Rotation, 0, 0, 1);
            tessellator.Translate(entity.Size, entity.Size);
            tessellator.Translate(origin);
            //tessellator.Translate(entity.Size, entity.Size); // center on the current tile position
            tessellator.Translate(entity.Position);             // move to the entity's position

            BlockRegistry.Instance.GetById(entity.BlockID).Renderer.Render(tessellator);

            tessellator.PopTransform();
            tessellator.BindColor(color);             // TODO: Is this still needed?
        }
Exemplo n.º 45
0
		protected override void RenderContent(ITessellator tessellator)
		{
			base.RenderContent(tessellator);

			// TODO: Item.Renderer.Color = ModifyColorByState(_itemColor);

			tessellator.Translate(UI_ASCII.Width * 1.5f, UI_ASCII.Height * 1.5f);
			Scale(tessellator, 8.0f * 2.0f);

			if (Renderable != null)
			{
				tessellator.BindColor(Color.White);
				Renderable.Render(tessellator);
			}

			if (Hotkey.HasValue)
			{
				tessellator.BindColor(Color.White);
				Scale(tessellator, 8f);
				tessellator.Translate(16, 16, -1);
				ASCII.RenderText(tessellator, ConvertEx.ChangeType<char>(Hotkey.Value).ToString());
				tessellator.Translate(-16, -16, 1);
			}
		}
Exemplo n.º 46
0
		public override void Render(ITessellator tessellator, IChunkAccess chunk, ChunkLayer layer, int x, int y)
		{
			base.Render(tessellator, chunk, layer, x, y);

			var color = tessellator.CurrentColor;
			tessellator.BindColor(OutlineColor);
			if (chunk[layer, x - 1, y] != chunk[layer, x, y])
			{
				_connectedWallTiles.Render(tessellator, _connectedWallTiles.GetTileIndexFromName(_westWall));
			}
			if (chunk[layer, x + 1, y] != chunk[layer, x, y])
			{
				_connectedWallTiles.Render(tessellator, _connectedWallTiles.GetTileIndexFromName(_eastWall));
			}
			if (chunk[layer, x, y - 1] != chunk[layer, x, y])
			{
				_connectedWallTiles.Render(tessellator, _connectedWallTiles.GetTileIndexFromName(_northWall));
			}
			if (chunk[layer, x, y + 1] != chunk[layer, x, y])
			{
				_connectedWallTiles.Render(tessellator, _connectedWallTiles.GetTileIndexFromName(_southWall));
			}
			tessellator.BindColor(color);
		}
Exemplo n.º 47
0
        protected override void RenderContent(ITessellator tessellator)
        {
            base.RenderContent(tessellator);

            // TODO: Item.Renderer.Color = ModifyColorByState(_itemColor);

            tessellator.Translate(UI_ASCII.Width * 1.5f, UI_ASCII.Height * 1.5f);
            Scale(tessellator, 8.0f * 2.0f);

            if (Renderable != null)
            {
                tessellator.BindColor(Color.White);
                Renderable.Render(tessellator);
            }

            if (Hotkey.HasValue)
            {
                tessellator.BindColor(Color.White);
                Scale(tessellator, 8f);
                tessellator.Translate(16, 16, -1);
                ASCII.RenderText(tessellator, ConvertEx.ChangeType <char>(Hotkey.Value).ToString());
                tessellator.Translate(-16, -16, 1);
            }
        }
Exemplo n.º 48
0
		public void Render(ITessellator tessellator, Item item)
		{
			GetRendererFor(item)?.Render(tessellator);
		}
Exemplo n.º 49
0
		public virtual void Render(ITessellator tessellator, IChunkAccess chunk, ChunkLayer layer, int x, int y)
		{
			Render(tessellator);
		}
Exemplo n.º 50
0
		public void Render(ITessellator tessellator)
		{
			_frames[_frameIndex].Render(tessellator);
		}
Exemplo n.º 51
0
		public ChunkRenderer(Viewport viewport)
		{
			_tessellator = new VertexBufferTessellator() { Mode = VertexTessellatorMode.Render };
		}
Exemplo n.º 52
0
 public void Render(ITessellator tessellator)
 {
     _frames[_frameIndex].Render(tessellator);
 }
Exemplo n.º 53
0
		protected abstract void RenderContent(ITessellator tessellator);
Exemplo n.º 54
0
		public void RenderText(ITessellator tessellator, string format, params object[] args)
		{
			Vector2 unitX = tessellator.Transform(Vector2.UnitX * (IsNormalized ? 1 : Width)) - tessellator.Transform(Vector2.Zero);

			format = string.Format(format, args);
			for (var index = 0; index < format.Length; index++)
			{
				Render(tessellator, (int)format[index]);
				tessellator.Translate(unitX);
			}

			tessellator.Translate(-unitX * format.Length);
		}
Exemplo n.º 55
0
        /// <summary>
        /// Renders a light map around each entity.
        /// </summary>
        /// <remarks>
        /// Also takes line-of-sight into account.
        /// </remarks>
        private void RenderLightMap(ITessellator tessellator, IChunkAccess chunk, int minX, int maxX, int minY, int maxY)
        {
            tessellator.PushTransform();
            tessellator.Translate(0, 0, -1 * (int)ChunkLayer.Lights);
            tessellator.BindTexture(null);

            int[,] lightMap = new int[maxY - minY + 1, maxX - minX + 1];
            foreach (var entity in chunk.Entities)
            {
                var originX = (int)(entity.Position.X);
                var originY = (int)(entity.Position.Y);

                var considered = new List <Vector2I>();
                //for (var angle = 0.0f; angle < 360.0f; angle += (9.0f - distance)) // hit more angles as you move further out
                for (var angle = 0.0f; angle < 360.0f; angle += 1.0f)
                {
                    for (var distance = 0.0f; distance < chunk.AmbientLightLevel * 2.0f; distance++)
                    {
                        var x      = (int)(originX + distance * Math.Cos(OpenTK.MathHelper.DegreesToRadians(angle)));
                        var y      = (int)(originY + distance * Math.Sin(OpenTK.MathHelper.DegreesToRadians(angle)));
                        var vector = new Vector2I(y - minY, x - minX);
                        if (!considered.Contains(vector))
                        {
                            considered.Add(vector);

                            if (CommonCore.Math.MathHelper.IsInRange(y - minY, 0, maxY - minY + 1) && CommonCore.Math.MathHelper.IsInRange(x - minX, 0, maxX - minX + 1))
                            {
                                //var alpha = (8.0f - distance) / 8.0f;
                                var alpha = 1.0f / Math.Pow((distance + 1) / chunk.AmbientLightLevel, 2);

                                lightMap[y - minY, x - minX] = OpenTK.MathHelper.Clamp((int)(lightMap[y - minY, x - minX] + alpha * 255.0f), 0, 255);
                            }
                            else
                            {
                                break;
                            }
                        }

                        if (chunk[ChunkLayer.Blocking, x, y] != 0)
                        {
                            break;
                        }
                    }
                }
            }

            for (var y = 0; y < lightMap.GetLength(0); y++)
            {
                for (var x = 0; x < lightMap.GetLength(1); x++)
                {
                    tessellator.BindColor(Color.FromArgb(255 - lightMap[y, x], 0, 0, 0));
                    tessellator.Translate(minX + x, minY + y);
                    tessellator.AddPoint(0, 0);
                    tessellator.AddPoint(0, 1);
                    tessellator.AddPoint(1, 1);
                    tessellator.AddPoint(1, 0);
                    tessellator.Translate(-(minX + x), -(minY + y));
                }
            }

            tessellator.PopTransform();
        }
Exemplo n.º 56
0
		public void Render(ITessellator tessellator)
		{
			_layers[_minKey].Render(tessellator);
		}
Exemplo n.º 57
0
		/// <summary>
		/// Render a solid rectangle.
		/// </summary>
		protected void RenderRectangle(ITessellator tessellator, Color color, int tileWidth, int tileHeight)
		{
			tessellator.PushTransform();
			tessellator.BindColor(color);
			for (var y = 0; y < tileHeight; y++)
			{
				for (var x = 0; x < tileWidth; x++)
				{
					UI_ASCII.Render(tessellator, ASCII_SOLID);
					tessellator.Translate(UI_ASCII.Width, 0);
				}
				tessellator.Translate(-UI_ASCII.Width * tileWidth, UI_ASCII.Height);
			}
			tessellator.PopTransform();
		}
Exemplo n.º 58
0
		/// <summary>
		/// Calculate a scale according to the current position.
		/// </summary>
		/// <remarks>
		/// This assumes you are inside of RenderContent, and handles pushing and popping the current transformation accordingly.
		/// </remarks>
		protected void Scale(ITessellator tessellator, float scale)
		{
			var position = tessellator.Transform(Vector2.Zero);
			tessellator.PopTransform();
			tessellator.PushTransform();
			tessellator.Scale(scale, scale);
			tessellator.Translate(position);
		}
Exemplo n.º 59
0
		protected override void RenderContent(ITessellator tessellator)
		{
			_border.BorderColor = ModifyColorByState(BorderColor);
			_border.Render(tessellator);
		}
Exemplo n.º 60
0
 public void Render(ITessellator tessellator, IChunkAccess chunk, ChunkLayer layer, int x, int y)
 {
     Render(tessellator);
 }