Exemple #1
0
        /// <summary>
        /// create a console to show attributes etc
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        public Console(int width,int height)
        {
            var sizeInPixels = new Vector2(width, height);

            this.consoleRect = new TextElementRect(sizeInPixels);
            this.consoleRect.Colour = Color.Gainsboro;

            //align the element rectangle to the bottom centre of the screen
            this.consoleRect.VerticalAlignment = VerticalAlignment.Bottom;
            this.consoleRect.HorizontalAlignment = HorizontalAlignment.Centre;
        }
Exemple #2
0
        public void Initalise(IGameStateManager stateManager)
        {
            this.stateManager = stateManager;

            //display an incredibly complex line of text
            this.menuText = new TextElementRect(new Vector2(400, 100));
            this.menuText.Text.SetText("Press a button to start a new game!");
            this.menuText.VerticalAlignment       = VerticalAlignment.Centre;
            this.menuText.HorizontalAlignment     = HorizontalAlignment.Centre;
            this.menuText.TextHorizontalAlignment = TextHorizontalAlignment.Centre;

            //set the text font (using global content)
            stateManager.Application.Content.Add(this);
        }
Exemple #3
0
        public void Initalise(IGameStateManager stateManager)
        {
            this.stateManager = stateManager;

            //put some text up...
            this.startText = new TextElementRect(new Vector2(400, 100));
            this.startText.Text.SetText("Press the START button to begin");
            this.startText.VerticalAlignment       = VerticalAlignment.Centre;
            this.startText.HorizontalAlignment     = HorizontalAlignment.Centre;
            this.startText.TextHorizontalAlignment = TextHorizontalAlignment.Centre;
            this.startText.Colour = Color.Red;

            //set the text font
            stateManager.Application.Content.Add(this);
        }
