Example #1
0
        void DrawElement(Vector2 location, Animations.AnimationElement element)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            Vector2 scale = new Vector2(1, 1);

            Video.DrawState drawstate = m_sprites.SetupDrawing(element.SpriteId, location, element.Offset, scale, SpriteEffects.None);
            drawstate.Blending = element.Blending;
            drawstate.Use();

            /*
             * Drawing.Sprite sprite = m_sprites.GetSprite(element.SpriteId);
             * if (sprite != null)
             * {
             *      Vector2 spritelocation = Video.Renderer.GetDrawLocation(sprite.Size, location, (Vector2)sprite.Axis - element.Offset, scale, SpriteEffects.None);
             *      drawstate.Reset();
             *      drawstate.Mode = DrawMode.OutlinedRectangle;
             *      drawstate.AddData(spritelocation, new Rectangle(0, 0, sprite.Size.X, sprite.Size.Y), Color.Gray);
             *      drawstate.Scale = scale;
             *      drawstate.Use();
             * }
             *
             * drawstate.Reset();
             * drawstate.Mode = DrawMode.OutlinedRectangle;
             *
             * foreach (Animations.Clsn clsn in element)
             * {
             *      Rectangle rect = clsn.MakeRect(location, scale, Facing.Right);
             *
             *      switch (clsn.ClsnType)
             *      {
             *              case ClsnType.Type1Attack:
             *                      drawstate.AddData(new Vector2(rect.X, rect.Y), new Rectangle(0, 0, rect.Width, rect.Height), Color.Red);
             *                      break;
             *
             *              case ClsnType.Type2Normal:
             *                      drawstate.AddData(new Vector2(rect.X, rect.Y), new Rectangle(0, 0, rect.Width, rect.Height), Color.Blue);
             *                      break;
             *      }
             * }
             *
             * drawstate.Use();
             *
             *
             * Int32 line_length = 3;
             * drawstate.Reset();
             * drawstate.Mode = DrawMode.Lines;
             * drawstate.AddData(location - new Vector2(line_length, 0), null, Color.Black);
             * drawstate.AddData(location + new Vector2(line_length, 0), null, Color.Black);
             * drawstate.AddData(location - new Vector2(0, line_length), null, Color.Black);
             * drawstate.AddData(location + new Vector2(0, line_length), null, Color.Black);
             * drawstate.Use();
             */
        }
Example #2
0
        public void Draw(DrawState drawstate)
        {
            if (drawstate == null) throw new ArgumentNullException("drawstate");

            m_renderer.Draw(drawstate);
        }
Example #3
0
        void OutlinedRectangleDraw(DrawState drawstate)
        {
            if (drawstate == null) throw new ArgumentNullException("drawstate");
            if (drawstate.Mode != DrawMode.OutlinedRectangle) throw new ArgumentException("Incorrect drawstate");

            m_effect.CurrentTechnique = (UseOldShader == true) ? m_effect.Techniques["DrawOLD"] : m_effect.Techniques["Draw"];

            SetShaderParameters(drawstate.ShaderParameters, drawstate.Pixels, drawstate.Palette);

            Int32 count = 0;
            foreach (DrawData data in drawstate)
            {
                if (data.DrawRect != null)
                {
                    Point drawsize = new Point(data.DrawRect.Value.Width, data.DrawRect.Value.Height);
                    FRect frect = Renderer.MakeVertRect(drawsize, data.Location, CameraShift, drawstate.Scale, drawstate.Axis - drawstate.Offset, drawstate.Flip);

                    m_drawbuffer[(count * 8) + 0].Position = new Vector2(frect.Left, frect.Top);
                    m_drawbuffer[(count * 8) + 1].Position = new Vector2(frect.Left, frect.Bottom);
                    m_drawbuffer[(count * 8) + 2].Position = new Vector2(frect.Right, frect.Top);
                    m_drawbuffer[(count * 8) + 3].Position = new Vector2(frect.Right, frect.Bottom);
                    m_drawbuffer[(count * 8) + 4].Position = new Vector2(frect.Left, frect.Top);
                    m_drawbuffer[(count * 8) + 5].Position = new Vector2(frect.Right, frect.Top);
                    m_drawbuffer[(count * 8) + 6].Position = new Vector2(frect.Left, frect.Bottom);
                    m_drawbuffer[(count * 8) + 7].Position = new Vector2(frect.Right, frect.Bottom);

                    for (Int32 i = 0; i != 8; ++i) m_drawbuffer[(count * 8) + i].Tint = data.Tint;

                    ++count;
                }
            }

            if (count > 0) FinishDrawing(PrimitiveType.LineList, count * 4);
        }
