Ejemplo n.º 1
0
 public void Initialize()
 {
     Disposed                  = false;
     _shader                   = new BlockShader();
     _shader.Model             = Matrix4.Identity;
     _textureDictionary        = _textureAtlasProvider();
     _chunkVertexArrayProvider = new ChunkVertexArrayProvider(_chunk, _textureAtlasProvider);
     Logger.GetLogger <ChunkRenderer>().Info($"Initalized {_chunk.X}, {_chunk.Z}");
     GenerateMeshes();
 }
Ejemplo n.º 2
0
 internal void InitializeWithShader(BlockShader shader)
 {
     Disposed     = false;
     _shaderOwner = false;
     _shader      = shader;
     /*_shader.Model = Matrix4.Identity;*/
     _textureDictionary        = _textureAtlasProvider();
     _chunkVertexArrayProvider = new ChunkVertexArrayProvider(_chunk, _textureAtlasProvider);
     //Logger.GetLogger<ChunkRenderer>().Info($"Initalized {_chunk.X}, {_chunk.Z}");
 }
Ejemplo n.º 3
0
        protected override void OnBeforeInitalizers(object sender, EventArgs e)
        {
            _atlases = _textureBuilder.Build();

            _chunk.GenerateMeshes(_atlases);
            _boxObj.GenerateMeshes();
            _texShader = new Tex2dShader();
            _colShader = new Col2dShader();

            GL.Enable(EnableCap.DepthTest);
            GL.LineWidth(2F);

            CenterPlayer();
            base.OnBeforeInitalizers(sender, e);
        }
Ejemplo n.º 4
0
        protected override void OnBeforeInitalizers(object sender, EventArgs e)
        {
            var assets = _resource.GetAssets().Where(asset =>
                                                     asset.Type == AssetType.Texture &&
                                                     asset.NamedIdentifier.Name.StartsWith("block/") &&
                                                     asset.NamedIdentifier.Name.EndsWith(".png"));
            var textureBuilder = new TextureAtlasBuilder();
            var i = 0;

            foreach (var asset in assets)
            {
                using var stream = asset.OpenRead();
                Logger.GetLogger <MainWindow>().Info(asset.NamedIdentifier.FullName);
                var bImg     = new Image(stream);
                var isSingle = bImg.FrameCount == 1;
                var q        = 0;
                foreach (var image in bImg)
                {
                    textureBuilder.Add(isSingle ? asset.NamedIdentifier.FullName : $"{asset.NamedIdentifier.FullName}{{{q}}}", image);
                    i++;
                    q++;
                    if (i == 4096)
                    {
                        break;
                    }
                }

                if (i == 4096)
                {
                    break;
                }
            }

            _atlases = textureBuilder.Build();


            GL.ClearColor(Color4.CornflowerBlue);
            GL.Enable(EnableCap.DepthTest);
            GL.LineWidth(2F);
            base.OnBeforeInitalizers(sender, e);
        }
Ejemplo n.º 5
0
        public void Calculate(ITexture2DAtlas fontTexture)
        {
            var   vert     = new List <HudVertex>();
            var   ind      = new List <uint>();
            int   line     = 0;
            float pixel    = 0;
            uint  indArrow = 0;
            var   font     = _tho.RenderFont;
            var   color    = _tho.Color;

            lock (_tho)
            {
                foreach (char c in _tho.Text)
                {
                    //enter
                    if (c == '\n')
                    {
                        line++;
                        pixel = 0;
                        continue;
                    }

                    //parse char
                    var chri = font.GetChar(c);
                    if (chri == null && (chri = font.GetChar('\0')) == null)
                    {
                        continue;
                    }

                    var     chr  = chri.Value;
                    Vector2 size = ((chr.x2 - chr.x1) / (chr.y2 - chr.y1), 1) * _tho.FontScale;

                    //auto enter
                    if (_tho.MultiLineWidth > 0 && pixel + size.X > _tho.MultiLineWidth)
                    {
                        line++;
                        pixel = 0;
                    }

                    var box = fontTexture[chr.file];

                    var x1 = box.Min.X + box.Size.X * chr.x1;
                    var y1 = box.Min.Y + box.Size.Y * (1 - chr.y2);
                    var x2 = box.Min.X + box.Size.X * chr.x2;
                    var y2 = box.Min.Y + box.Size.Y * (1 - chr.y1);

                    //vertices
                    int arrow = 0;
                    for (int i = 0; i < 4; i++)
                    {
                        var vertex = new HudVertex
                        {
                            X = pixel + Vertices[arrow++] * size.X,
                            Y = (line + Vertices[arrow++]) * size.Y,
                            R = color.R,
                            G = color.G,
                            B = color.B,
                            A = color.A,
                            U = Vertices[arrow++] == 0F ? x1 : x2,
                            V = Vertices[arrow++] == 0F ? y1 : y2
                        };
                        vert.Add(vertex);
                    }

                    //indices
                    for (int i = 0; i < 6; i++)
                    {
                        ind.Add(Indices[i] + indArrow);
                    }
                    indArrow += 4;
                    pixel    += size.X;
                }
            }
            _vert = vert.ToArray();
            _ind  = ind.ToArray();
        }
Ejemplo n.º 6
0
 public void Initialize()
 {
     _container.RenderClientSizeChanged += Container_RenderClientSizeChanged;
     _fontTexture = _fontTextureProvider();
     _shader      = new HudShader();
 }