Exemple #4
0
        protected override void Initialise()
        {
            //create the draw target.
            drawToScreen = new DrawTargetScreen(this, new Camera3D());

            //this element will display some help text
            helpDisplay          = new TextElement();
            helpDisplay.Position = new Vector2(100, -100);


#if XBOX360
            helpDisplay.Text.SetText("Use a chatpad to input text!");
#else
            helpDisplay.Text.SetText("Use the keyboard to input text!");
#endif

            //add it to the screen
            drawToScreen.Add(helpDisplay);



            //create the text
            this.textElement        = new TextElementRect(new Vector2(400, 200));
            this.textElement.Colour = Color.Yellow;


            //align the element to the bottom centre of the screen
            this.textElement.VerticalAlignment   = VerticalAlignment.Bottom;
            this.textElement.HorizontalAlignment = HorizontalAlignment.Centre;

            //centre align the text
            this.textElement.TextHorizontalAlignment = TextHorizontalAlignment.Centre;
            //centre the text in the middle of the 400x200 area of the element
            this.textElement.TextVerticalAlignment = VerticalAlignment.Centre;

            //add it to the screen
            drawToScreen.Add(textElement);
        }
		protected override void Initialise()
		{
			//create the draw target.
			drawToScreen = new DrawTargetScreen(new Camera3D());

			//this element will display some help text
			helpDisplay = new TextElement();
			helpDisplay.Position = new Vector2(100, -100);


#if XBOX360
			helpDisplay.Text.SetText("Use a chatpad to input text!");
#else
			helpDisplay.Text.SetText("Use the keyboard to input text!");
#endif

			//add it to the screen
			drawToScreen.Add(helpDisplay);



			//create the text
			this.textElement = new TextElementRect(new Vector2(400, 200));
			this.textElement.Colour = Color.Yellow;


			//align the element to the bottom centre of the screen
			this.textElement.VerticalAlignment = VerticalAlignment.Bottom;
			this.textElement.HorizontalAlignment = HorizontalAlignment.Centre;

			//centre align the text
			this.textElement.TextHorizontalAlignment = TextHorizontalAlignment.Centre;
			//centre the text in the middle of the 400x200 area of the element
			this.textElement.TextVerticalAlignment = VerticalAlignment.Centre;

			//add it to the screen
			drawToScreen.Add(textElement);
		}
		protected override void Initialise()
		{
			var tutorials = new Dictionary<string, Type>();
			Program.FindTutorials(tutorials);
			
			Camera3D camera = new Camera3D();

			drawToScreen = new DrawTargetScreen(camera);
			
			backgroundParticles = new ParticleSystem(this.UpdateManager);
			backgroundParticles.GlobalValues[0] = ArrowXOffset;
			backgroundParticles.GlobalValues[2] = (float)this.WindowWidth;
			backgroundParticles.GlobalValues[3] = (float)this.WindowHeight;

			particlesTarget = new DrawTargetTexture2D(camera, this.WindowWidth, this.WindowHeight, SurfaceFormat.Color, DepthFormat.None);
			particlesBlurred = new DrawTargetTexture2D(camera, this.WindowWidth / 2, this.WindowHeight / 2, SurfaceFormat.Color, DepthFormat.None);

			DrawTargetTexture2D inter0 = null, inter1 = null;
			quaterDownsample = new TextureDownsample(particlesTarget, particlesBlurred, ref inter0, ref inter1, particlesBlurred.Width, particlesBlurred.Height);

			inter0 = new DrawTargetTexture2D(camera, particlesBlurred.Width, particlesBlurred.Height, SurfaceFormat.Color, DepthFormat.None);
			blurFilter = new BlurFilter(BlurFilterFormat.SevenSampleBlur, 1, particlesBlurred, inter0);

			backroundDrawer = new VelocityBillboardParticles2DElement(backgroundParticles, false);
			particlesTarget.Add(backroundDrawer);

			//draw the resolved particles to the screen
			drawToScreen.Add(new TexturedElement(particlesTarget, new Vector2(1, 1), true));

			//background block other elements are inserted into. invisible
			var selectionBlock = new Xen.Ex.Graphics2D.SolidColourElement(new Color(0, 0, 0, 0), new Vector2(ElementWidth, tutorials.Count * ElementSeparation));
			selectionBlock.AlphaBlendState = AlphaBlendState.Alpha;
			selectionBlock.VerticalAlignment = VerticalAlignment.Top;

			this.menuBlock = selectionBlock;

			int y_pos = 0;
			foreach (var tutorial in tutorials)
			{
				var tut_item = new TutorialSelection(tutorial.Key, y_pos, this.Content, selectionBlock, this.UpdateManager, tutorial.Value);

				y_pos -= ElementSeparation;
				buttons.Add(tut_item);
			}

			drawToScreen.Add(selectionBlock);	

			var bloom = new TexturedElement(particlesBlurred, new Vector2(1, 1), true);
			bloom.AlphaBlendState = AlphaBlendState.AdditiveSaturate;
			drawToScreen.Add(bloom);

			this.logo = new TexturedElement(new Vector2(282,100));
			this.logo.VerticalAlignment = VerticalAlignment.Top;
			this.logo.HorizontalAlignment = HorizontalAlignment.Centre;
			this.logo.Position = new Vector2(0, -50);

			this.helperText = new TextElementRect(new Vector2(800,100),"Use the DPAD to select an item, press 'A' to run the example\nWhen running an example, press 'back' to return to this menu");
			this.helperText.VerticalAlignment = VerticalAlignment.Bottom;
			this.helperText.HorizontalAlignment = HorizontalAlignment.Centre;
			this.helperText.TextHorizontalAlignment = TextHorizontalAlignment.Centre;
			this.helperText.TextVerticalAlignment = VerticalAlignment.Centre;
			this.helperText.Colour = Color.Gray;

			drawToScreen.Add(logo);
			drawToScreen.Add(helperText);
		}
		public TutorialSelection(string text, int y_pos, IContentRegister content, ElementRect parent, UpdateManager update, Type value)
		{
			this.Value = value;
			this.YPos = XenMenuApp.ElementHeight * 0.5f - y_pos;

			background = new SolidColourElement[3];
			for (int i = 0; i < background.Length; i++)
			{
				background[i] = new SolidColourElement(Color.Black, new Vector2(parent.Size.X, XenMenuApp.ElementHeight));
				background[i].VerticalAlignment = VerticalAlignment.Top;
				background[i].HorizontalAlignment = HorizontalAlignment.Left;
				background[i].Position = new Vector2(0, (float)y_pos);

				parent.Add(background[i]);
			}
			//offset the elements a bit, to give a 3D effect.

			background[1].AlphaBlendState = AlphaBlendState.ModulateX2;
			background[2].AlphaBlendState = AlphaBlendState.ModulateX2;

			background[1].Size -= new Vector2(1, 1);
			background[1].Position += new Vector2(1, 0);
			background[2].Size -= new Vector2(1, 1);
			background[2].Position -= new Vector2(0, 1);


			this.text = new TextElementRect(new Vector2(parent.Size.X - XenMenuApp.ElementTextOffset, XenMenuApp.ElementHeight), text);
			this.text.VerticalAlignment = VerticalAlignment.Top;
			this.text.HorizontalAlignment = HorizontalAlignment.Left;
			this.text.Position = new Vector2(XenMenuApp.ElementTextOffset, (float)y_pos);

			parent.Add(this.text);

			content.Add(this);
			update.Add(this);
		}
		public void Initalise(IGameStateManager stateManager)
		{
			this.stateManager = stateManager;

			//display an incredibly complex line of text
			this.menuText = new TextElementRect(new Vector2(400, 100));
			this.menuText.Text.SetText("Press a button to start a new game!");
			this.menuText.VerticalAlignment = VerticalAlignment.Centre;
			this.menuText.HorizontalAlignment = HorizontalAlignment.Centre;
			this.menuText.TextHorizontalAlignment = TextHorizontalAlignment.Centre;

			//set the text font (using global content)
			stateManager.Application.Content.Add(this);
		}
		public void Initalise(IGameStateManager stateManager)
		{
			this.stateManager = stateManager;

			//put some text up...
			this.startText = new TextElementRect(new Vector2(400,100));
			this.startText.Text.SetText("Press the START button to begin");
			this.startText.VerticalAlignment = VerticalAlignment.Centre;
			this.startText.HorizontalAlignment = HorizontalAlignment.Centre;
			this.startText.TextHorizontalAlignment = TextHorizontalAlignment.Centre;
			this.startText.Colour = Color.Red;

			//set the text font
			stateManager.Application.Content.Add(this);
		}
		/// <summary></summary>
		/// <param name="name"></param>
		/// <param name="width"></param>
		/// <param name="height"></param>
		/// <param name="samples"></param>
		/// <param name="fontHeight"></param>
		/// <param name="font"></param>
		/// <param name="minScale"></param>
		/// <param name="goodValue">The value that determines the transition from green to red on the graph</param>
		public Graph(string name, int width, int height, int samples, int fontHeight, float minScale, SpriteFont font, float goodValue)
			: base(new Vector2((float)width, (float)height), false)
		{
			if (width < fontHeight ||
				height < fontHeight)
				throw new ArgumentException("size is too small for font size");

			graph = new GraphDrawer(samples, Color.Red, new Vector2(), minScale, goodValue);
			float edge = 0.25f;

			graph.VerticalScaling = ElementScaling.FillToParentPlusSize;
			graph.HorizontalScaling = ElementScaling.FillToParentPlusSize;
			graph.Position = new Vector2((float)(fontHeight) *edge, (float)(fontHeight));
			graph.Size = -graph.Position;

			title = new TextElementRect(Vector2.Zero, name,font);
			title.VerticalAlignment = VerticalAlignment.Top;
			title.HorizontalAlignment = HorizontalAlignment.Left;
			title.HorizontalScaling = ElementScaling.FillToParentPlusSize;
			title.VerticalScaling = ElementScaling.FillToParentPlusSize;
			title.TextHorizontalAlignment = TextHorizontalAlignment.Centre;
			title.TextVerticalAlignment = VerticalAlignment.Top;
			title.Size = new Vector2(0, 0);

			value = new TextElementRect(Vector2.Zero, "0",font);
			value.VerticalAlignment = VerticalAlignment.Bottom;
			value.HorizontalAlignment = HorizontalAlignment.Left;
			value.HorizontalScaling = ElementScaling.FillToParentPlusSize;
			value.VerticalScaling = ElementScaling.FillToParentPlusSize;
			value.TextHorizontalAlignment = TextHorizontalAlignment.Right;
			value.TextVerticalAlignment = VerticalAlignment.Bottom;
			value.Size = new Vector2(0, 0);
			value.Position = new Vector2(-10, 0);

			this.Add(title);
			this.Add(value);
			this.Add(graph);

			float x = fontHeight / ((float)width);
			float y = fontHeight / ((float)height);

			this.AlphaBlendState = AlphaBlendState.Alpha;

			VertexPositionColor[] verts = new VertexPositionColor[]
			{
				new VertexPositionColor(new Vector3(x*edge,y,0),Color.White),
				new VertexPositionColor(new Vector3(1-x*edge,y,0),Color.White),
				new VertexPositionColor(new Vector3(x*edge,y,0),Color.White),
				new VertexPositionColor(new Vector3(x*edge,1-y,0),Color.White),
				
				new VertexPositionColor(new Vector3(edge*x,y + 0.25f * (1-y*2),0),new Color(255,255,255,16)),
				new VertexPositionColor(new Vector3(1-x*edge,y + 0.25f * (1-y*2),0),new Color(255,255,255,16)),
				
				new VertexPositionColor(new Vector3(edge*x,y + 0.5f * (1-y*2),0),new Color(255,255,255,16)),
				new VertexPositionColor(new Vector3(1-x*edge,y + 0.5f * (1-y*2),0),new Color(255,255,255,16)),
				
				new VertexPositionColor(new Vector3(edge*x,y + 0.75f * (1-y*2),0),new Color(255,255,255,16)),
				new VertexPositionColor(new Vector3(1-x*edge,y + 0.75f * (1-y*2),0),new Color(255,255,255,16)),
				
				new VertexPositionColor(new Vector3(edge*x,y,0),new Color(255,255,255,16)),
				new VertexPositionColor(new Vector3(1-x*edge,y,0),new Color(255,255,255,16)),
				
			};

			outline = new Vertices<VertexPositionColor>(verts);

			background = new Vertices<VertexPositionColor>(new VertexPositionColor[]
				{
					new VertexPositionColor(new Vector3(0,0,0),new Color(0,0,0,200)),
					new VertexPositionColor(new Vector3(0,1,0),new Color(0,0,0,200)),
					new VertexPositionColor(new Vector3(1,0,0),new Color(0,0,0,200)),
					new VertexPositionColor(new Vector3(1,1,0),new Color(0,0,0,200)),
				});
		}
