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(); */ }
public void Draw(DrawState drawstate) { if (drawstate == null) throw new ArgumentNullException("drawstate"); m_renderer.Draw(drawstate); }
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); }
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); }
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); }
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; }
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; } }