Browse Source

Add Primitives sample to Mac and iOS Samples projects

Kenneth Pouncey 13 years ago
parent
commit
2664da161e

BIN
Samples/MacOS/Primitives/Game.ico


BIN
Samples/MacOS/Primitives/GameThumbnail.png


+ 16 - 0
Samples/MacOS/Primitives/Info.plist

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleIdentifier</key>
+	<string>com.yourcompany.Primitives</string>
+	<key>CFBundleName</key>
+	<string>Primitives</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+	<key>LSMinimumSystemVersion</key>
+	<string>10.6</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+</dict>
+</plist>

+ 245 - 0
Samples/MacOS/Primitives/PrimitiveBatch.cs

@@ -0,0 +1,245 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// PrimitiveBatch.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Input;
+#endregion
+
+namespace PrimitivesSample
+{
+
+    // PrimitiveBatch is a class that handles efficient rendering automatically for its
+    // users, in a similar way to SpriteBatch. PrimitiveBatch can render lines, points,
+    // and triangles to the screen. In this sample, it is used to draw a spacewars
+    // retro scene.
+    public class PrimitiveBatch : IDisposable
+    {
+        #region Constants and Fields
+
+        // this constant controls how large the vertices buffer is. Larger buffers will
+        // require flushing less often, which can increase performance. However, having
+        // buffer that is unnecessarily large will waste memory.
+        const int DefaultBufferSize = 500;
+
+        // a block of vertices that calling AddVertex will fill. Flush will draw using
+        // this array, and will determine how many primitives to draw from
+        // positionInBuffer.
+        VertexPositionColor[] vertices = new VertexPositionColor[DefaultBufferSize];
+
+        // keeps track of how many vertices have been added. this value increases until
+        // we run out of space in the buffer, at which time Flush is automatically
+        // called.
+        int positionInBuffer = 0;
+
+        // a basic effect, which contains the shaders that we will use to draw our
+        // primitives.
+        BasicEffect basicEffect;
+
+        // the device that we will issue draw calls to.
+        GraphicsDevice device;
+
+        // this value is set by Begin, and is the type of primitives that we are
+        // drawing.
+        PrimitiveType primitiveType;
+
+        // how many verts does each of these primitives take up? points are 1,
+        // lines are 2, and triangles are 3.
+        int numVertsPerPrimitive;
+
+        // hasBegun is flipped to true once Begin is called, and is used to make
+        // sure users don't call End before Begin is called.
+        bool hasBegun = false;
+
+        bool isDisposed = false;
+
+        #endregion
+
+        // the constructor creates a new PrimitiveBatch and sets up all of the internals
+        // that PrimitiveBatch will need.
+        public PrimitiveBatch(GraphicsDevice graphicsDevice)
+        {
+            if (graphicsDevice == null)
+            {
+                throw new ArgumentNullException("graphicsDevice");
+            }
+            device = graphicsDevice;
+
+            // set up a new basic effect, and enable vertex colors.
+            basicEffect = new BasicEffect(graphicsDevice);
+            basicEffect.VertexColorEnabled = true;
+
+            // projection uses CreateOrthographicOffCenter to create 2d projection
+            // matrix with 0,0 in the upper left.
+            basicEffect.Projection = Matrix.CreateOrthographicOffCenter
+                (0, graphicsDevice.Viewport.Width,
+                graphicsDevice.Viewport.Height, 0,
+                0, 1);
+        }
+
+        public void Dispose()
+        {
+            this.Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        protected virtual void Dispose(bool disposing)
+        {
+            if (disposing && !isDisposed)
+            {
+                if (basicEffect != null)
+                    basicEffect.Dispose();
+
+                isDisposed = true;
+            }
+        }
+
+        // Begin is called to tell the PrimitiveBatch what kind of primitives will be
+        // drawn, and to prepare the graphics card to render those primitives.
+        public void Begin(PrimitiveType primitiveType)
+        {
+            if (hasBegun)
+            {
+                throw new InvalidOperationException
+                    ("End must be called before Begin can be called again.");
+            }
+
+            // these three types reuse vertices, so we can't flush properly without more
+            // complex logic. Since that's a bit too complicated for this sample, we'll
+            // simply disallow them.
+            if (primitiveType == PrimitiveType.LineStrip ||
+                primitiveType == PrimitiveType.TriangleStrip)
+            {
+                throw new NotSupportedException
+                    ("The specified primitiveType is not supported by PrimitiveBatch.");
+            }
+
+            this.primitiveType = primitiveType;
+
+            // how many verts will each of these primitives require?
+            this.numVertsPerPrimitive = NumVertsPerPrimitive(primitiveType);
+
+            //tell our basic effect to begin.
+            basicEffect.CurrentTechnique.Passes[0].Apply();
+
+            // flip the error checking boolean. It's now ok to call AddVertex, Flush,
+            // and End.
+            hasBegun = true;
+        }
+
+        // AddVertex is called to add another vertex to be rendered. To draw a point,
+        // AddVertex must be called once. for lines, twice, and for triangles 3 times.
+        // this function can only be called once begin has been called.
+        // if there is not enough room in the vertices buffer, Flush is called
+        // automatically.
+        public void AddVertex(Vector2 vertex, Color color)
+        {
+            if (!hasBegun)
+            {
+                throw new InvalidOperationException
+                    ("Begin must be called before AddVertex can be called.");
+            }
+
+            // are we starting a new primitive? if so, and there will not be enough room
+            // for a whole primitive, flush.
+            bool newPrimitive = ((positionInBuffer % numVertsPerPrimitive) == 0);
+
+            if (newPrimitive &&
+                (positionInBuffer + numVertsPerPrimitive) >= vertices.Length)
+            {
+                Flush();
+            }
+
+            // once we know there's enough room, set the vertex in the buffer,
+            // and increase position.
+            vertices[positionInBuffer].Position = new Vector3(vertex, 0);
+            vertices[positionInBuffer].Color = color;
+
+            positionInBuffer++;
+        }
+
+        // End is called once all the primitives have been drawn using AddVertex.
+        // it will call Flush to actually submit the draw call to the graphics card, and
+        // then tell the basic effect to end.
+        public void End()
+        {
+            if (!hasBegun)
+            {
+                throw new InvalidOperationException
+                    ("Begin must be called before End can be called.");
+            }
+
+            // Draw whatever the user wanted us to draw
+            Flush();
+
+            hasBegun = false;
+        }
+
+        // Flush is called to issue the draw call to the graphics card. Once the draw
+        // call is made, positionInBuffer is reset, so that AddVertex can start over
+        // at the beginning. End will call this to draw the primitives that the user
+        // requested, and AddVertex will call this if there is not enough room in the
+        // buffer.
+        private void Flush()
+        {
+            if (!hasBegun)
+            {
+                throw new InvalidOperationException
+                    ("Begin must be called before Flush can be called.");
+            }
+
+            // no work to do
+            if (positionInBuffer == 0)
+            {
+                return;
+            }
+
+            // how many primitives will we draw?
+            int primitiveCount = positionInBuffer / numVertsPerPrimitive;
+
+            // submit the draw call to the graphics card
+            device.DrawUserPrimitives<VertexPositionColor>(primitiveType, vertices, 0,
+                primitiveCount);
+
+            // now that we've drawn, it's ok to reset positionInBuffer back to zero,
+            // and write over any vertices that may have been set previously.
+            positionInBuffer = 0;
+        }
+
+        #region Helper functions
+
+        // NumVertsPerPrimitive is a boring helper function that tells how many vertices
+        // it will take to draw each kind of primitive.
+        static private int NumVertsPerPrimitive(PrimitiveType primitive)
+        {
+            int numVertsPerPrimitive;
+            switch (primitive)
+            {
+                case PrimitiveType.LineList:
+                    numVertsPerPrimitive = 2;
+                    break;
+                case PrimitiveType.TriangleList:
+                    numVertsPerPrimitive = 3;
+                    break;
+                default:
+                    throw new InvalidOperationException("primitive is not valid");
+            }
+            return numVertsPerPrimitive;
+        }
+
+        #endregion
+
+
+    }
+}

+ 58 - 0
Samples/MacOS/Primitives/Primitives.csproj

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.0</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{2DDBFED4-9955-4F02-9937-B9AE82836329}</ProjectGuid>
+    <ProjectTypeGuids>{948B3504-5B70-4649-8FE4-BDE1FB46EC69};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>Primitives</RootNamespace>
+    <AssemblyName>Primitives</AssemblyName>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>none</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="MonoMac" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Info.plist" />
+    <None Include="Game.ico" />
+    <None Include="GameThumbnail.png" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <Import Project="$(MSBuildExtensionsPath)\Mono\MonoMac\v0.0\Mono.MonoMac.targets" />
+  <ItemGroup>
+    <Compile Include="PrimitiveBatch.cs" />
+    <Compile Include="PrimitivesSampleGame.cs" />
+    <Compile Include="Program.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\..\MonoGame\MonoGame.Framework\MonoGame.Framework.MacOS.csproj">
+      <Project>{36C538E6-C32A-4A8D-A39C-566173D7118E}</Project>
+      <Name>MonoGame.Framework.MacOS</Name>
+    </ProjectReference>
+  </ItemGroup>
+</Project>

+ 307 - 0
Samples/MacOS/Primitives/PrimitivesSampleGame.cs

@@ -0,0 +1,307 @@
+#region File Description
+//-----------------------------------------------------------------------------
+// PrimitivesSampleGame.cs
+//
+// Microsoft XNA Community Game Platform
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-----------------------------------------------------------------------------
+#endregion
+
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Input;
+#endregion
+
+namespace PrimitivesSample
+{
+    // This sample illustrates the use of PrimitiveBatch to draw lines and points
+    // on the screen. Lines and points are used to recreate the Spacewars starter kit's
+    // retro mode.
+    public class PrimitivesSampleGame : Microsoft.Xna.Framework.Game
+    {
+        #region Constants
+
+        // this constant controls the number of stars that will be created when the game
+        // starts up.
+        const int NumStars = 500;
+
+        // what percentage of those stars will be "big" stars? the default is 20%.
+        const float PercentBigStars = .2f;
+
+        // how bright will stars be?  somewhere between these two values.
+        const byte MinimumStarBrightness = 56;
+        const byte MaximumStarBrightness = 255;
+
+        // how big is the ship?
+        const float ShipSizeX = 10f;
+        const float ShipSizeY = 15f;
+        const float ShipCutoutSize = 5f;
+
+        // the radius of the sun.
+        const float SunSize = 30f;
+
+        #endregion
+
+        #region Fields
+
+        GraphicsDeviceManager graphics;
+
+        // PrimitiveBatch is the new class introduced in this sample. We'll use it to
+        // draw everything in this sample, including the stars, ships, and sun.
+        PrimitiveBatch primitiveBatch;
+
+        // these two lists, stars, and starColors, keep track of the positions and
+        // colors of all the stars that we will randomly generate during the initialize
+        // phase.
+        List<Vector2> stars = new List<Vector2>();
+        List<Color> starColors = new List<Color>();
+
+        #endregion
+
+        #region Initialization
+        public PrimitivesSampleGame()
+        {
+            graphics = new GraphicsDeviceManager(this);
+            Content.RootDirectory = "Content";
+
+#if WINDOWS_PHONE || IPHONE
+            TargetElapsedTime = TimeSpan.FromTicks(333333);
+
+            graphics.PreferredBackBufferWidth = 480;
+            graphics.PreferredBackBufferHeight = 800;
+            graphics.IsFullScreen = true;
+#else
+            // set the backbuffer size to something that will work well on both xbox
+            // and windows.
+            graphics.PreferredBackBufferWidth = 853;
+            graphics.PreferredBackBufferHeight = 480;
+#endif
+        }
+
+        protected override void Initialize()
+        {
+            base.Initialize();
+
+            // CreateStars needs to know how big the GraphicsDevice's viewport is, so 
+            // once base.Initialize has been called, we can call this.
+            CreateStars();
+        }
+
+        private void CreateStars()
+        {
+            // since every star will be put in a random place and have a random color, 
+            // a random number generator might come in handy.
+            Random random = new Random();
+
+            // where can we put the stars?
+            int screenWidth = graphics.GraphicsDevice.Viewport.Width;
+            int screenHeight = graphics.GraphicsDevice.Viewport.Height;
+
+
+            for (int i = 0; i < NumStars; i++)
+            {
+                // pick a random spot...
+                Vector2 where = new Vector2(
+                    random.Next(0, screenWidth),
+                    random.Next(0, screenHeight));
+
+                // ...and a random color. it's safe to cast random.Next to a byte,
+                // because MinimumStarBrightness and MaximumStarBrightness are both
+                // bytes.
+                byte greyValue =
+                    (byte)random.Next(MinimumStarBrightness, MaximumStarBrightness);
+                Color color = new Color(greyValue, greyValue, greyValue);
+
+                // if the random number was greater than the percentage chance for a big
+                // star, this is just a normal star.
+                if ((float)random.NextDouble() > PercentBigStars)
+                {
+                    starColors.Add(color);
+                    stars.Add(where);
+                }
+                else
+                {
+                    // if this star is randomly selected to be a "big" star, we actually
+                    // add four points and colors to stars and starColors. big stars are
+                    // a block of four points, instead of just one point.
+                    for (int j = 0; j < 4; j++)
+                    {
+                        starColors.Add(color);
+                    }
+
+                    stars.Add(where);
+                    stars.Add(where + Vector2.UnitX);
+                    stars.Add(where + Vector2.UnitY);
+                    stars.Add(where + Vector2.One);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Load your graphics content.
+        /// </summary>
+        protected override void LoadContent()
+        {
+            primitiveBatch = new PrimitiveBatch(graphics.GraphicsDevice);
+        }
+
+        #endregion
+
+        #region Update and Draw
+
+        /// <summary>
+        /// Allows the game to run logic such as updating the world,
+        /// checking for collisions, gathering input and playing audio.
+        /// </summary>
+        /// <param name="gameTime">Provides a snapshot of timing values.</param>
+        protected override void Update(GameTime gameTime)
+        {
+            // Allows the game to exit
+            if ((GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
+                || Keyboard.GetState().IsKeyDown(Keys.Escape))
+                this.Exit();
+
+
+            base.Update(gameTime);
+        }
+
+        /// <summary>
+        /// This is called when the game should draw itself.
+        /// </summary>
+        /// <param name="gameTime">Provides a snapshot of timing values.</param>
+        protected override void Draw(GameTime gameTime)
+        {
+            graphics.GraphicsDevice.Clear(Color.Black);
+
+            // how big is the screen? we'll use that information to center the sun
+            // and place the ships.
+            int screenWidth = graphics.GraphicsDevice.Viewport.Width;
+            int screenHeight = graphics.GraphicsDevice.Viewport.Height;
+
+            // draw the sun in the center
+            DrawSun(new Vector2(screenWidth / 2, screenHeight / 2));
+
+            // draw the left hand ship
+            DrawShip(new Vector2(100, screenHeight / 2));
+
+            // and the right hand ship
+            DrawShip(new Vector2(screenWidth - 100, screenHeight / 2));
+
+            DrawStars();
+
+            base.Draw(gameTime);
+        }
+
+        // DrawStars is called to do exactly what its name says: draw the stars.
+        private void DrawStars()
+        {
+            // stars are drawn as a list of points, so begin the primitiveBatch.
+            primitiveBatch.Begin(PrimitiveType.TriangleList);
+
+            // loop through all of the stars, and tell primitive batch to draw them.
+            // each star is a very small triangle.
+            for (int i = 0; i < stars.Count; i++)
+            {
+                primitiveBatch.AddVertex(stars[i], starColors[i]);
+                primitiveBatch.AddVertex(stars[i] + Vector2.UnitX, starColors[i]);
+                primitiveBatch.AddVertex(stars[i] + Vector2.UnitY, starColors[i]);
+            }
+
+            // and then tell it that we're done.
+            primitiveBatch.End();
+        }
+
+        // called to draw the spacewars ship at a point on the screen.
+        private void DrawShip(Vector2 where)
+        {
+            // tell the primitive batch to start drawing lines
+            primitiveBatch.Begin(PrimitiveType.LineList);
+
+            // from the nose, down the left hand side
+            primitiveBatch.AddVertex(
+                where + new Vector2(0f, -ShipSizeY), Color.White);
+            primitiveBatch.AddVertex(
+                where + new Vector2(-ShipSizeX, ShipSizeY), Color.White);
+
+            // to the right and up, into the cutout
+            primitiveBatch.AddVertex(
+                where + new Vector2(-ShipSizeX, ShipSizeY), Color.White);
+            primitiveBatch.AddVertex(
+                where + new Vector2(0f, ShipSizeY - ShipCutoutSize), Color.White);
+
+            // to the right and down, out of the cutout
+            primitiveBatch.AddVertex(
+                where + new Vector2(0f, ShipSizeY - ShipCutoutSize), Color.White);
+            primitiveBatch.AddVertex(
+                where + new Vector2(ShipSizeX, ShipSizeY), Color.White);
+
+            // and back up to the nose, where we started.
+            primitiveBatch.AddVertex(
+                where + new Vector2(ShipSizeX, ShipSizeY), Color.White);
+            primitiveBatch.AddVertex(
+                where + new Vector2(0f, -ShipSizeY), Color.White);
+
+            // and we're done.
+            primitiveBatch.End();
+        }
+
+        // called to draw the spacewars sun.
+        private void DrawSun(Vector2 where)
+        {
+            // the sun is made from 4 lines in a circle.
+            primitiveBatch.Begin(PrimitiveType.LineList);
+
+            // draw the vertical and horizontal lines
+            primitiveBatch.AddVertex(where + new Vector2(0, SunSize), Color.White);
+            primitiveBatch.AddVertex(where + new Vector2(0, -SunSize), Color.White);
+
+            primitiveBatch.AddVertex(where + new Vector2(SunSize, 0), Color.White);
+            primitiveBatch.AddVertex(where + new Vector2(-SunSize, 0), Color.White);
+
+            // to know where to draw the diagonal lines, we need to use trig.
+            // cosine of pi / 4 tells us what the x coordinate of a circle's radius is
+            // at 45 degrees. the y coordinate normally would come from sin, but sin and
+            // cos 45 are the same, so we can reuse cos for both x and y.
+            float sunSizeDiagonal = (float)Math.Cos(MathHelper.PiOver4);
+
+            // since that trig tells us the x and y for a unit circle, which has a
+            // radius of 1, we need scale that result by the sun's radius.
+            sunSizeDiagonal *= SunSize;
+
+            primitiveBatch.AddVertex(
+                where + new Vector2(-sunSizeDiagonal, sunSizeDiagonal), Color.Gray);
+            primitiveBatch.AddVertex(
+                where + new Vector2(sunSizeDiagonal, -sunSizeDiagonal), Color.Gray);
+
+            primitiveBatch.AddVertex(
+                where + new Vector2(sunSizeDiagonal, sunSizeDiagonal), Color.Gray);
+            primitiveBatch.AddVertex(
+                where + new Vector2(-sunSizeDiagonal, -sunSizeDiagonal), Color.Gray);
+
+            primitiveBatch.End();
+        }
+
+        #endregion
+
+//        #region Entry point
+//
+//        /// <summary>
+//        /// The main entry point for the application.
+//        /// </summary>
+//        static void Main()
+//        {
+//            using (PrimitivesSampleGame game = new PrimitivesSampleGame())
+//            {
+//                game.Run();
+//            }
+//        }
+//
+//        #endregion
+
+    }
+}

+ 42 - 0
Samples/MacOS/Primitives/Program.cs

@@ -0,0 +1,42 @@
+using System;
+
+namespace PrimitivesSample
+{
+	static class Program
+	{
+
+
+		/// <summary>
+		/// The main entry point for the application.
+		/// </summary>
+		static void Main (string[] args)
+		{
+			MonoMac.AppKit.NSApplication.Init ();
+			
+			using (var p = new MonoMac.Foundation.NSAutoreleasePool ()) {
+				MonoMac.AppKit.NSApplication.SharedApplication.Delegate = new AppDelegate ();
+				MonoMac.AppKit.NSApplication.Main (args);
+			}
+		}
+
+	
+		class AppDelegate : MonoMac.AppKit.NSApplicationDelegate
+		{
+		
+			public override void FinishedLaunching (MonoMac.Foundation.NSObject notification)
+			{
+				using (PrimitivesSampleGame game = new PrimitivesSampleGame()) {
+					game.Run ();
+				}
+			}
+		
+			public override bool ApplicationShouldTerminateAfterLastWindowClosed (MonoMac.AppKit.NSApplication sender)
+			{
+				return true;
+			}
+		}
+	}
+}
+
+
+

+ 20 - 0
Samples/MonoGame.Samples.MacOS.sln

@@ -67,6 +67,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Samples.VideoPlaye
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StarWarrior", "MacOS\StarWarrior\StarWarrior.csproj", "{C9382003-668B-48E6-86BC-7ECDE3ECFDBE}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Primitives", "MacOS\Primitives\Primitives.csproj", "{2DDBFED4-9955-4F02-9937-B9AE82836329}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -150,6 +152,24 @@ Global
 		{2C0696B3-0D1E-4039-B4AB-9A210B3CF290}.Release|Any CPU.Build.0 = Release|Any CPU
 		{2C0696B3-0D1E-4039-B4AB-9A210B3CF290}.Release|x86.ActiveCfg = Release|Any CPU
 		{2C0696B3-0D1E-4039-B4AB-9A210B3CF290}.Release|x86.Build.0 = Release|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Debug|iPhone.Build.0 = Debug|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Debug|x86.Build.0 = Debug|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Distribution|Any CPU.ActiveCfg = Debug|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Distribution|Any CPU.Build.0 = Debug|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Release|Any CPU.Build.0 = Release|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Release|iPhone.ActiveCfg = Release|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Release|iPhone.Build.0 = Release|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Release|x86.ActiveCfg = Release|Any CPU
+		{2DDBFED4-9955-4F02-9937-B9AE82836329}.Release|x86.Build.0 = Release|Any CPU
 		{3388FF68-6F15-4F36-B226-7823E5309E92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3388FF68-6F15-4F36-B226-7823E5309E92}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{3388FF68-6F15-4F36-B226-7823E5309E92}.Debug|x86.ActiveCfg = Debug|Any CPU

+ 15 - 1
Samples/MonoGame.Samples.iOS.sln

@@ -45,6 +45,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Samples.Waypoint",
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Samples.VideoPlayer", "iOS\VideoPlayer\MonoGame.Samples.VideoPlayer.csproj", "{D6A6EF59-928C-4DDB-AD8D-D85DD914BF82}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Samples.Primitives", "iOS\MonoGame.Samples.Primitives\MonoGame.Samples.Primitives.csproj", "{C212EEE3-E38E-4F0A-9B98-779694A886DB}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|iPhoneSimulator = Debug|iPhoneSimulator
@@ -231,6 +233,18 @@ Global
 		{BF785698-D6BF-465C-9089-B48B49D0377A}.Release|iPhone.Build.0 = Release|iPhone
 		{BF785698-D6BF-465C-9089-B48B49D0377A}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
 		{BF785698-D6BF-465C-9089-B48B49D0377A}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Debug|iPhone.ActiveCfg = Debug|iPhone
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Debug|iPhone.Build.0 = Debug|iPhone
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Distribution|iPhone.ActiveCfg = Debug|iPhone
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Distribution|iPhone.Build.0 = Debug|iPhone
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Distribution|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Distribution|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Release|iPhone.ActiveCfg = Release|iPhone
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Release|iPhone.Build.0 = Release|iPhone
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+		{C212EEE3-E38E-4F0A-9B98-779694A886DB}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
 		{CE342066-BCCD-4989-A401-0D36287276EF}.Debug|iPhone.ActiveCfg = Debug|iPhone
 		{CE342066-BCCD-4989-A401-0D36287276EF}.Debug|iPhone.Build.0 = Debug|iPhone
 		{CE342066-BCCD-4989-A401-0D36287276EF}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
@@ -313,6 +327,6 @@ Global
 		{F5FA28E2-53B2-482B-8723-71588DF50BB6}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
 	EndGlobalSection
 	GlobalSection(MonoDevelopProperties) = preSolution
-		StartupItem = iOS\GameStateManagement\MonoGame.Samples.GameStateManagement.csproj
+		StartupItem = iOS\MonoGame.Samples.Primitives\MonoGame.Samples.Primitives.csproj
 	EndGlobalSection
 EndGlobal

+ 3 - 32
Samples/iOS/Aiming/MonoGame.Samples.Aiming.csproj

@@ -9,7 +9,6 @@
     <ProjectTypeGuids>{6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <OutputType>Exe</OutputType>
     <RootNamespace>MonoGame.Samples.Aiming</RootNamespace>
-    <TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
     <DebugSymbols>true</DebugSymbols>
@@ -19,16 +18,12 @@
     <DefineConstants>DEBUG;IPHONE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchLink>None</MtouchLink>
     <MtouchI18n />
     <AssemblyName>Aiming</AssemblyName>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
     <DebugType>none</DebugType>
@@ -36,18 +31,13 @@
     <OutputPath>bin\iPhoneSimulator\Release</OutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchLink>None</MtouchLink>
     <DefineConstants>IPHONE</DefineConstants>
     <MtouchI18n />
     <AssemblyName>TiledSprites</AssemblyName>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <MtouchSdkVersion>3.0</MtouchSdkVersion>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
     <DebugSymbols>true</DebugSymbols>
@@ -57,17 +47,13 @@
     <DefineConstants>DEBUG;IPHONE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchLink>None</MtouchLink>
     <MtouchI18n />
     <AssemblyName>Waypoint</AssemblyName>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <MtouchSdkVersion>3.0</MtouchSdkVersion>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
     <DebugType>none</DebugType>
@@ -75,45 +61,30 @@
     <OutputPath>bin\iPhone\Release</OutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <CodesignKey>iPhone Developer</CodesignKey>
     <DefineConstants>IPHONE</DefineConstants>
     <AssemblyName>Waypoint</AssemblyName>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <MtouchSdkVersion>3.0</MtouchSdkVersion>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Distribution|iPhone' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <CodesignKey>iPhone Developer</CodesignKey>
     <AssemblyName>MonoGame.Samples.Waypoint</AssemblyName>
     <MtouchI18n />
     <DefineConstants>IPHONE</DefineConstants>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <MtouchSdkVersion>3.0</MtouchSdkVersion>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Distribution|iPhoneSimulator' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Distribution</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchDebug>False</MtouchDebug>
     <AssemblyName>MonoGameSamplesAiming</AssemblyName>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -146,7 +117,7 @@
     <None Include="Info.plist" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\..\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
+    <ProjectReference Include="..\..\..\..\MonoGame\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
       <Project>{DB8508BB-9849-4CC2-BC0F-8EB5DACB3C47}</Project>
       <Name>MonoGame.Framework.iOS</Name>
     </ProjectReference>

+ 3 - 32
Samples/iOS/BatteryStatus/MonoGame.Samples.BatteryStatus.csproj

@@ -8,7 +8,6 @@
     <ProjectGuid>{B1E27EDB-2AC5-4A8A-8FD2-29CEEBDF3344}</ProjectGuid>
     <ProjectTypeGuids>{6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <OutputType>Exe</OutputType>
-    <TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
     <RootNamespace>MonoGame.Samples.BatteryStatus</RootNamespace>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
@@ -20,14 +19,10 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <MtouchLink>None</MtouchLink>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <MtouchI18n />
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>BatteryStatus</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
     <DebugType>none</DebugType>
@@ -35,14 +30,9 @@
     <OutputPath>bin\iPhoneSimulator\Release</OutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <MtouchI18n />
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>BatteryStatus</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
     <DebugSymbols>true</DebugSymbols>
@@ -52,16 +42,12 @@
     <DefineConstants>DEBUG</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <MtouchI18n />
     <MtouchSdkVersion>4.0</MtouchSdkVersion>
     <CodesignKey>iPhone Developer</CodesignKey>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>BatteryStatus</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
     <DebugType>none</DebugType>
@@ -69,42 +55,27 @@
     <OutputPath>bin\iPhone\Release</OutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <MtouchI18n />
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchSdkVersion>4.0</MtouchSdkVersion>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>BatteryStatus</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Debug</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <AssemblyName>MonoGameSamplesBatteryStatus</AssemblyName>
-    <MtouchUseThumb>false</MtouchUseThumb>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Release</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <AssemblyName>MonoGameSamplesBatteryStatus</AssemblyName>
-    <MtouchUseThumb>false</MtouchUseThumb>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -132,7 +103,7 @@
     <None Include="Info.plist" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\..\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
+    <ProjectReference Include="..\..\..\..\MonoGame\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
       <Project>{DB8508BB-9849-4CC2-BC0F-8EB5DACB3C47}</Project>
       <Name>MonoGame.Framework.iOS</Name>
     </ProjectReference>

+ 3 - 31
Samples/iOS/BouncingBox/MonoGame.Samples.BouncingBox.csproj

@@ -8,7 +8,6 @@
     <ProjectGuid>{F5FA28E2-53B2-482B-8723-71588DF50BB6}</ProjectGuid>
     <ProjectTypeGuids>{6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <OutputType>Exe</OutputType>
-    <TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
     <RootNamespace>MonoGame.Samples.BouncingBox</RootNamespace>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
@@ -20,14 +19,10 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <MtouchLink>None</MtouchLink>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <MtouchI18n />
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>BouncingBox</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
     <DebugType>none</DebugType>
@@ -35,14 +30,9 @@
     <OutputPath>bin\iPhoneSimulator\Release</OutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <MtouchI18n />
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>BouncingBox</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
     <DebugSymbols>true</DebugSymbols>
@@ -53,15 +43,11 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <MtouchI18n />
     <MtouchSdkVersion>4.0</MtouchSdkVersion>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>BouncingBox</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
     <DebugType>none</DebugType>
@@ -72,38 +58,24 @@
     <MtouchI18n />
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchSdkVersion>4.0</MtouchSdkVersion>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>BouncingBox</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Debug</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <AssemblyName>MonoGameSamplesBouncingBox</AssemblyName>
-    <MtouchUseThumb>false</MtouchUseThumb>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Release</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <AssemblyName>MonoGameSamplesBouncingBox</AssemblyName>
-    <MtouchUseThumb>false</MtouchUseThumb>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -132,7 +104,7 @@
     <None Include="Info.plist" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\..\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
+    <ProjectReference Include="..\..\..\..\MonoGame\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
       <Project>{DB8508BB-9849-4CC2-BC0F-8EB5DACB3C47}</Project>
       <Name>MonoGame.Framework.iOS</Name>
     </ProjectReference>

+ 3 - 32
Samples/iOS/ChaseAndEvade/MonoGame.Samples.ChaseAndEvade.csproj

@@ -9,7 +9,6 @@
     <ProjectTypeGuids>{6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <OutputType>Exe</OutputType>
     <RootNamespace>MonoGame.Samples.ChaseAndEvade</RootNamespace>
-    <TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
     <AssemblyName>ChaseAndEvade</AssemblyName>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
@@ -20,15 +19,11 @@
     <DefineConstants>DEBUG;IPHONE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchLink>None</MtouchLink>
     <MtouchI18n />
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
     <DebugType>none</DebugType>
@@ -36,16 +31,11 @@
     <OutputPath>bin\iPhoneSimulator\Release</OutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchLink>None</MtouchLink>
     <DefineConstants>IPHONE</DefineConstants>
     <MtouchI18n />
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
     <DebugSymbols>true</DebugSymbols>
@@ -55,16 +45,12 @@
     <DefineConstants>DEBUG;IPHONE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchLink>None</MtouchLink>
     <MtouchI18n />
     <MtouchSdkVersion>3.0</MtouchSdkVersion>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
     <DebugType>none</DebugType>
@@ -72,42 +58,27 @@
     <OutputPath>bin\iPhone\Release</OutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <CodesignKey>iPhone Developer</CodesignKey>
     <DefineConstants>IPHONE</DefineConstants>
     <MtouchSdkVersion>3.0</MtouchSdkVersion>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Distribution|iPhone' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchI18n />
     <DefineConstants>IPHONE</DefineConstants>
     <MtouchSdkVersion>3.0</MtouchSdkVersion>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Distribution|iPhoneSimulator' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Distribution</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchDebug>False</MtouchDebug>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -146,7 +117,7 @@
     <None Include="Info.plist" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\..\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
+    <ProjectReference Include="..\..\..\..\MonoGame\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
       <Project>{DB8508BB-9849-4CC2-BC0F-8EB5DACB3C47}</Project>
       <Name>MonoGame.Framework.iOS</Name>
     </ProjectReference>

+ 3 - 31
Samples/iOS/Draw2D/MonoGame.Samples.Draw2D.csproj

@@ -19,14 +19,10 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <MtouchLink>None</MtouchLink>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <MtouchI18n />
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>Draw2D</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
     <DebugType>none</DebugType>
@@ -34,14 +30,9 @@
     <OutputPath>bin\iPhoneSimulator\Release</OutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <MtouchI18n />
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>Draw2D</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
     <DebugSymbols>true</DebugSymbols>
@@ -51,16 +42,12 @@
     <DefineConstants>DEBUG</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchI18n />
     <MtouchSdkVersion>4.0</MtouchSdkVersion>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>Draw2D</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
     <DebugType>none</DebugType>
@@ -68,42 +55,27 @@
     <OutputPath>bin\iPhone\Release</OutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <MtouchI18n />
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchSdkVersion>4.0</MtouchSdkVersion>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>Draw2D</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Debug</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <AssemblyName>MonoGameSamplesDraw2D</AssemblyName>
-    <MtouchUseThumb>false</MtouchUseThumb>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Release</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <AssemblyName>MonoGameSamplesDraw2D</AssemblyName>
-    <MtouchUseThumb>false</MtouchUseThumb>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -136,7 +108,7 @@
     <None Include="Info.plist" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\..\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
+    <ProjectReference Include="..\..\..\..\MonoGame\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
       <Project>{DB8508BB-9849-4CC2-BC0F-8EB5DACB3C47}</Project>
       <Name>MonoGame.Framework.iOS</Name>
     </ProjectReference>

+ 3 - 31
Samples/iOS/GameComponents/MonoGame.Samples.GameComponents.csproj

@@ -19,14 +19,10 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <MtouchLink>None</MtouchLink>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <MtouchI18n />
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>GameComponents</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
     <DebugType>none</DebugType>
@@ -34,14 +30,9 @@
     <OutputPath>bin\iPhoneSimulator\Release</OutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <MtouchI18n />
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>GameComponents</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
     <DebugSymbols>true</DebugSymbols>
@@ -51,15 +42,11 @@
     <DefineConstants>DEBUG</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>True</MtouchDebug>
+    <MtouchDebug>true</MtouchDebug>
     <MtouchI18n />
     <MtouchSdkVersion>4.0</MtouchSdkVersion>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>GameComponents</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
     <DebugType>none</DebugType>
@@ -67,42 +54,27 @@
     <OutputPath>bin\iPhone\Release</OutputPath>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
     <MtouchI18n />
     <CodesignKey>iPhone Developer</CodesignKey>
     <MtouchSdkVersion>4.0</MtouchSdkVersion>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchUseThumb>false</MtouchUseThumb>
-    <MtouchUseSGen>false</MtouchUseSGen>
     <AssemblyName>GameComponents</AssemblyName>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Debug</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <AssemblyName>MonoGameSamplesGameComponents</AssemblyName>
-    <MtouchUseThumb>false</MtouchUseThumb>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>none</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Release</OutputPath>
     <WarningLevel>4</WarningLevel>
-    <MtouchDebug>False</MtouchDebug>
-    <MtouchUseSGen>false</MtouchUseSGen>
-    <MtouchUseLlvm>false</MtouchUseLlvm>
     <AssemblyName>MonoGameSamplesGameComponents</AssemblyName>
-    <MtouchUseThumb>false</MtouchUseThumb>
     <MtouchUseArmv7>false</MtouchUseArmv7>
-    <MtouchArch>ARMv6</MtouchArch>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -133,7 +105,7 @@
     <None Include="Info.plist" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\..\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
+    <ProjectReference Include="..\..\..\..\MonoGame\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
       <Project>{DB8508BB-9849-4CC2-BC0F-8EB5DACB3C47}</Project>
       <Name>MonoGame.Framework.iOS</Name>
     </ProjectReference>

+ 40 - 0
Samples/iOS/MonoGame.Samples.Primitives/AppDelegate.cs

@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using MonoTouch.Foundation;
+using MonoTouch.UIKit;
+
+namespace MonoGame.Samples.Primitives
+{
+	// The UIApplicationDelegate for the application. This class is responsible for launching the 
+	// User Interface of the application, as well as listening (and optionally responding) to 
+	// application events from iOS.
+	[Register ("AppDelegate")]
+	public partial class AppDelegate : UIApplicationDelegate
+	{
+		// class-level declarations
+		UIWindow window;
+
+		//
+		// This method is invoked when the application has loaded and is ready to run. In this 
+		// method you should instantiate the window, load the UI into it and then make the window
+		// visible.
+		//
+		// You have 17 seconds to return from this method, or iOS will terminate your application.
+		//
+		public override bool FinishedLaunching (UIApplication app, NSDictionary options)
+		{
+			// create a new window instance based on the screen size
+			window = new UIWindow (UIScreen.MainScreen.Bounds);
+			
+			// If you have defined a view, add it here:
+			// window.AddSubview (navigationController.View);
+			
+			// make the window visible
+			window.MakeKeyAndVisible ();
+			
+			return true;
+		}
+	}
+}
+

+ 12 - 0
Samples/iOS/MonoGame.Samples.Primitives/Info.plist

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+</dict>
+</plist>

+ 19 - 0
Samples/iOS/MonoGame.Samples.Primitives/Main.cs

@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using MonoTouch.Foundation;
+using MonoTouch.UIKit;
+
+namespace MonoGame.Samples.Primitives
+{
+	public class Application
+	{
+		// This is the main entry point of the application.
+		static void Main (string[] args)
+		{
+			// if you want to use a different Application Delegate class from "AppDelegate"
+			// you can specify it here.
+			UIApplication.Main (args, null, "AppDelegate");
+		}
+	}
+}

+ 89 - 0
Samples/iOS/MonoGame.Samples.Primitives/MonoGame.Samples.Primitives.csproj

@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
+    <ProductVersion>10.0.0</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{C212EEE3-E38E-4F0A-9B98-779694A886DB}</ProjectGuid>
+    <ProjectTypeGuids>{6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>Primitives</RootNamespace>
+    <AssemblyName>MonoGameSamplesPrimitives</AssemblyName>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
+    <DefineConstants>DEBUG;IPHONE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+    <MtouchLink>None</MtouchLink>
+    <MtouchDebug>true</MtouchDebug>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
+    <DebugType>none</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\iPhoneSimulator\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+    <MtouchLink>None</MtouchLink>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\iPhone\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+    <MtouchDebug>true</MtouchDebug>
+    <CodesignKey>iPhone Developer</CodesignKey>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
+    <DebugType>none</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\iPhone\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+    <CodesignKey>iPhone Developer</CodesignKey>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Core" />
+    <Reference Include="monotouch" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Info.plist" />
+    <None Include="..\..\MacOS\Primitives\Game.ico">
+      <Link>Game.ico</Link>
+    </None>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="..\..\MacOS\Primitives\PrimitiveBatch.cs">
+      <Link>PrimitiveBatch.cs</Link>
+    </Compile>
+    <Compile Include="..\..\MacOS\Primitives\PrimitivesSampleGame.cs">
+      <Link>PrimitivesSampleGame.cs</Link>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="..\..\MacOS\Primitives\GameThumbnail.png">
+      <Link>GameThumbnail.png</Link>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\..\MonoGame\MonoGame.Framework\MonoGame.Framework.iOS.csproj">
+      <Project>{DB8508BB-9849-4CC2-BC0F-8EB5DACB3C47}</Project>
+      <Name>MonoGame.Framework.iOS</Name>
+    </ProjectReference>
+  </ItemGroup>
+</Project>

+ 25 - 0
Samples/iOS/MonoGame.Samples.Primitives/Program.cs

@@ -0,0 +1,25 @@
+using MonoTouch.Foundation;
+using MonoTouch.UIKit;
+
+using Microsoft.Xna;
+
+namespace PrimitivesSample
+{
+	[Register ("AppDelegate")]
+	class Program : UIApplicationDelegate 
+	{
+
+		public override void FinishedLaunching (UIApplication app)
+		{
+			// Fun begins..
+			using (PrimitivesSampleGame game = new PrimitivesSampleGame()) {
+				game.Run ();
+			}
+		}
+
+		static void Main (string [] args)
+		{
+			UIApplication.Main (args,null,"AppDelegate");
+		}
+	}
+}