From b6e6744a88c2ad05cd4a4690f621bbaaed487497 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Thu, 1 Jan 2015 14:36:46 -0600 Subject: [PATCH] Adding extension for rectangleitem to get position in Farseer units ( getSimPosition ) Adding extension for vector2 to convert back and forth between sim and display units --- axios.sln | 3 -- axios/Axios_WP7.csproj | 2 ++ axios/Axios_Windows.csproj | 2 ++ axios/Axios_Xbox_360.csproj | 2 ++ axios/Axios_settings.cs | 2 ++ axios/Engine/AxiosGameScreen.cs | 31 ++++++++++++------- .../Extensions/RectangleItemProperties.cs | 21 +++++++++++++ axios/Engine/Extensions/Vector2.cs | 23 ++++++++++++++ 8 files changed, 72 insertions(+), 14 deletions(-) create mode 100644 axios/Engine/Extensions/RectangleItemProperties.cs create mode 100644 axios/Engine/Extensions/Vector2.cs diff --git a/axios.sln b/axios.sln index f07c805..6cacc52 100644 --- a/axios.sln +++ b/axios.sln @@ -43,7 +43,6 @@ Global {742C938F-997D-4EFD-95D2-BB09CDADCD2E}.Release|Xbox 360.Build.0 = Release|x86 {B5664516-72B7-4BA3-9F72-25CAA90867D8}.Debug|Any CPU.ActiveCfg = Debug|Xbox 360 {B5664516-72B7-4BA3-9F72-25CAA90867D8}.Debug|Mixed Platforms.ActiveCfg = Debug|Xbox 360 - {B5664516-72B7-4BA3-9F72-25CAA90867D8}.Debug|Mixed Platforms.Build.0 = Debug|Xbox 360 {B5664516-72B7-4BA3-9F72-25CAA90867D8}.Debug|Windows Phone.ActiveCfg = Debug|Xbox 360 {B5664516-72B7-4BA3-9F72-25CAA90867D8}.Debug|Windows Phone.Build.0 = Debug|Xbox 360 {B5664516-72B7-4BA3-9F72-25CAA90867D8}.Debug|x86.ActiveCfg = Debug|Xbox 360 @@ -61,7 +60,6 @@ Global {B5664516-72B7-4BA3-9F72-25CAA90867D8}.Release|Xbox 360.Build.0 = Release|Xbox 360 {C09D9005-76AC-4F1A-9479-2787BB3DB158}.Debug|Any CPU.ActiveCfg = Debug|Windows Phone {C09D9005-76AC-4F1A-9479-2787BB3DB158}.Debug|Mixed Platforms.ActiveCfg = Debug|Windows Phone - {C09D9005-76AC-4F1A-9479-2787BB3DB158}.Debug|Mixed Platforms.Build.0 = Debug|Windows Phone {C09D9005-76AC-4F1A-9479-2787BB3DB158}.Debug|Windows Phone.ActiveCfg = Debug|Windows Phone {C09D9005-76AC-4F1A-9479-2787BB3DB158}.Debug|Windows Phone.Build.0 = Debug|Windows Phone {C09D9005-76AC-4F1A-9479-2787BB3DB158}.Debug|x86.ActiveCfg = Debug|Windows Phone @@ -79,7 +77,6 @@ Global {C09D9005-76AC-4F1A-9479-2787BB3DB158}.Release|Xbox 360.Build.0 = Release|Windows Phone {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|Any CPU.ActiveCfg = Debug|x86 {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|Mixed Platforms.Build.0 = Debug|x86 {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|Windows Phone.ActiveCfg = Debug|x86 {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|x86.ActiveCfg = Debug|x86 {A622337F-9AE6-492A-85D6-01CCE0D7F9B4}.Debug|x86.Build.0 = Debug|x86 diff --git a/axios/Axios_WP7.csproj b/axios/Axios_WP7.csproj index 66f98d6..080041f 100644 --- a/axios/Axios_WP7.csproj +++ b/axios/Axios_WP7.csproj @@ -174,8 +174,10 @@ + + diff --git a/axios/Axios_Windows.csproj b/axios/Axios_Windows.csproj index 63afc82..4d1b572 100644 --- a/axios/Axios_Windows.csproj +++ b/axios/Axios_Windows.csproj @@ -226,8 +226,10 @@ + + diff --git a/axios/Axios_Xbox_360.csproj b/axios/Axios_Xbox_360.csproj index 1373fd7..77f63fa 100644 --- a/axios/Axios_Xbox_360.csproj +++ b/axios/Axios_Xbox_360.csproj @@ -167,8 +167,10 @@ + + diff --git a/axios/Axios_settings.cs b/axios/Axios_settings.cs index 8be8321..d3acd33 100644 --- a/axios/Axios_settings.cs +++ b/axios/Axios_settings.cs @@ -134,6 +134,8 @@ * - Removing cache from Gleed2D as ContentManager automatically does this * - Adding cache * - Adding XOR Shift random class + * - Adding extension for rectangleitem to get position in Farseer units ( getSimPosition ) + * - Adding extension for vector2 to convert back and forth between sim and display units * */ #endregion diff --git a/axios/Engine/AxiosGameScreen.cs b/axios/Engine/AxiosGameScreen.cs index 92eb07c..84e274c 100644 --- a/axios/Engine/AxiosGameScreen.cs +++ b/axios/Engine/AxiosGameScreen.cs @@ -1,26 +1,27 @@ using System; using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.IO.Compression; using System.Linq; +using System.Xml.Linq; +using Axios.Engine.Extensions; +using Axios.Engine.File; +using Axios.Engine.Gleed2D; using Axios.Engine.Interfaces; using Axios.Engine.Log; using Axios.Engine.Structures; using Axios.Engine.UI; using FarseerPhysics.Dynamics; +using FarseerPhysics.Factories; using FarseerPhysics.SamplesFramework; +using GameStateManagement; +using Gleed2D.Core; +using Gleed2D.InGame; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; -using GameStateManagement; using Microsoft.Xna.Framework.Input; -using Axios.Engine.Extensions; -using System.IO; -using System.IO.Compression; -using Gleed2D.InGame; -using Axios.Engine.File; -using System.Xml.Linq; -using Gleed2D.Core; -using System.Diagnostics; -using Axios.Engine.Gleed2D; namespace Axios.Engine { @@ -547,7 +548,15 @@ namespace Axios.Engine public virtual void LoadRectangleItem(RectangleItemProperties rectangleitem, Layer l) { - + if (l.Properties.CustomProperties.Keys.Contains("Collision") && (bool)l.Properties.CustomProperties["Collision"].Value) + { + Body b = BodyFactory.CreateRectangle(this.World, ConvertUnits.ToSimUnits(rectangleitem.Width), ConvertUnits.ToSimUnits(rectangleitem.Height), 1f); + b.Position = rectangleitem.getSimPosition(); + //b.Position.X += + b.IsStatic = true; + b.BodyType = BodyType.Static; + b.UserData = this; + } } public virtual void LoadTextureItem(TextureItemProperties textureitem, Layer l) diff --git a/axios/Engine/Extensions/RectangleItemProperties.cs b/axios/Engine/Extensions/RectangleItemProperties.cs new file mode 100644 index 0000000..5541fcc --- /dev/null +++ b/axios/Engine/Extensions/RectangleItemProperties.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.Xna.Framework; +using Gleed2D.InGame; +using FarseerPhysics.SamplesFramework; + +namespace Axios.Engine.Extensions +{ + public static class AxiosExtensions_RectangleItemProperties + { + public static Vector2 getSimPosition(this RectangleItemProperties prop) + { + Vector2 pos = ConvertUnits.ToSimUnits(prop.Position); + pos.X += ConvertUnits.ToSimUnits(prop.Width / 2); + pos.Y += ConvertUnits.ToSimUnits(prop.Height / 2); + return pos; + } + } +} diff --git a/axios/Engine/Extensions/Vector2.cs b/axios/Engine/Extensions/Vector2.cs new file mode 100644 index 0000000..3fe494b --- /dev/null +++ b/axios/Engine/Extensions/Vector2.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.Xna.Framework; +using Gleed2D.InGame; +using FarseerPhysics.SamplesFramework; + +namespace Axios.Engine.Extensions +{ + public static class AxiosExtensions_Vector2 + { + public static Vector2 toSimUnits(this Vector2 vec) + { + return ConvertUnits.ToSimUnits(vec); + } + + public static Vector2 toDisplayUnits(this Vector2 vec) + { + return ConvertUnits.ToDisplayUnits(vec); + } + } +}