Exemplo n.º 1
0
        public static LValue draw_sprite(Game _assets, Domain _environment, LValue[] _arguments, Int32 _count, Stack <LValue> _stack)
        {
            LSprite _sprite = _assets.SpriteMapping[(int)_arguments[0].Number];
            int     _subimg = (int)_arguments[1].Number;
            double  _x      = _arguments[2].Number;
            double  _y      = _arguments[3].Number;
            int     _texid  = _sprite.TextureEntries[_subimg].GLTexture;

            GL.Enable(EnableCap.Texture2D);
            GL.BindTexture(TextureTarget.Texture2D, _texid);
            GL.Begin(PrimitiveType.TriangleStrip);
            GL.Color4((OpenTK.Graphics.Color4)_assets.CurrentColor);

            //the best way to do this right now is to just draw the triangles in a strip
            GL.TexCoord2(0.0, 0.0);
            GL.Vertex2(_x - _sprite.XOrigin, _y - _sprite.YOrigin);
            GL.TexCoord2(1.0, 0.0);
            GL.Vertex2(_x - _sprite.XOrigin + _sprite.Width, _y - _sprite.YOrigin);
            GL.TexCoord2(0.0, 1.0);
            GL.Vertex2(_x - _sprite.XOrigin, _y - _sprite.YOrigin + _sprite.Height);
            GL.TexCoord2(1.0, 1.0);
            GL.Vertex2(_x - _sprite.XOrigin + _sprite.Width, _y - _sprite.YOrigin + _sprite.Height);

            GL.End();
            GL.Disable(EnableCap.Texture2D);
            return(LValue.Real(0));
        }
Exemplo n.º 2
0
Arquivo: VM.cs Projeto: nommiin/Luna
        public static void DrawDefaultObject(Game _assets, LInstance _inst)
        {
            LValue _index = _inst.Variables["sprite_index"];
            LValue _image = _inst.Variables["image_index"];

            if (_index.I32 >= 0 && _index < _assets.SpriteMapping.Count)
            {
                LSprite _sprite = _assets.SpriteMapping[_index];
                double  _x      = _inst.Variables["x"];
                double  _y      = _inst.Variables["y"];
                GL.PushMatrix();
                GL.Translate(_x, _y, 0);
                GL.Rotate(_inst.Variables["image_angle"].Number, 0, 0, 1);
                GL.Enable(EnableCap.Texture2D);
                GL.BindTexture(TextureTarget.Texture2D, _assets.TextureEntries[_image].GLTexture);
                GL.Begin(PrimitiveType.TriangleStrip);
                byte[] _color = BitConverter.GetBytes((int)_inst.Variables["image_blend"].Number);
                GL.Color4(_color[2] / 255d, _color[1] / 255d, _color[0] / 255d, _inst.Variables["image_alpha"]);
                GL.TexCoord2(0.0, 0.0);
                GL.Vertex2(-_sprite.XOrigin, -_sprite.YOrigin);
                GL.TexCoord2(1.0, 0.0);
                GL.Vertex2(-_sprite.XOrigin + _sprite.Width, -_sprite.YOrigin);
                GL.TexCoord2(0.0, 1.0);
                GL.Vertex2(-_sprite.XOrigin, -_sprite.YOrigin + _sprite.Height);
                GL.TexCoord2(1.0, 1.0);
                GL.Vertex2(-_sprite.XOrigin + _sprite.Width, -_sprite.YOrigin + _sprite.Height);
                GL.End();
                GL.Disable(EnableCap.Texture2D);
                GL.PopMatrix();
            }
        }
Exemplo n.º 3
0
 public static void SPRT(Game _assets, BinaryReader _reader, Chunk _chunk)
 {
     HandleKVP(_assets, _reader, delegate(Int32 _offset) {
         LSprite _spriteGet = new LSprite(_assets, _reader);
         _assets.Sprites.Add(_spriteGet.Name, _spriteGet);
         _spriteGet.Index = _assets.SpriteMapping.Count;
         _assets.SpriteMapping.Add(_spriteGet);
     });
 }