Exemple #11
0
        /// <summary></summary>
        /// <param name="name"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="samples"></param>
        /// <param name="fontHeight"></param>
        /// <param name="font"></param>
        /// <param name="minScale"></param>
        /// <param name="goodValue">The value that determines the transition from green to red on the graph</param>
        public Graph(string name, int width, int height, int samples, int fontHeight, float minScale, SpriteFont font, float goodValue)
            : base(new Vector2((float)width, (float)height), false)
        {
            if (width < fontHeight ||
                height < fontHeight)
            {
                throw new ArgumentException("size is too small for font size");
            }

            graph = new GraphDrawer(samples, Color.Red, new Vector2(), minScale, goodValue);
            float edge = 0.25f;

            graph.VerticalScaling   = ElementScaling.FillToParentPlusSize;
            graph.HorizontalScaling = ElementScaling.FillToParentPlusSize;
            graph.Position          = new Vector2((float)(fontHeight) * edge, (float)(fontHeight));
            graph.Size = -graph.Position;

            title = new TextElementRect(Vector2.Zero, name, font);
            title.VerticalAlignment       = VerticalAlignment.Top;
            title.HorizontalAlignment     = HorizontalAlignment.Left;
            title.HorizontalScaling       = ElementScaling.FillToParentPlusSize;
            title.VerticalScaling         = ElementScaling.FillToParentPlusSize;
            title.TextHorizontalAlignment = TextHorizontalAlignment.Centre;
            title.TextVerticalAlignment   = VerticalAlignment.Top;
            title.Size = new Vector2(0, 0);

            value = new TextElementRect(Vector2.Zero, "0", font);
            value.VerticalAlignment       = VerticalAlignment.Bottom;
            value.HorizontalAlignment     = HorizontalAlignment.Left;
            value.HorizontalScaling       = ElementScaling.FillToParentPlusSize;
            value.VerticalScaling         = ElementScaling.FillToParentPlusSize;
            value.TextHorizontalAlignment = TextHorizontalAlignment.Right;
            value.TextVerticalAlignment   = VerticalAlignment.Bottom;
            value.Size     = new Vector2(0, 0);
            value.Position = new Vector2(-10, 0);

            this.Add(title);
            this.Add(value);
            this.Add(graph);

            float x = fontHeight / ((float)width);
            float y = fontHeight / ((float)height);

            this.AlphaBlendState = AlphaBlendState.Alpha;

            VertexPositionColor[] verts = new VertexPositionColor[]
            {
                new VertexPositionColor(new Vector3(x * edge, y, 0), Color.White),
                new VertexPositionColor(new Vector3(1 - x * edge, y, 0), Color.White),
                new VertexPositionColor(new Vector3(x * edge, y, 0), Color.White),
                new VertexPositionColor(new Vector3(x * edge, 1 - y, 0), Color.White),

                new VertexPositionColor(new Vector3(edge * x, y + 0.25f * (1 - y * 2), 0), new Color(255, 255, 255, 16)),
                new VertexPositionColor(new Vector3(1 - x * edge, y + 0.25f * (1 - y * 2), 0), new Color(255, 255, 255, 16)),

                new VertexPositionColor(new Vector3(edge * x, y + 0.5f * (1 - y * 2), 0), new Color(255, 255, 255, 16)),
                new VertexPositionColor(new Vector3(1 - x * edge, y + 0.5f * (1 - y * 2), 0), new Color(255, 255, 255, 16)),

                new VertexPositionColor(new Vector3(edge * x, y + 0.75f * (1 - y * 2), 0), new Color(255, 255, 255, 16)),
                new VertexPositionColor(new Vector3(1 - x * edge, y + 0.75f * (1 - y * 2), 0), new Color(255, 255, 255, 16)),

                new VertexPositionColor(new Vector3(edge * x, y, 0), new Color(255, 255, 255, 16)),
                new VertexPositionColor(new Vector3(1 - x * edge, y, 0), new Color(255, 255, 255, 16)),
            };

            outline = new Vertices <VertexPositionColor>(verts);

            background = new Vertices <VertexPositionColor>(new VertexPositionColor[]
            {
                new VertexPositionColor(new Vector3(0, 0, 0), new Color(0, 0, 0, 200)),
                new VertexPositionColor(new Vector3(0, 1, 0), new Color(0, 0, 0, 200)),
                new VertexPositionColor(new Vector3(1, 0, 0), new Color(0, 0, 0, 200)),
                new VertexPositionColor(new Vector3(1, 1, 0), new Color(0, 0, 0, 200)),
            });
        }
