From 3a164d5385154cb7d708db688d2c547c10d41280 Mon Sep 17 00:00:00 2001 From: Lucas Girouard-Stranks Date: Sat, 4 Mar 2017 15:18:11 -0800 Subject: [PATCH] Tiled Fix (#349) * Tiled fix. * Remove bat file. --- Dependencies/MonoGame.Framework.dll | Bin 190464 -> 0 bytes .../Demo.Animations/Demo.Animations.csproj | 13 +- .../MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.Animations/packages.config | 2 +- .../Demos/Demo.Batching/Content/Content.mgcb | 4 +- .../Demos/Demo.Batching/Demo.Batching.csproj | 15 +- Source/Demos/Demo.Batching/Game1.cs | 45 ++-- .../MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.Batching/packages.config | 2 +- .../Demo.BitmapFonts/Demo.BitmapFonts.csproj | 18 +- Source/Demos/Demo.BitmapFonts/Game2.cs | 1 + .../MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.BitmapFonts/packages.config | 2 +- Source/Demos/Demo.Camera/Demo.Camera.csproj | 13 +- .../Demo.Camera/MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.Camera/packages.config | 2 +- .../Demo.EntityComponentSystem.csproj | 13 +- .../MonoGame.Framework.dll.config | 9 + .../packages.config | 2 +- Source/Demos/Demo.Gui/Demo.Gui.csproj | 13 +- .../Demo.Gui/MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.Gui/packages.config | 2 +- .../Demo.InputListeners.csproj | 13 +- .../MonoGame.Framework.dll.config | 9 + .../Demos/Demo.InputListeners/packages.config | 2 +- .../Demo.NuclexGui/Demo.NuclexGui.csproj | 13 +- .../MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.NuclexGui/packages.config | 2 +- .../Demo.Particles/Demo.Particles.csproj | 13 +- .../MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.Particles/packages.config | 2 +- .../Demo.Platformer/Demo.Platformer.csproj | 13 +- .../MonoGame.Framework.dll.config | 9 + .../Demo.Platformer/Screens/GameScreen.cs | 2 +- Source/Demos/Demo.Platformer/packages.config | 2 +- .../Demo.SceneGraphs/Demo.SceneGraphs.csproj | 13 +- .../MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.SceneGraphs/packages.config | 2 +- Source/Demos/Demo.Screens/Demo.Screens.csproj | 13 +- .../MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.Screens/packages.config | 2 +- .../Demo.SpaceGame/Demo.SpaceGame.csproj | 15 +- .../MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.SpaceGame/packages.config | 2 +- .../Demo.SpriteSheetAnimatons.csproj | 13 +- .../Demos/Demo.SpriteSheetAnimations/Game1.cs | 2 +- .../MonoGame.Framework.dll.config | 9 + .../packages.config | 2 +- Source/Demos/Demo.Sprites/Demo.Sprites.csproj | 13 +- .../MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.Sprites/packages.config | 2 +- Source/Demos/Demo.TiledMaps/CustomEffect.cs | 24 +++ .../Demo.TiledMaps/Demo.TiledMaps.csproj | 14 +- Source/Demos/Demo.TiledMaps/Game1.cs | 20 +- .../MonoGame.Framework.dll.config | 9 + Source/Demos/Demo.TiledMaps/packages.config | 2 +- .../Demo.ViewportAdapters.csproj | 13 +- .../MonoGame.Framework.dll.config | 9 + .../Demo.ViewportAdapters/packages.config | 2 +- .../MonoGame.Extended.Collisions.csproj | 13 +- .../packages.config | 4 + .../TiledMapLayerAnimatedModelContent.cs | 3 +- .../Graphics/TiledMapLayerModelContent.cs | 13 +- ...ame.Extended.Content.Pipeline.Tiled.csproj | 78 ++++--- .../Properties/AssemblyInfo.cs | 1 - .../{ => Tiled}/ContentWriterExtensions.cs | 0 .../{ => Tiled}/TiledMapContent.cs | 1 - .../{ => Tiled}/TiledMapEllipseContent.cs | 0 .../{ => Tiled}/TiledMapImageContent.cs | 0 .../{ => Tiled}/TiledMapImageLayerContent.cs | 0 .../{ => Tiled}/TiledMapImporter.cs | 0 .../{ => Tiled}/TiledMapLayerContent.cs | 2 +- .../{ => Tiled}/TiledMapObjectContent.cs | 0 .../TiledMapObjectDrawOrderContent.cs | 0 .../{ => Tiled}/TiledMapObjectLayerContent.cs | 0 .../{ => Tiled}/TiledMapOrientationContent.cs | 0 .../{ => Tiled}/TiledMapPolygonContent.cs | 0 .../{ => Tiled}/TiledMapPolylineContent.cs | 0 .../{ => Tiled}/TiledMapProcessor.cs | 97 +++++---- .../{ => Tiled}/TiledMapPropertyContent.cs | 0 .../{ => Tiled}/TiledMapTerrainContent.cs | 0 .../TiledMapTileDrawOrderContent.cs | 0 .../{ => Tiled}/TiledMapTileLayerContent.cs | 0 .../TiledMapTileLayerDataContent.cs | 5 + .../{ => Tiled}/TiledMapTileOffsetContent.cs | 0 .../{ => Tiled}/TiledMapTilesetContent.cs | 2 - ...iledMapTilesetTileAnimationFrameContent.cs | 0 .../{ => Tiled}/TiledMapTilesetTileContent.cs | 0 .../{ => Tiled}/TiledMapWriter.cs | 6 +- .../TiledMapConstants.cs | 19 -- .../TiledMapTileContent.cs | 33 --- .../Animations/AstridAnimatorWriter.cs | 3 +- .../BitmapFonts/BitmapFontWriter.cs | 5 +- .../MonoGame.Extended.Content.Pipeline.csproj | 6 - .../TextureAtlases/TexturePackerWriter.cs | 5 +- .../Effects/DefaultEffect2D.cs | 74 ------- .../Effects/Resources/DefaultEffect2D.fx | 50 ----- .../Effects/Resources/DefaultEffect2D.mgfxo | Bin 1390 -> 0 bytes .../Effects/Resources/compile.bat | 6 - .../{ => Graphics}/Batcher.cs | 21 +- .../{ => Graphics}/Batcher2D.cs | 22 +- .../Graphics/Effects/DefaultEffect.cs | 203 ++++++++++++++++++ .../{ => Graphics}/Effects/EffectResource.cs | 31 +-- .../Effects/ITextureEffect.cs} | 2 +- .../Effects/MatrixChainEffect.cs | 97 +++++---- .../Resources/DefaultEffect.dx11.mgfxo | Bin 0 -> 4721 bytes .../Effects/Resources/DefaultEffect.fx | 71 ++++++ .../Effects/Resources/DefaultEffect.ogl.mgfxo | Bin 0 -> 4718 bytes .../Graphics/Effects/Resources/Macros.fxh | 53 +++++ .../Effects/Resources/RebuildEffects.bat | 15 ++ .../Graphics/Effects/Resources/Structures.fxh | 51 +++++ .../{ => Graphics}/FlipFlags.cs | 0 .../Geometry/GeometryBuilder.cs | 0 .../Geometry/GeometryBuilder2D.cs | 0 .../{ => Graphics}/IBatchDrawCallInfo.cs | 0 .../{ => Graphics}/IMatrixChainEffect.cs | 0 .../{ => Graphics}/PrimitiveTypeExtensions.cs | 0 .../MonoGame.Extended.Graphics.csproj | 46 ++-- .../packages.config | 4 + .../MonoGame.Extended.Gui.csproj | 4 +- Source/MonoGame.Extended.Gui/packages.config | 1 + Source/MonoGame.Extended.Tiled.nuspec | 1 + .../Graphics/Effects/ITiledMapEffect.cs | 9 + .../Graphics/Effects/TiledMapEffect.cs | 32 +++ .../Graphics/ITiledMapEffect.cs | 11 - .../Graphics/TiledMapDefaultEffect.cs | 19 -- .../Graphics/TiledMapLayerAnimatedModel.cs | 8 +- .../Graphics/TiledMapLayerModel.cs | 2 +- .../Graphics/TiledMapRenderer.cs | 36 ++-- .../MonoGame.Extended.Tiled.csproj | 69 +++--- .../{ => Tiled}/ContentReaderExtensions.cs | 0 .../{ => Tiled}/TiledMap.cs | 1 - .../{ => Tiled}/TiledMapEllipseObject.cs | 0 .../TiledMapHelper.cs} | 14 ++ .../{ => Tiled}/TiledMapImageLayer.cs | 0 .../{ => Tiled}/TiledMapLayer.cs | 2 +- .../{ => Tiled}/TiledMapLayerType.cs | 0 .../{ => Tiled}/TiledMapObject.cs | 0 .../{ => Tiled}/TiledMapObjectDrawOrder.cs | 0 .../{ => Tiled}/TiledMapObjectLayer.cs | 0 .../{ => Tiled}/TiledMapObjectType.cs | 0 .../{ => Tiled}/TiledMapOrientation.cs | 0 .../{ => Tiled}/TiledMapPolygonObject.cs | 0 .../{ => Tiled}/TiledMapPolylineObject.cs | 0 .../{ => Tiled}/TiledMapProperties.cs | 0 .../{ => Tiled}/TiledMapReader.cs | 2 +- .../{ => Tiled}/TiledMapRectangleObject.cs | 0 .../{ => Tiled}/TiledMapTile.cs | 0 .../{ => Tiled}/TiledMapTileDrawOrder.cs | 0 .../{ => Tiled}/TiledMapTileFlipFlags.cs | 0 .../{ => Tiled}/TiledMapTileLayer.cs | 0 .../{ => Tiled}/TiledMapTileObject.cs | 0 .../{ => Tiled}/TiledMapTileset.cs | 0 .../TiledMapTilesetAnimatedTile.cs | 0 .../{ => Tiled}/TiledMapTilesetTile.cs | 0 .../TiledMapTilesetTileAnimationFrame.cs | 0 .../MonoGame.Extended.Tiled/packages.config | 4 + .../MonoGame.Extended.csproj | 6 +- Source/MonoGame.Extended/packages.config | 1 + .../MonoGame.Extended.Tests/MockGameWindow.cs | 26 ++- 160 files changed, 1093 insertions(+), 713 deletions(-) delete mode 100644 Dependencies/MonoGame.Framework.dll create mode 100644 Source/Demos/Demo.Animations/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.Batching/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.BitmapFonts/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.Camera/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.EntityComponentSystem/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.Gui/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.InputListeners/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.NuclexGui/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.Particles/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.Platformer/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.SceneGraphs/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.Screens/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.SpaceGame/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.SpriteSheetAnimations/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.Sprites/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.TiledMaps/CustomEffect.cs create mode 100644 Source/Demos/Demo.TiledMaps/MonoGame.Framework.dll.config create mode 100644 Source/Demos/Demo.ViewportAdapters/MonoGame.Framework.dll.config create mode 100644 Source/MonoGame.Extended.Collisions/packages.config rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/ContentWriterExtensions.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapContent.cs (97%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapEllipseContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapImageContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapImageLayerContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapImporter.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapLayerContent.cs (96%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapObjectContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapObjectDrawOrderContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapObjectLayerContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapOrientationContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapPolygonContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapPolylineContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapProcessor.cs (84%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapPropertyContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapTerrainContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapTileDrawOrderContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapTileLayerContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapTileLayerDataContent.cs (85%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapTileOffsetContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapTilesetContent.cs (95%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapTilesetTileAnimationFrameContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapTilesetTileContent.cs (100%) rename Source/MonoGame.Extended.Content.Pipeline.Tiled/{ => Tiled}/TiledMapWriter.cs (97%) delete mode 100644 Source/MonoGame.Extended.Content.Pipeline.Tiled/TiledMapConstants.cs delete mode 100644 Source/MonoGame.Extended.Content.Pipeline.Tiled/TiledMapTileContent.cs delete mode 100644 Source/MonoGame.Extended.Graphics/Effects/DefaultEffect2D.cs delete mode 100644 Source/MonoGame.Extended.Graphics/Effects/Resources/DefaultEffect2D.fx delete mode 100644 Source/MonoGame.Extended.Graphics/Effects/Resources/DefaultEffect2D.mgfxo delete mode 100644 Source/MonoGame.Extended.Graphics/Effects/Resources/compile.bat rename Source/MonoGame.Extended.Graphics/{ => Graphics}/Batcher.cs (98%) rename Source/MonoGame.Extended.Graphics/{ => Graphics}/Batcher2D.cs (97%) create mode 100644 Source/MonoGame.Extended.Graphics/Graphics/Effects/DefaultEffect.cs rename Source/MonoGame.Extended.Graphics/{ => Graphics}/Effects/EffectResource.cs (77%) rename Source/MonoGame.Extended.Graphics/{Effects/ITexture2DEffect.cs => Graphics/Effects/ITextureEffect.cs} (92%) rename Source/MonoGame.Extended.Graphics/{ => Graphics}/Effects/MatrixChainEffect.cs (64%) create mode 100644 Source/MonoGame.Extended.Graphics/Graphics/Effects/Resources/DefaultEffect.dx11.mgfxo create mode 100644 Source/MonoGame.Extended.Graphics/Graphics/Effects/Resources/DefaultEffect.fx create mode 100644 Source/MonoGame.Extended.Graphics/Graphics/Effects/Resources/DefaultEffect.ogl.mgfxo create mode 100644 Source/MonoGame.Extended.Graphics/Graphics/Effects/Resources/Macros.fxh create mode 100644 Source/MonoGame.Extended.Graphics/Graphics/Effects/Resources/RebuildEffects.bat create mode 100644 Source/MonoGame.Extended.Graphics/Graphics/Effects/Resources/Structures.fxh rename Source/MonoGame.Extended.Graphics/{ => Graphics}/FlipFlags.cs (100%) rename Source/MonoGame.Extended.Graphics/{ => Graphics}/Geometry/GeometryBuilder.cs (100%) rename Source/MonoGame.Extended.Graphics/{ => Graphics}/Geometry/GeometryBuilder2D.cs (100%) rename Source/MonoGame.Extended.Graphics/{ => Graphics}/IBatchDrawCallInfo.cs (100%) rename Source/MonoGame.Extended.Graphics/{ => Graphics}/IMatrixChainEffect.cs (100%) rename Source/MonoGame.Extended.Graphics/{ => Graphics}/PrimitiveTypeExtensions.cs (100%) create mode 100644 Source/MonoGame.Extended.Graphics/packages.config create mode 100644 Source/MonoGame.Extended.Tiled/Graphics/Effects/ITiledMapEffect.cs create mode 100644 Source/MonoGame.Extended.Tiled/Graphics/Effects/TiledMapEffect.cs delete mode 100644 Source/MonoGame.Extended.Tiled/Graphics/ITiledMapEffect.cs delete mode 100644 Source/MonoGame.Extended.Tiled/Graphics/TiledMapDefaultEffect.cs rename Source/MonoGame.Extended.Tiled/{ => Tiled}/ContentReaderExtensions.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMap.cs (99%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapEllipseObject.cs (100%) rename Source/MonoGame.Extended.Tiled/{TiledMapHelper..cs => Tiled/TiledMapHelper.cs} (59%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapImageLayer.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapLayer.cs (97%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapLayerType.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapObject.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapObjectDrawOrder.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapObjectLayer.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapObjectType.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapOrientation.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapPolygonObject.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapPolylineObject.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapProperties.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapReader.cs (98%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapRectangleObject.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapTile.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapTileDrawOrder.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapTileFlipFlags.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapTileLayer.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapTileObject.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapTileset.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapTilesetAnimatedTile.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapTilesetTile.cs (100%) rename Source/MonoGame.Extended.Tiled/{ => Tiled}/TiledMapTilesetTileAnimationFrame.cs (100%) create mode 100644 Source/MonoGame.Extended.Tiled/packages.config diff --git a/Dependencies/MonoGame.Framework.dll b/Dependencies/MonoGame.Framework.dll deleted file mode 100644 index deb93c46808c8ef11d8d24a4f461e01af1e391c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190464 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/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 t6=BZ&Vg89fJz6Gle;P|BEE6f4Kk(n - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -63,6 +55,7 @@ + diff --git a/Source/Demos/Demo.Animations/MonoGame.Framework.dll.config b/Source/Demos/Demo.Animations/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.Animations/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Animations/packages.config b/Source/Demos/Demo.Animations/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.Animations/packages.config +++ b/Source/Demos/Demo.Animations/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.Batching/Content/Content.mgcb b/Source/Demos/Demo.Batching/Content/Content.mgcb index 1c7cbe53..8ac0f99e 100644 --- a/Source/Demos/Demo.Batching/Content/Content.mgcb +++ b/Source/Demos/Demo.Batching/Content/Content.mgcb @@ -51,6 +51,6 @@ /processorParam:GenerateMipmaps=False /processorParam:PremultiplyAlpha=True /processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False /processorParam:TextureFormat=Color -/build:montserrat-32_0.png - +/build:montserrat-32_0.png \ No newline at end of file diff --git a/Source/Demos/Demo.Batching/Demo.Batching.csproj b/Source/Demos/Demo.Batching/Demo.Batching.csproj index d7359488..7a7dfee8 100644 --- a/Source/Demos/Demo.Batching/Demo.Batching.csproj +++ b/Source/Demos/Demo.Batching/Demo.Batching.csproj @@ -45,16 +45,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -65,6 +57,8 @@ + + @@ -81,7 +75,6 @@ - diff --git a/Source/Demos/Demo.Batching/Game1.cs b/Source/Demos/Demo.Batching/Game1.cs index ef0f01e2..51026027 100644 --- a/Source/Demos/Demo.Batching/Game1.cs +++ b/Source/Demos/Demo.Batching/Game1.cs @@ -1,5 +1,4 @@ using System; -using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; @@ -25,13 +24,13 @@ namespace Demo.Batching private readonly GraphicsDeviceManager _graphicsDeviceManager; private Batcher2D _batcher; - private readonly StringBuilder _stringBuilder = new StringBuilder(); private SpriteBatch _spriteBatch; private BitmapFont _bitmapFont; private Texture2D _spriteTexture1; private Texture2D _spriteTexture2; private Vector2 _spriteOrigin; - private DefaultEffect2D _effect; + private Vector2 _spriteScale; + private DefaultEffect _effect; private readonly Random _random = new Random(); private readonly FramesPerSecondCounter _fpsCounter = new FramesPerSecondCounter(); @@ -52,8 +51,8 @@ namespace Demo.Batching { // also disable v-sync so max frames can be measured otherwise draw frames would be capped to the screen's refresh rate SynchronizeWithVerticalRetrace = false, - PreferredBackBufferWidth = 1024, - PreferredBackBufferHeight = 768 + PreferredBackBufferWidth = 800, + PreferredBackBufferHeight = 600 }; } @@ -61,7 +60,11 @@ namespace Demo.Batching { var graphicsDevice = GraphicsDevice; - _effect = new DefaultEffect2D(graphicsDevice); + _effect = new DefaultEffect(graphicsDevice) + { + TextureEnabled = true, + VertexColorEnabled = true + }; _batcher = new Batcher2D(graphicsDevice); _spriteBatch = new SpriteBatch(graphicsDevice); _bitmapFont = Content.Load("montserrat-32"); @@ -70,6 +73,7 @@ namespace Demo.Batching _spriteTexture1 = Content.Load("logo-square-128"); _spriteTexture2 = Content.Load("logo-square-128-copy"); _spriteOrigin = new Vector2(_spriteTexture1.Width * 0.5f, _spriteTexture1.Height * 0.5f); + _spriteScale = new Vector2(0.5f); var viewport = GraphicsDevice.Viewport; @@ -99,13 +103,13 @@ namespace Demo.Batching var sprite = _sprites[index]; if (index % 2 == 0) - sprite.Rotation = (sprite.Rotation + MathHelper.ToRadians(1)) % MathHelper.TwoPi; + sprite.Rotation = (sprite.Rotation + MathHelper.ToRadians(0.5f)) % MathHelper.TwoPi; else - sprite.Rotation = (sprite.Rotation - MathHelper.ToRadians(1) + MathHelper.TwoPi) % MathHelper.TwoPi; + sprite.Rotation = (sprite.Rotation - MathHelper.ToRadians(0.5f) + MathHelper.TwoPi) % MathHelper.TwoPi; sprite.Color = ColorHelper.FromHsl(sprite.Rotation / MathHelper.TwoPi, 0.5f, 0.3f); - sprite.TransformMatrix = Matrix2D.CreateFrom(sprite.Position, sprite.Rotation, null, _spriteOrigin); + sprite.TransformMatrix = Matrix2D.CreateFrom(sprite.Position, sprite.Rotation, _spriteScale, _spriteOrigin); _sprites[index] = sprite; } @@ -117,9 +121,11 @@ namespace Demo.Batching protected override void Draw(GameTime gameTime) { + Window.Title = _fpsCounter.FramesPerSecond.ToString(); + var graphicsDevice = GraphicsDevice; - graphicsDevice.Clear(Color.Black); + graphicsDevice.Clear(Color.CornflowerBlue); // update the matrices _worldMatrix = Matrix.Identity; @@ -131,21 +137,6 @@ namespace Demo.Batching DrawSpritesWithBatcher2D(); //DrawSpritesWithSpriteBatch(); - //_batcher.Begin(viewMatrix: _viewMatrix, projectionMatrix: _projectionMatrix); - - //// use StringBuilder to prevent garbage - //_stringBuilder.Clear(); - //_stringBuilder.Append("FPS: "); - //_stringBuilder.Append(_fpsCounter.FramesPerSecond); // but, this StringBulder method causes a small amount of garbage... - //_batcher.DrawString(_bitmapFont, _stringBuilder, Vector2.Zero); - - //_stringBuilder.Clear(); - //_stringBuilder.Append("Draw Calls: "); - //_stringBuilder.Append(GraphicsDevice.Metrics.DrawCount); - //_batcher.DrawString(_bitmapFont, _stringBuilder, new Vector2(0, _bitmapFont.LineHeight)); - - //_batcher.End(); - base.Draw(gameTime); _fpsCounter.Draw(gameTime); @@ -153,7 +144,7 @@ namespace Demo.Batching private void DrawSpritesWithBatcher2D() { - _batcher.Begin(viewMatrix: _viewMatrix, projectionMatrix: _projectionMatrix); + _batcher.Begin(_viewMatrix, _projectionMatrix, effect: _effect); // ReSharper disable once ForCanBeConvertedToForeach for (var index = 0; index < _sprites.Length; index++) @@ -175,7 +166,7 @@ namespace Demo.Batching for (var index = 0; index < _sprites.Length; index++) { var sprite = _sprites[index]; - _spriteBatch.Draw(sprite.Texture, sprite.Position, rotation: sprite.Rotation, origin: _spriteOrigin, color: sprite.Color); + _spriteBatch.Draw(sprite.Texture, sprite.Position, null, sprite.Color, sprite.Rotation, _spriteOrigin, _spriteScale, SpriteEffects.None, 0); } _spriteBatch.End(); diff --git a/Source/Demos/Demo.Batching/MonoGame.Framework.dll.config b/Source/Demos/Demo.Batching/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.Batching/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Batching/packages.config b/Source/Demos/Demo.Batching/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.Batching/packages.config +++ b/Source/Demos/Demo.Batching/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.BitmapFonts/Demo.BitmapFonts.csproj b/Source/Demos/Demo.BitmapFonts/Demo.BitmapFonts.csproj index 8fdcb4c8..52d18083 100644 --- a/Source/Demos/Demo.BitmapFonts/Demo.BitmapFonts.csproj +++ b/Source/Demos/Demo.BitmapFonts/Demo.BitmapFonts.csproj @@ -41,16 +41,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -65,9 +57,9 @@ - + @@ -82,6 +74,10 @@ + + {9B3AB8A1-78AA-471A-AFD0-B10B932115BC} + MonoGame.Extended.Graphics + {41724c52-3d50-45bb-81eb-3c8a247eafd1} MonoGame.Extended diff --git a/Source/Demos/Demo.BitmapFonts/Game2.cs b/Source/Demos/Demo.BitmapFonts/Game2.cs index b3566b68..18c00552 100644 --- a/Source/Demos/Demo.BitmapFonts/Game2.cs +++ b/Source/Demos/Demo.BitmapFonts/Game2.cs @@ -3,6 +3,7 @@ using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using MonoGame.Extended; using MonoGame.Extended.BitmapFonts; +using MonoGame.Extended.Graphics.Effects; using MonoGame.Extended.Shapes; using MonoGame.Extended.ViewportAdapters; diff --git a/Source/Demos/Demo.BitmapFonts/MonoGame.Framework.dll.config b/Source/Demos/Demo.BitmapFonts/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.BitmapFonts/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.BitmapFonts/packages.config b/Source/Demos/Demo.BitmapFonts/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.BitmapFonts/packages.config +++ b/Source/Demos/Demo.BitmapFonts/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.Camera/Demo.Camera.csproj b/Source/Demos/Demo.Camera/Demo.Camera.csproj index c997a46b..1acce489 100644 --- a/Source/Demos/Demo.Camera/Demo.Camera.csproj +++ b/Source/Demos/Demo.Camera/Demo.Camera.csproj @@ -42,16 +42,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -72,6 +64,7 @@ + diff --git a/Source/Demos/Demo.Camera/MonoGame.Framework.dll.config b/Source/Demos/Demo.Camera/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.Camera/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Camera/packages.config b/Source/Demos/Demo.Camera/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.Camera/packages.config +++ b/Source/Demos/Demo.Camera/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.EntityComponentSystem/Demo.EntityComponentSystem.csproj b/Source/Demos/Demo.EntityComponentSystem/Demo.EntityComponentSystem.csproj index 7d3f5ab2..17305714 100644 --- a/Source/Demos/Demo.EntityComponentSystem/Demo.EntityComponentSystem.csproj +++ b/Source/Demos/Demo.EntityComponentSystem/Demo.EntityComponentSystem.csproj @@ -42,16 +42,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -64,6 +56,7 @@ + diff --git a/Source/Demos/Demo.EntityComponentSystem/MonoGame.Framework.dll.config b/Source/Demos/Demo.EntityComponentSystem/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.EntityComponentSystem/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.EntityComponentSystem/packages.config b/Source/Demos/Demo.EntityComponentSystem/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.EntityComponentSystem/packages.config +++ b/Source/Demos/Demo.EntityComponentSystem/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.Gui/Demo.Gui.csproj b/Source/Demos/Demo.Gui/Demo.Gui.csproj index c085e1bd..0de58b49 100644 --- a/Source/Demos/Demo.Gui/Demo.Gui.csproj +++ b/Source/Demos/Demo.Gui/Demo.Gui.csproj @@ -42,22 +42,14 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll True - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll - True - @@ -93,6 +85,7 @@ PreserveNewest + diff --git a/Source/Demos/Demo.Gui/MonoGame.Framework.dll.config b/Source/Demos/Demo.Gui/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.Gui/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Gui/packages.config b/Source/Demos/Demo.Gui/packages.config index fe377356..e6cd2b7c 100644 --- a/Source/Demos/Demo.Gui/packages.config +++ b/Source/Demos/Demo.Gui/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.InputListeners/Demo.InputListeners.csproj b/Source/Demos/Demo.InputListeners/Demo.InputListeners.csproj index 63bdc30e..b760e356 100644 --- a/Source/Demos/Demo.InputListeners/Demo.InputListeners.csproj +++ b/Source/Demos/Demo.InputListeners/Demo.InputListeners.csproj @@ -42,16 +42,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -66,6 +58,7 @@ + diff --git a/Source/Demos/Demo.InputListeners/MonoGame.Framework.dll.config b/Source/Demos/Demo.InputListeners/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.InputListeners/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.InputListeners/packages.config b/Source/Demos/Demo.InputListeners/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.InputListeners/packages.config +++ b/Source/Demos/Demo.InputListeners/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.NuclexGui/Demo.NuclexGui.csproj b/Source/Demos/Demo.NuclexGui/Demo.NuclexGui.csproj index 82a089d0..d7227235 100644 --- a/Source/Demos/Demo.NuclexGui/Demo.NuclexGui.csproj +++ b/Source/Demos/Demo.NuclexGui/Demo.NuclexGui.csproj @@ -42,16 +42,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -66,6 +58,7 @@ + diff --git a/Source/Demos/Demo.NuclexGui/MonoGame.Framework.dll.config b/Source/Demos/Demo.NuclexGui/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.NuclexGui/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.NuclexGui/packages.config b/Source/Demos/Demo.NuclexGui/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.NuclexGui/packages.config +++ b/Source/Demos/Demo.NuclexGui/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.Particles/Demo.Particles.csproj b/Source/Demos/Demo.Particles/Demo.Particles.csproj index d34619cb..4fa393f6 100644 --- a/Source/Demos/Demo.Particles/Demo.Particles.csproj +++ b/Source/Demos/Demo.Particles/Demo.Particles.csproj @@ -42,16 +42,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -63,6 +55,7 @@ + diff --git a/Source/Demos/Demo.Particles/MonoGame.Framework.dll.config b/Source/Demos/Demo.Particles/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.Particles/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Particles/packages.config b/Source/Demos/Demo.Particles/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.Particles/packages.config +++ b/Source/Demos/Demo.Particles/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.Platformer/Demo.Platformer.csproj b/Source/Demos/Demo.Platformer/Demo.Platformer.csproj index 72727bd8..0ea46680 100644 --- a/Source/Demos/Demo.Platformer/Demo.Platformer.csproj +++ b/Source/Demos/Demo.Platformer/Demo.Platformer.csproj @@ -55,16 +55,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -80,6 +72,7 @@ + diff --git a/Source/Demos/Demo.Platformer/MonoGame.Framework.dll.config b/Source/Demos/Demo.Platformer/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.Platformer/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Platformer/Screens/GameScreen.cs b/Source/Demos/Demo.Platformer/Screens/GameScreen.cs index 2d30cb58..899b822e 100644 --- a/Source/Demos/Demo.Platformer/Screens/GameScreen.cs +++ b/Source/Demos/Demo.Platformer/Screens/GameScreen.cs @@ -11,7 +11,7 @@ using MonoGame.Extended.Entities; using MonoGame.Extended.Entities.Systems; using MonoGame.Extended.Screens; using MonoGame.Extended.Tiled; -using MonoGame.Extended.Tiled.Graphics; +using MonoGame.Extended.Graphics; using MonoGame.Extended.ViewportAdapters; namespace Demo.Platformer.Screens diff --git a/Source/Demos/Demo.Platformer/packages.config b/Source/Demos/Demo.Platformer/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.Platformer/packages.config +++ b/Source/Demos/Demo.Platformer/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.SceneGraphs/Demo.SceneGraphs.csproj b/Source/Demos/Demo.SceneGraphs/Demo.SceneGraphs.csproj index aba8bc36..6da4b964 100644 --- a/Source/Demos/Demo.SceneGraphs/Demo.SceneGraphs.csproj +++ b/Source/Demos/Demo.SceneGraphs/Demo.SceneGraphs.csproj @@ -42,16 +42,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -67,6 +59,7 @@ + diff --git a/Source/Demos/Demo.SceneGraphs/MonoGame.Framework.dll.config b/Source/Demos/Demo.SceneGraphs/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.SceneGraphs/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.SceneGraphs/packages.config b/Source/Demos/Demo.SceneGraphs/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.SceneGraphs/packages.config +++ b/Source/Demos/Demo.SceneGraphs/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.Screens/Demo.Screens.csproj b/Source/Demos/Demo.Screens/Demo.Screens.csproj index dd30b4bf..6ca1df45 100644 --- a/Source/Demos/Demo.Screens/Demo.Screens.csproj +++ b/Source/Demos/Demo.Screens/Demo.Screens.csproj @@ -51,16 +51,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -69,6 +61,7 @@ + diff --git a/Source/Demos/Demo.Screens/MonoGame.Framework.dll.config b/Source/Demos/Demo.Screens/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.Screens/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Screens/packages.config b/Source/Demos/Demo.Screens/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.Screens/packages.config +++ b/Source/Demos/Demo.Screens/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.SpaceGame/Demo.SpaceGame.csproj b/Source/Demos/Demo.SpaceGame/Demo.SpaceGame.csproj index 2d7db977..e871773d 100644 --- a/Source/Demos/Demo.SpaceGame/Demo.SpaceGame.csproj +++ b/Source/Demos/Demo.SpaceGame/Demo.SpaceGame.csproj @@ -50,16 +50,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -68,6 +60,8 @@ + + @@ -92,7 +86,6 @@ - diff --git a/Source/Demos/Demo.SpaceGame/MonoGame.Framework.dll.config b/Source/Demos/Demo.SpaceGame/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.SpaceGame/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.SpaceGame/packages.config b/Source/Demos/Demo.SpaceGame/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.SpaceGame/packages.config +++ b/Source/Demos/Demo.SpaceGame/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Demo.SpriteSheetAnimatons.csproj b/Source/Demos/Demo.SpriteSheetAnimations/Demo.SpriteSheetAnimatons.csproj index 69ed85ed..c91c35fb 100644 --- a/Source/Demos/Demo.SpriteSheetAnimations/Demo.SpriteSheetAnimatons.csproj +++ b/Source/Demos/Demo.SpriteSheetAnimations/Demo.SpriteSheetAnimatons.csproj @@ -43,16 +43,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -75,6 +67,7 @@ + diff --git a/Source/Demos/Demo.SpriteSheetAnimations/Game1.cs b/Source/Demos/Demo.SpriteSheetAnimations/Game1.cs index 10042d03..c6899520 100644 --- a/Source/Demos/Demo.SpriteSheetAnimations/Game1.cs +++ b/Source/Demos/Demo.SpriteSheetAnimations/Game1.cs @@ -9,7 +9,7 @@ using MonoGame.Extended.Collisions; using MonoGame.Extended.Sprites; using MonoGame.Extended.TextureAtlases; using MonoGame.Extended.Tiled; -using MonoGame.Extended.Tiled.Graphics; +using MonoGame.Extended.Graphics; using MonoGame.Extended.ViewportAdapters; namespace Demo.SpriteSheetAnimations diff --git a/Source/Demos/Demo.SpriteSheetAnimations/MonoGame.Framework.dll.config b/Source/Demos/Demo.SpriteSheetAnimations/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.SpriteSheetAnimations/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.SpriteSheetAnimations/packages.config b/Source/Demos/Demo.SpriteSheetAnimations/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.SpriteSheetAnimations/packages.config +++ b/Source/Demos/Demo.SpriteSheetAnimations/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.Sprites/Demo.Sprites.csproj b/Source/Demos/Demo.Sprites/Demo.Sprites.csproj index 75ac4638..6839aef4 100644 --- a/Source/Demos/Demo.Sprites/Demo.Sprites.csproj +++ b/Source/Demos/Demo.Sprites/Demo.Sprites.csproj @@ -42,16 +42,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -68,6 +60,7 @@ + diff --git a/Source/Demos/Demo.Sprites/MonoGame.Framework.dll.config b/Source/Demos/Demo.Sprites/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.Sprites/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.Sprites/packages.config b/Source/Demos/Demo.Sprites/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.Sprites/packages.config +++ b/Source/Demos/Demo.Sprites/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.TiledMaps/CustomEffect.cs b/Source/Demos/Demo.TiledMaps/CustomEffect.cs new file mode 100644 index 00000000..e4dd73b1 --- /dev/null +++ b/Source/Demos/Demo.TiledMaps/CustomEffect.cs @@ -0,0 +1,24 @@ +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Extended.Graphics.Effects; + +namespace Demo.TiledMaps +{ + public class CustomEffect : DefaultEffect, ITiledMapEffect + { + public CustomEffect(GraphicsDevice graphicsDevice) + : base(graphicsDevice) + { + } + + public CustomEffect(GraphicsDevice graphicsDevice, byte[] byteCode) + : base(graphicsDevice, byteCode) + { + + } + + public CustomEffect(Effect cloneSource) + : base(cloneSource) + { + } + } +} diff --git a/Source/Demos/Demo.TiledMaps/Demo.TiledMaps.csproj b/Source/Demos/Demo.TiledMaps/Demo.TiledMaps.csproj index 6bd081d9..5e0bc988 100644 --- a/Source/Demos/Demo.TiledMaps/Demo.TiledMaps.csproj +++ b/Source/Demos/Demo.TiledMaps/Demo.TiledMaps.csproj @@ -37,21 +37,14 @@ Icon.ico + - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -83,6 +76,7 @@ + diff --git a/Source/Demos/Demo.TiledMaps/Game1.cs b/Source/Demos/Demo.TiledMaps/Game1.cs index c3d8c4cf..ce657a18 100644 --- a/Source/Demos/Demo.TiledMaps/Game1.cs +++ b/Source/Demos/Demo.TiledMaps/Game1.cs @@ -5,9 +5,10 @@ using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using MonoGame.Extended; using MonoGame.Extended.BitmapFonts; +using MonoGame.Extended.Graphics; +using MonoGame.Extended.Graphics.Effects; using MonoGame.Extended.Sprites; using MonoGame.Extended.Tiled; -using MonoGame.Extended.Tiled.Graphics; using MonoGame.Extended.ViewportAdapters; namespace Demo.TiledMaps @@ -27,6 +28,7 @@ namespace Demo.TiledMaps private KeyboardState _previousKeyboardState = Keyboard.GetState(); private bool _showHelp; private TiledMap _map; + private Effect _customEffect; private Queue _availableMaps; @@ -34,13 +36,13 @@ namespace Demo.TiledMaps { _graphicsDeviceManager = new GraphicsDeviceManager(this) { - SynchronizeWithVerticalRetrace = true, + SynchronizeWithVerticalRetrace = false, PreferredBackBufferWidth = 1024, PreferredBackBufferHeight = 768 }; Content.RootDirectory = "Content"; IsMouseVisible = true; - IsFixedTimeStep = true; + IsFixedTimeStep = false; } protected override void Initialize() @@ -50,7 +52,6 @@ namespace Demo.TiledMaps _mapRenderer = new TiledMapRenderer(GraphicsDevice); Window.AllowUserResizing = true; - Window.Position = Point.Zero; _fpsCounter = new FramesPerSecondCounter(); @@ -69,6 +70,15 @@ namespace Demo.TiledMaps _map = LoadNextMap(); _camera.LookAt(new Vector2(_map.WidthInPixels, _map.HeightInPixels) * 0.5f); + + var effect = new CustomEffect(GraphicsDevice) + { + Alpha = 0.5f, + TextureEnabled = true, + VertexColorEnabled = false + }; + + _customEffect = effect; } private TiledMap LoadNextMap() @@ -178,7 +188,7 @@ namespace Demo.TiledMaps var viewMatrix = _camera.GetViewMatrix(); var projectionMatrix = Matrix.CreateOrthographicOffCenter(0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, 0, 0f, -1f); - _mapRenderer.Draw(_map, ref viewMatrix, ref projectionMatrix); + _mapRenderer.Draw(_map, ref viewMatrix, ref projectionMatrix, _customEffect); DrawText(); diff --git a/Source/Demos/Demo.TiledMaps/MonoGame.Framework.dll.config b/Source/Demos/Demo.TiledMaps/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.TiledMaps/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.TiledMaps/packages.config b/Source/Demos/Demo.TiledMaps/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.TiledMaps/packages.config +++ b/Source/Demos/Demo.TiledMaps/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/Demos/Demo.ViewportAdapters/Demo.ViewportAdapters.csproj b/Source/Demos/Demo.ViewportAdapters/Demo.ViewportAdapters.csproj index c35f7ce1..812464dc 100644 --- a/Source/Demos/Demo.ViewportAdapters/Demo.ViewportAdapters.csproj +++ b/Source/Demos/Demo.ViewportAdapters/Demo.ViewportAdapters.csproj @@ -43,16 +43,8 @@ - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\MonoGame.Framework.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\NVorbis.dll - True - - - ..\..\packages\MonoGame.Framework.DesktopGL.3.5.1.1679\lib\net40\OpenTK.dll + + ..\..\packages\MonoGame.Framework.DesktopGL.3.6.0.1625\lib\net40\MonoGame.Framework.dll True @@ -66,6 +58,7 @@ + diff --git a/Source/Demos/Demo.ViewportAdapters/MonoGame.Framework.dll.config b/Source/Demos/Demo.ViewportAdapters/MonoGame.Framework.dll.config new file mode 100644 index 00000000..09710ae4 --- /dev/null +++ b/Source/Demos/Demo.ViewportAdapters/MonoGame.Framework.dll.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/Demos/Demo.ViewportAdapters/packages.config b/Source/Demos/Demo.ViewportAdapters/packages.config index 777c5e44..9b38dcf7 100644 --- a/Source/Demos/Demo.ViewportAdapters/packages.config +++ b/Source/Demos/Demo.ViewportAdapters/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/MonoGame.Extended.Collisions/MonoGame.Extended.Collisions.csproj b/Source/MonoGame.Extended.Collisions/MonoGame.Extended.Collisions.csproj index e0dd9d95..4e03c217 100644 --- a/Source/MonoGame.Extended.Collisions/MonoGame.Extended.Collisions.csproj +++ b/Source/MonoGame.Extended.Collisions/MonoGame.Extended.Collisions.csproj @@ -45,11 +45,6 @@ - - - ..\..\Dependencies\MonoGame.Framework.dll - - {07B2ADE2-73E3-41C4-AEA1-D5566A5AB902} @@ -60,6 +55,14 @@ MonoGame.Extended + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + + + - - + + + + + + - - - - - - - - - - - + + + + + + + + + + + - + - - - - - ..\..\Dependencies\MonoGame.Framework.dll - + @@ -70,6 +69,11 @@ MonoGame.Extended + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + + + + {9b3ab8a1-78aa-471a-afd0-b10b932115bc} + MonoGame.Extended.Graphics + {41724c52-3d50-45bb-81eb-3c8a247eafd1} MonoGame.Extended - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - ..\..\Dependencies\MonoGame.Framework.dll + + + + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll diff --git a/Source/MonoGame.Extended.Tiled/ContentReaderExtensions.cs b/Source/MonoGame.Extended.Tiled/Tiled/ContentReaderExtensions.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/ContentReaderExtensions.cs rename to Source/MonoGame.Extended.Tiled/Tiled/ContentReaderExtensions.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMap.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMap.cs similarity index 99% rename from Source/MonoGame.Extended.Tiled/TiledMap.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMap.cs index 4a6474ec..7c552756 100644 --- a/Source/MonoGame.Extended.Tiled/TiledMap.cs +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMap.cs @@ -4,7 +4,6 @@ using System.Collections.ObjectModel; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; -using MonoGame.Extended.Tiled.Graphics; namespace MonoGame.Extended.Tiled { diff --git a/Source/MonoGame.Extended.Tiled/TiledMapEllipseObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapEllipseObject.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapEllipseObject.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapEllipseObject.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapHelper..cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapHelper.cs similarity index 59% rename from Source/MonoGame.Extended.Tiled/TiledMapHelper..cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapHelper.cs index 019c06b6..a397bc1a 100644 --- a/Source/MonoGame.Extended.Tiled/TiledMapHelper..cs +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapHelper.cs @@ -4,6 +4,20 @@ namespace MonoGame.Extended.Tiled { internal static class TiledMapHelper { + // 4 vertices per tile + public const int VerticesPerTile = 4; + // 2 triangles per tile (mesh), with each triangle indexing 3 out of 4 vertices, so 6 vertices + public const int IndicesPerTile = 6; + // by using ushort type for indices we are limited to indexing vertices from 0 to 65535 + // this limits us on how many vertices can fit inside a single vertex buffer (65536 vertices) + public const int MaximumVerticesPerModel = ushort.MaxValue + 1; + // and thus, we know how many tiles we can fit inside a vertex or index buffer (16384 tiles) + public const int MaximumTilesPerGeometryContent = MaximumVerticesPerModel / VerticesPerTile; + // and thus, we also know the maximum number of indices we can fit inside a single index buffer (98304 indices) + public const int MaximumIndicesPerModel = MaximumTilesPerGeometryContent * IndicesPerTile; + // these optimal maximum numbers of course are not considering texture bindings which would practically lower the actual number of tiles per vertex / index buffer + // thus, the reason why it is a good to have ONE giant tileset (at least per layer) + internal static Rectangle GetTileSourceRectangle(int localTileIdentifier, int tileWidth, int tileHeight, int columns, int margin, int spacing) { diff --git a/Source/MonoGame.Extended.Tiled/TiledMapImageLayer.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapImageLayer.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapImageLayer.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapImageLayer.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapLayer.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapLayer.cs similarity index 97% rename from Source/MonoGame.Extended.Tiled/TiledMapLayer.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapLayer.cs index 637c18ec..0a136edf 100644 --- a/Source/MonoGame.Extended.Tiled/TiledMapLayer.cs +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapLayer.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using Microsoft.Xna.Framework.Content; -using MonoGame.Extended.Tiled.Graphics; +using MonoGame.Extended.Graphics; namespace MonoGame.Extended.Tiled { diff --git a/Source/MonoGame.Extended.Tiled/TiledMapLayerType.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapLayerType.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapLayerType.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapLayerType.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObject.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapObject.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapObject.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapObjectDrawOrder.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectDrawOrder.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapObjectDrawOrder.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectDrawOrder.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapObjectLayer.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectLayer.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapObjectLayer.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectLayer.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapObjectType.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectType.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapObjectType.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapObjectType.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapOrientation.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapOrientation.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapOrientation.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapOrientation.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapPolygonObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapPolygonObject.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapPolygonObject.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapPolygonObject.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapPolylineObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapPolylineObject.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapPolylineObject.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapPolylineObject.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapProperties.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapProperties.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapProperties.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapProperties.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapReader.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapReader.cs similarity index 98% rename from Source/MonoGame.Extended.Tiled/TiledMapReader.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapReader.cs index dcb7975e..b5367437 100644 --- a/Source/MonoGame.Extended.Tiled/TiledMapReader.cs +++ b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapReader.cs @@ -1,6 +1,6 @@ using System; using Microsoft.Xna.Framework.Content; -using MonoGame.Extended.Tiled.Graphics; +using MonoGame.Extended.Graphics; namespace MonoGame.Extended.Tiled { diff --git a/Source/MonoGame.Extended.Tiled/TiledMapRectangleObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapRectangleObject.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapRectangleObject.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapRectangleObject.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapTile.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTile.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapTile.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapTile.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapTileDrawOrder.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileDrawOrder.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapTileDrawOrder.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileDrawOrder.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapTileFlipFlags.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileFlipFlags.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapTileFlipFlags.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileFlipFlags.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapTileLayer.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileLayer.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapTileLayer.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileLayer.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapTileObject.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileObject.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapTileObject.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileObject.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapTileset.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileset.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapTileset.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapTileset.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapTilesetAnimatedTile.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetAnimatedTile.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapTilesetAnimatedTile.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetAnimatedTile.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapTilesetTile.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetTile.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapTilesetTile.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetTile.cs diff --git a/Source/MonoGame.Extended.Tiled/TiledMapTilesetTileAnimationFrame.cs b/Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetTileAnimationFrame.cs similarity index 100% rename from Source/MonoGame.Extended.Tiled/TiledMapTilesetTileAnimationFrame.cs rename to Source/MonoGame.Extended.Tiled/Tiled/TiledMapTilesetTileAnimationFrame.cs diff --git a/Source/MonoGame.Extended.Tiled/packages.config b/Source/MonoGame.Extended.Tiled/packages.config new file mode 100644 index 00000000..28c01444 --- /dev/null +++ b/Source/MonoGame.Extended.Tiled/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Source/MonoGame.Extended/MonoGame.Extended.csproj b/Source/MonoGame.Extended/MonoGame.Extended.csproj index 5d0c4648..111fcbfd 100644 --- a/Source/MonoGame.Extended/MonoGame.Extended.csproj +++ b/Source/MonoGame.Extended/MonoGame.Extended.csproj @@ -261,15 +261,15 @@ + + ..\packages\MonoGame.Framework.Portable.3.6.0.1625\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll + ..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll True - - ..\..\Dependencies\MonoGame.Framework.dll - diff --git a/Source/MonoGame.Extended/packages.config b/Source/MonoGame.Extended/packages.config index d59cc888..43f6cc68 100644 --- a/Source/MonoGame.Extended/packages.config +++ b/Source/MonoGame.Extended/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file diff --git a/Source/Tests/MonoGame.Extended.Tests/MockGameWindow.cs b/Source/Tests/MonoGame.Extended.Tests/MockGameWindow.cs index 38ac5153..df49ef62 100644 --- a/Source/Tests/MonoGame.Extended.Tests/MockGameWindow.cs +++ b/Source/Tests/MonoGame.Extended.Tests/MockGameWindow.cs @@ -8,9 +8,24 @@ namespace MonoGame.Extended.Tests { public class MockGameWindow : GameWindow { - public void RaiseOnClientSizeChangedEvent() + public override bool AllowUserResizing { get; set; } + public override Rectangle ClientBounds { get; } + public override DisplayOrientation CurrentOrientation { get; } + public override IntPtr Handle { get; } + public override string ScreenDeviceName { get; } + + public MockGameWindow() { - OnClientSizeChanged(); + this.ClientSizeChanged += OnClientSizeChanged; + } + + private void OnClientSizeChanged(object sender, EventArgs eventArgs) + { + } + + internal void RaiseOnClientSizeChangedEvent() + { + OnClientSizeChanged(this, EventArgs.Empty); } public override void BeginScreenDeviceChange(bool willBeFullScreen) @@ -29,13 +44,6 @@ namespace MonoGame.Extended.Tests { } - public override bool AllowUserResizing { get; set; } - public override Rectangle ClientBounds { get; } - public override Point Position { get; set; } - public override DisplayOrientation CurrentOrientation { get; } - public override IntPtr Handle { get; } - public override string ScreenDeviceName { get; } - #if __MonoCS__ public override Icon Icon { get; set; } #endif