source: 2013/30/MiskaK/MW2(My Warfare 2)/Paranneltu Jypeli/GameObjects/Widget/Appearance.cs @ 4507

Revision 4507, 2.9 KB checked in by anlakane, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Microsoft.Xna.Framework;
6
7namespace Jypeli
8{
9    public partial class Widget
10    {
11        /// <summary>
12        /// Reunojen väri.
13        /// </summary>
14        public Color BorderColor { get; set; }
15
16        private void InitAppearance()
17        {
18            this.BorderColor = Color.Transparent;
19        }
20
21        protected virtual void Draw( Matrix parentTransformation, Matrix transformation )
22        {
23        }
24
25        public void Draw( Matrix parentTransformation )
26        {
27            Matrix transformation =
28                Matrix.CreateScale( (float)Size.X, (float)Size.Y, 1f )
29                * Matrix.CreateRotationZ( (float)Angle.Radians )
30                * Matrix.CreateTranslation( (float)Position.X, (float)Position.Y, 0f )
31                * parentTransformation;
32
33            if ( Image != null && ( !TextureFillsShape ) )
34            {
35                Renderer.DrawImage( Image, ref transformation, TextureWrapSize );
36            }
37            else if ( Image != null )
38            {
39                Renderer.DrawShape( Shape, ref transformation, ref transformation, Image, TextureWrapSize, Color );
40            }
41            else
42            {
43                Renderer.DrawShape( Shape, ref transformation, Color );
44            }
45
46            if ( BorderColor != Color.Transparent )
47            {
48                Graphics.LineBatch.Begin( ref transformation );
49                {
50                    Vector[] vertices = Shape.Cache.OutlineVertices;
51                    for ( int i = 0; i < vertices.Length - 1; i++ )
52                    {
53                        Graphics.LineBatch.Draw( vertices[i], vertices[i + 1], BorderColor );
54                    }
55                    Graphics.LineBatch.Draw( vertices[vertices.Length - 1], vertices[0], BorderColor );
56                }
57                Graphics.LineBatch.End();
58            }
59
60            Draw( parentTransformation, transformation );
61
62            if ( _childObjects != null && _childObjects.Count > 0 )
63            {
64                Matrix childTransformation =
65                    Matrix.CreateRotationZ( (float)Angle.Radians )
66                    * Matrix.CreateTranslation( (float)Position.X, (float)Position.Y, 0f )
67                    * parentTransformation;
68
69                DrawChildObjects( ref parentTransformation, ref transformation, ref childTransformation );
70            }
71        }
72
73        internal protected virtual void DrawChildObjects( ref Matrix parentTransformation, ref Matrix transformation, ref Matrix childTransformation )
74        {
75            foreach ( var child in Objects )
76            {
77                if ( child is Widget )
78                {
79                    ( (Widget)child ).Draw( childTransformation );
80                }
81            }
82        }
83    }
84}
Note: See TracBrowser for help on using the repository browser.