public void Render(ITessellator tessellator) { foreach (var layer in _layers) { layer.Render(tessellator); } }
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); }
protected override void RenderContent(ITessellator tessellator) { base.RenderContent(tessellator); _label.TextColor = ModifyColorByState(_labelColor); _label.Render(tessellator); }
public ChunkRenderer(Viewport viewport) { _tessellator = new VertexBufferTessellator() { Mode = VertexTessellatorMode.Render }; }
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(); }
public void Render(ITessellator tessellator) { foreach (var layer in _layers) { layer.Render(tessellator); } }
protected override void RenderContent(ITessellator tessellator) { base.RenderContent(tessellator); _label.TextColor = ModifyColorByState(_labelColor); _label.Render(tessellator); }
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); }
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); }
/// <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; }
public void Render(ITessellator tessellator) { tessellator.PushTransform(); tessellator.Translate(Bounds.X, Bounds.Y); RenderContent(tessellator); tessellator.PopTransform(); }
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); }
public void Render(ITessellator tessellator) { tessellator.PushTransform(); tessellator.Translate(Bounds.X, Bounds.Y); RenderContent(tessellator); tessellator.PopTransform(); }
/// <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); }
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); }
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>(); }
/// <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; }
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); } }
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); } }
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); }
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); }
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); }
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>(); }
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 }; }
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(); } }
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(); } }
/// <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(); }
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(); }
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>(); }
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); }
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(); }
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 }; }
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); }
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); }
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>(); }
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); } } }
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); } }
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); } }
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); } } } }
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); } } }
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); }
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; }
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? }
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? }
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); } }
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); }
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); } }
public void Render(ITessellator tessellator, Item item) { GetRendererFor(item)?.Render(tessellator); }
public virtual void Render(ITessellator tessellator, IChunkAccess chunk, ChunkLayer layer, int x, int y) { Render(tessellator); }
public void Render(ITessellator tessellator) { _frames[_frameIndex].Render(tessellator); }
public ChunkRenderer(Viewport viewport) { _tessellator = new VertexBufferTessellator() { Mode = VertexTessellatorMode.Render }; }
public void Render(ITessellator tessellator) { _frames[_frameIndex].Render(tessellator); }
protected abstract void RenderContent(ITessellator tessellator);
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); }
/// <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(); }
public void Render(ITessellator tessellator) { _layers[_minKey].Render(tessellator); }
/// <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(); }
/// <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); }
protected override void RenderContent(ITessellator tessellator) { _border.BorderColor = ModifyColorByState(BorderColor); _border.Render(tessellator); }
public void Render(ITessellator tessellator, IChunkAccess chunk, ChunkLayer layer, int x, int y) { Render(tessellator); }