Example #4
0
        void NormalDraw(DrawState drawstate)
        {
            if (drawstate == null) throw new ArgumentNullException("drawstate");
            if (drawstate.Mode != DrawMode.Normal) throw new ArgumentException("Incorrect drawstate");

            m_effect.CurrentTechnique = (UseOldShader == true) ? m_effect.Techniques["DrawOLD"] : m_effect.Techniques["Draw"];

            SetShaderParameters(drawstate.ShaderParameters, drawstate.Pixels, drawstate.Palette);

            Int32 count = DefaultDrawSetup(drawstate, new Point(drawstate.Pixels.Width, drawstate.Pixels.Height));
            if (count > 0) FinishDrawing(PrimitiveType.TriangleList, count * 2);
        }
Example #5
0
        void LineDraw(DrawState drawstate)
        {
            if (drawstate == null) throw new ArgumentNullException("drawstate");
            if (drawstate.Mode != DrawMode.Lines) throw new ArgumentException("Incorrect drawstate");

            m_effect.CurrentTechnique = (UseOldShader == true) ? m_effect.Techniques["DrawOLD"] : m_effect.Techniques["Draw"];

            SetShaderParameters(drawstate.ShaderParameters, drawstate.Pixels, drawstate.Palette);

            Int32 count = 0;
            Boolean point = false;
            foreach (DrawData data in drawstate)
            {
                if (point == false)
                {
                    point = true;

                    m_drawbuffer[count * 2 + 0] = new Vertex(data.Location + CameraShift, Vector2.Zero, data.Tint);
                }
                else
                {
                    point = false;

                    m_drawbuffer[count * 2 + 1] = new Vertex(data.Location + CameraShift, Vector2.Zero, data.Tint);
                    ++count;
                }
            }

            if (count > 0) FinishDrawing(PrimitiveType.LineList, count);
        }
Example #6
0
        Int32 DefaultDrawSetup(DrawState drawstate, Point pixelsize)
        {
            if (drawstate == null) throw new ArgumentNullException("drawstate");

            Int32 count = 0;
            Vector2 camerashift = CameraShift;
            foreach (DrawData data in drawstate)
            {
                Point drawsize = new Point();

                if (data.DrawRect != null)
                {
                    drawsize = new Point(data.DrawRect.Value.Width, data.DrawRect.Value.Height);

                    Renderer.SetTextureCoords(m_drawbuffer, count * 6, pixelsize, data.DrawRect.Value, drawstate.Flip);
                }
                else
                {
                    drawsize = pixelsize;

                    Renderer.SetTextureCoords(m_drawbuffer, count * 6, drawstate.Flip);
                }

                FRect frect = Renderer.MakeVertRect(drawsize, data.Location, camerashift, drawstate.Scale, drawstate.Axis - drawstate.Offset, drawstate.Flip);
                Vector2 rotationaxis = data.Location + camerashift + drawstate.Offset;

                Renderer.SetPosition(m_drawbuffer, count * 6, frect, MathHelper.ToRadians(drawstate.Rotation), rotationaxis);
                Renderer.SetColor(m_drawbuffer, count * 6, Misc.BlendColors(Tint, data.Tint));

                ++count;
            }

            return count;
        }
Example #7
0
        public void Draw(DrawState drawstate)
        {
            if (drawstate == null) throw new ArgumentNullException("drawstate");

            if (drawstate.Mode == DrawMode.None) return;

            drawstate.Pixels = drawstate.Pixels ?? m_nullpixels;
            drawstate.Palette = drawstate.Palette ?? m_nullpalette;

            SetBlending(drawstate.Blending);
            SetScissorTest(drawstate.ScissorRectangle);

            switch (drawstate.Mode)
            {
                case DrawMode.Normal:
                    NormalDraw(drawstate);
                    break;

                case DrawMode.Font:
                    FontDraw(drawstate);
                    break;

                case DrawMode.OutlinedRectangle:
                    OutlinedRectangleDraw(drawstate);
                    break;

                case DrawMode.FilledRectangle:
                    FilledRectangleDraw(drawstate);
                    break;

                case DrawMode.Lines:
                    LineDraw(drawstate);
                    break;
            }
        }