Exemple #12
0
        protected override void Initialise()
        {
            //DrawStatisticsDisplay requires that resource tracking is enabled
            Resource.EnableResourceTracking();


            //Xen.Ex provides a very useful Camera3D called 'FirstPersonControlledCamera3D'.
            //This camera uses player input to act as a simple first-person style flythrough camera
            Xen.Ex.Camera.FirstPersonControlledCamera3D camera = null;

            //it uses player input, so the UpdateManager must be passed in
            camera = new Xen.Ex.Camera.FirstPersonControlledCamera3D(this.UpdateManager);

            //in this case, we want the z-axis to be the up/down axis (otherwise it's the Y-axis)
            camera.ZAxisUp = true;
            //also it's default is a bit too fast moving
            camera.MovementSensitivity *= 0.1f;
            camera.LookAt(new Vector3(1, 0, 0), new Vector3(), new Vector3(0, 0, 1));

            this.camera = camera;

            //create the draw target.
            drawToScreen = new DrawTargetScreen(this, camera);


            //create a large number of actor instance from tutorial 10..
            for (int n = 0; n <= 16; n++)
            {
                //create in a half circle
                float   angle    = (n / 16.0f) * MathHelper.Pi;
                Vector3 position = new Vector3((float)Math.Sin(angle), (float)Math.Cos(angle), 0);

                //not too close together
                position *= 10;

                drawToScreen.Add(new Tutorial_10.Actor(this.Content, position));
            }


            //this element will display the camera position
            positionDisplay = new TextElement();

            //TextElement (unlike other Elements) defaults to Top Left alignment
            //So, in order to bring it closer to the centre of the screen (due to potential overscan)
            //it's position needs to be set 'right' and 'down' from 'top left'
            //(this is just an example, see XNA docs for correct overscan compensation behaviour)
            positionDisplay.Position = new Vector2(40, -40);             //offset from top left corner alignment

            //add it to the screen
            drawToScreen.Add(positionDisplay);



            Vector2 sizeInPixels = new Vector2(400, 200);

            //create the main block of yellow text
            this.yellowElement        = new TextElementRect(sizeInPixels);
            this.yellowElement.Colour = Color.Yellow;

            //first line of text... this will have a flashing 2D element embedded
            string embeddedText  = @"This is a text box with a large amount of custom text! It also includes an embedded 2D element: , which is a 16x16 SolidColourElement";
            uint   insertAtIndex = 96;           // Hard coded to insert a 2D element at character index 96               which is about here: ^

            //add a bunch of text...
            this.yellowElement.Text.AppendLine(embeddedText);
            this.yellowElement.Text.AppendLine();
            this.yellowElement.Text.AppendLine(@"This class is:");
            this.yellowElement.Text.AppendLine(this.GetType().FullName);
            this.yellowElement.Text.AppendLine(@"It is located in assembly:");
            this.yellowElement.Text.AppendLine(this.GetType().Assembly.FullName);
            this.yellowElement.Text.AppendLine();

            //add an embedded 2D element within the text
            //create it..
            this.embeddedElement = new SolidColourElement(Color.Red, new Vector2(16, 16));             // quite small
            this.embeddedElement.AlphaBlendState = AlphaBlendState.Alpha;
            //add it.
            this.yellowElement.AddInline(this.embeddedElement, insertAtIndex);


#if XBOX360
            this.yellowElement.Text.AppendLine(@"Press and hold both thumbsticks to show the debug overlay");
#else
            this.yellowElement.Text.AppendLine(@"Press F12 to show the debug overlay");
#endif


            //align the element rectangle to the bottom centre of the screen
            this.yellowElement.VerticalAlignment   = VerticalAlignment.Bottom;
            this.yellowElement.HorizontalAlignment = HorizontalAlignment.Centre;

            //centre align the text
            this.yellowElement.TextHorizontalAlignment = TextHorizontalAlignment.Centre;
            //centre the text in the middle of the 400x200 area of the element rectangle
            this.yellowElement.TextVerticalAlignment = VerticalAlignment.Centre;

            //add it to the screen
            drawToScreen.Add(yellowElement);



            //create the statistics display
            //this class will query the DrawState for the previous frames DrawStatistics structure.
            //this structure provides a large number of statistics for the drawn frame.
            //The DrawStatisticsDisplay displays some of the more important statistics. It will also
            //display thread activity on the xbox.

            //DrawStatistics are only available in DEBUG xen builds
            //They can be accessed at runtime with DrawState GetPreviousFrameStatistics()

            //at runtime, pressing 'F12' will toggle the overlay (or holding both thumbsticks on x360)
            this.statisticsOverlay = new Xen.Ex.Graphics2D.Statistics.DrawStatisticsDisplay(this.UpdateManager);

            //As of xen 1.5, by default the DrawStatisticsDisplay displays a significantly reduced number of graphs.
            //To display the full set of graphs (which generally takes up the entire screen), set the following
            //property to 'true':
            //this.statisticsOverlay.DisplayFullGraphList = true;


            //then add it to the screen
            drawToScreen.Add(statisticsOverlay);
        }
		protected override void Initialise()
		{
			//Xen.Ex provides a very useful Camera3D called 'FirstPersonControlledCamera3D'.
			//This camera uses player input to act as a simple first-person style flythrough camera
			Xen.Camera.FirstPersonControlledCamera3D camera = null;

			//it uses player input, so the UpdateManager must be passed in
			camera = new Xen.Camera.FirstPersonControlledCamera3D(this.UpdateManager);

			//in this case, we want the z-axis to be the up/down axis (otherwise it's the Y-axis)
			camera.ZAxisUp = true;
			//also it's default is a bit too fast moving
			camera.MovementSensitivity *= 0.1f;
			camera.LookAt(new Vector3(1, 0, 0), new Vector3(), new Vector3(0, 0, 1));

			this.camera = camera;

			//create the draw target.
			drawToScreen = new DrawTargetScreen(camera);


			//create a large number of actor instance from tutorial 10..
			for (int n = 0; n <= 16; n++)
			{
				//create in a half circle
				float angle = (n / 16.0f) * MathHelper.Pi;
				var position = new Vector3((float)Math.Sin(angle), (float)Math.Cos(angle), 0);

				//not too close together
				position *= 10;

				drawToScreen.Add(new Tutorial_10.Actor(this.Content, position));
			}


			//this element will display the camera position
			positionDisplay = new TextElement();

			//TextElement (unlike other Elements) defaults to Top Left alignment
			//So, in order to bring it closer to the centre of the screen (due to potential overscan)
			//it's position needs to be set 'right' and 'down' from 'top left'
			//(this is just an example, see XNA docs for correct overscan compensation behaviour)
			positionDisplay.Position = new Vector2(40, -40); //offset from top left corner alignment

			//add it to the screen
			drawToScreen.Add(positionDisplay);



			var sizeInPixels = new Vector2(400, 200);

			//create the main block of yellow text
			this.yellowElement = new TextElementRect(sizeInPixels);
			this.yellowElement.Colour = Color.Yellow;

			//first line of text... this will have a flashing 2D element embedded
			string embeddedText = @"This is a text box with a large amount of custom text! It also includes an embedded 2D element: , which is a 16x16 SolidColourElement";
			uint insertAtIndex = 96; // Hard coded to insert a 2D element at character index 96               which is about here: ^

			//add a bunch of text...
			this.yellowElement.Text.AppendLine(embeddedText);
			this.yellowElement.Text.AppendLine();
			this.yellowElement.Text.AppendLine(@"This class is:");
			this.yellowElement.Text.AppendLine(this.GetType().FullName);
			this.yellowElement.Text.AppendLine(@"It is located in assembly:");
			this.yellowElement.Text.AppendLine(this.GetType().Assembly.FullName);
			this.yellowElement.Text.AppendLine();

			//add an embedded 2D element within the text
			//create it..
			this.embeddedElement = new SolidColourElement(Color.Red, new Vector2(16, 16)); // quite small
			this.embeddedElement.AlphaBlendState = AlphaBlendState.Alpha;
			//add it.
			this.yellowElement.AddInline(this.embeddedElement, insertAtIndex);


#if XBOX360
			this.yellowElement.Text.AppendLine(@"Press and hold both thumbsticks to show the debug overlay");
#else
			this.yellowElement.Text.AppendLine(@"Press F12 to show the debug overlay");
#endif


			//align the element rectangle to the bottom centre of the screen
			this.yellowElement.VerticalAlignment = VerticalAlignment.Bottom;
			this.yellowElement.HorizontalAlignment = HorizontalAlignment.Centre;

			//centre align the text
			this.yellowElement.TextHorizontalAlignment = TextHorizontalAlignment.Centre;
			//centre the text in the middle of the 400x200 area of the element rectangle
			this.yellowElement.TextVerticalAlignment = VerticalAlignment.Centre;

			//add it to the screen
			drawToScreen.Add(yellowElement);




			//create the statistics display
			//this class will query the DrawState for the previous frames DrawStatistics structure.
			//this structure provides a large number of statistics for the drawn frame.
			//The DrawStatisticsDisplay displays some of the more important statistics. It will also
			//display thread activity on the xbox.

			//DrawStatistics are only available in DEBUG xen builds
			//They can be accessed at runtime with DrawState GetPreviousFrameStatistics()

			//at runtime, pressing 'F12' will toggle the overlay (or holding both thumbsticks on x360)
			this.statisticsOverlay = new Xen.Ex.Graphics2D.Statistics.DrawStatisticsDisplay(this.UpdateManager);

			//then add it to the screen
			drawToScreen.Add(statisticsOverlay);
		}