Commit Graph

1844 Commits

Author SHA1 Message Date
Christopher Whitley ccd0c5ba2f Add Independent Axis Scale To Particles (#996)
* Make it so that the particles can scale independently on the x and y axis

* Close element

* Update tests with changes
2025-06-10 22:58:17 -04:00
Christopher Whitley 5fea9192f2 Use texture region bounds (#991) 2025-05-28 16:32:12 -04:00
Christopher Whitley 168d8fbc36 High-Performance Particle System Rewrite (#990)
* Refactor particle system

* Use correct alloc

* Use original ParticleIterator imlementation for zero allications.

* Move ParticleIterator to its own class instead of a nested class

* Mark nullable

* Add fallback mechanism for loading textures when it's an image file and not an xnb
2025-05-28 15:57:58 -04:00
Christopher Whitley 9fe1d3c619 Refactor HslColor and Color Utilities (#989)
* Refactor HslColor: Improve implementation, documentation, and API

- Added explicit memory layout to prepare for particle update.
- Restructured fields as private with readonly property accessors.  Struct is meant to be immutable, but the CopyTo method makes it mutable, so this is a trade off
- Added nullability annotations and explicit argument validations.
- Added Deconstruct method to match MonoGame terminology and marked Destruct as obsolete.
- Marked the implicit string conversion as obsolete.  Users should use the Parse method as it's more explicity as to what's happening.
- Restructure the FromRgb method for better readability and future maintenance.

* Deprecate ColorExtensions.ToHsl method in favor of HslColor.FromRgb

The ColorExtensions.ToHsl and HslColor.FromRgb methods provide the same functionality
but with different implementations. HslColor.FromRgb is more accurate and handles
edge cases correctly, so it should be preferred.

* Mark ColorExtensions.FromHex as obsolete

This just calls ColorHelper.FromHex, which is where the call site should be anyway as this isn't an extension method of Color.

* Move FromAbgr to ColorHelper.  This is not an extension method. Mark other as obsolete.

* Add a const value for machine epsilon

* Move ToRgb as a static method of HslColor struct

- ColorExtensions.ToRgb has been marked obsolete

* Mark ColorExtensions.ToRgb as obsolete

* Move ToHex from ColorHelper to ColorExtensions and make it an extension method. Marked ColorHelper.ToHex as obsolete

* Mark ColorHelper.FromHsl as obsolete

* Clean up namespaces

* Add FromHex overload that uses ReadOnlySpan<char> which increases performance and reduces memory allocations

* Update documentation of FromAbgr since it was moved to ColorHelper

* Fix <c> tag in documentation

* Per coding guidelines, fields at top of class declaration

* Per coding guidelines, prefix static fields with `s_`

* Document the FromName method

* Adhere to coding guidelines
- If statement, even single line, uses brackets
- Inline `Color` definition

* Documentat ColorHelper class

* Remove extra whitespace line

* Clean up unused namespaces

* Correct test case

* Move to root namespace

* Rename to HslColorTests

* Add tests for ColorExtensions.ToHex

* Use facts not theorys

* Add tests for ColorHelper.FromHex
2025-05-22 12:41:38 -04:00
Christopher Whitley b88e0d4ab1 Refactor FastRandom class with thread-safe shared instance (#986)
- Restructure FastRandom to use interface-based implementation approach
- Add thread-safe Shared static instance for concurrent access
- Enhance documentation with improved explanations about algorithm characteristics
- Extract core logic into LinearCongruentialGeneratorImpl for better maintainability
- Replace Math function calls with MathF equivalents for better performance
- Add parameter validation using new .NET ArgumentOutOfRangeException.ThrowIfNegativeOrZero
- Keep API compatibility with original implementation
2025-05-16 14:54:09 -04:00
Christopher Whitley f856694801 Update to use MonoGame 3.8.3 (#982) 2025-04-23 10:41:28 -04:00
amacocian 36d9b3084a Change CollisionEventArgs settter to init require (#978)
Closes #977
2025-03-20 10:41:30 -04:00
David Fidge c4bfb3c37f Fix for first animation frame always showing the first sprite sheet texture region rather than the first animation's texture region. (#972)
Co-authored-by: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
2025-03-01 22:01:36 -05:00
Wolfgang Schreurs b8d9203ef6 Set initial frame when animation is changed (#976)
Co-authored-by: Wolf <wolfgang.s@xardsyn.com>
2025-03-01 21:58:21 -05:00
Nikos Kastellanos e5f5bac062 upgrade KNI to v4.0 (#975) 2025-03-01 21:55:12 -05:00
Christopher Whitley b688d56e81 Remove prerelease part of workflow (#971) v4.0.4 2025-01-10 12:48:06 -05:00
Christopher Whitley 4a738ebd04 Version 4.0.4 release (#970) 2025-01-10 12:36:05 -05:00
Christopher Whitley e3406ab6e6 Ensure zero origin for sprite (#969)
Resolves issue #968
2025-01-10 12:26:40 -05:00
Jeremy Swartwood 080f5e1f23 Add compile time exclusion (#964)
* Add compile time exclusion

* Accept suggested changes
2024-11-20 00:02:30 -05:00
Eb3yr 8b02498317 Fix Invert(ref Matrix3x2) (#962)
* Fix Invert(ref Matrix3x2)

* erroneous results were given by matrix fields being altered sequentially, some fields would use new state instead of the input

* Check for matrix.Determinant() = 0, now returns the identity instead of det becoming infinite"

* Add unit test for Matrix3x2.Invert
2024-11-08 13:57:39 -05:00
Eb3yr d3b4482573 Unify and improve FromHex in ColorHelper.cs and ColorExtensions.cs (#961)
* Both now use ColorHelper.FromHex, rather than differing implementations

* FromHex now accepts hex numbers with three and four digits matching HTML color codes, where "ABC" maps to "AABBCC"

* Significant performance increase using bitshifts over string operations
2024-11-07 12:30:18 -05:00
Christopher Whitley a0613cff6c [Weekly] Version 4.0.3 (#952)
* Starting 4.0.2 release prep

* Update changelog

* Bump version number to 4.0.3

* Updated workflows to use dotnet 8
2024-09-29 23:02:00 -04:00
Jeremy Swartwood 9da44c8286 Revert UV code (#951) 2024-09-25 20:08:49 -04:00
Joseph Newman 18b60dc998 Fix bug when creating a NinePatch using the Texture2DRegion extension method (#948) 2024-09-23 01:35:17 -04:00
Dwergi 73562b691b BitmapFont now always loads from TitleContainer. (#946)
Fixes KNI web builds when using BitmapFont (#944)
2024-09-23 01:33:04 -04:00
Dwergi aed3d14c3b Fix bug when using NinePatch with Texture2DRegion. (#945)
Resolves #943
2024-09-23 01:29:06 -04:00
Ilia Bahrebar b3b4acb0da fix(Matrix3x2): decompose method (#941) 2024-09-23 01:22:28 -04:00
Christopher Whitley c814a65aea Bump version to 4.0.2 (#939) v4.0.2 2024-08-28 00:05:33 -04:00
Christopher Whitley b1ad92a7a0 Read particle file issue (#938)
* Correct exception message

* Pass serializer options as param for MultiDimensional reads

* Refactor to use TryGetRegion

* Update for System.Text.Json parsing
2024-08-27 23:58:42 -04:00
Christopher Whitley da81c353f6 Update for Monogame 3.8.2.1105 (#931)
* Update MonoGame references to 3.8.2.1105

* Vector2.Rotate is not built into MonoGame

* Update to net8

* Update version number

* Update changelog

* Deprecate Vector2.Rotate for MonoGame only

* Deprecate it but don't error it so API doesn't break for others.
v4.0.1
2024-08-17 22:27:28 -04:00
Srayan Jana 40d260b454 fix color extension bug (#925)
* fix color extension bug

* add preprocessor
2024-07-29 11:25:26 -04:00
Christopher Whitley 3ca0a3ef2a Resolves ArgmentNulLException When Loading BitmapFont From Disk. (#924)
* Correctly swap rayNear and rayFar distance

* Retrieve bmfFile.Path when reading from stream
This closes #923

* Return null if character not found.
This is used for line feed characters.S
2024-07-11 22:24:34 -04:00
Christopher Whitley f1fbf9c4b8 Correctly swap rayNear and rayFar distance (#922) 2024-07-11 21:48:40 -04:00
Christopher Whitley f56dc7b620 Use MaxSpeed when calculating speedGain (#921)
This calculation was never implemented from the Mercury Particle Engine port
2024-07-11 21:35:32 -04:00
Christopher Whitley 3314226861 Fix documentation link (#920) 2024-07-11 15:18:16 -04:00
Christopher Whitley da2de0c84d Added FromAbgr method (#919) 2024-07-10 01:50:30 -04:00
Christopher Whitley 4beea37b25 Sync develop with release (#917)
* Version 4.0.0 Release (#911)

* Remove duplicate fact

* Add .user file to gitignore

* Assert Rectangle translation transform

* Assert Rectangle transform not changing size

* Rectangle extents are rotated correctly

* Rebuilt effects with mgfxc 3.8.1.303

* Uncomment and fix tests

* Remove tests always passing

* Issue 707, Created test for null ptr during entity destroy

* Issue 707, Added null propagation inside component manager destroy method

* Create VelocityInterpolator

Allow particles to change velocity as they age.

* add power of two values to MouseButton

* Add parallaxFactor of layers in models.

* Add parallaxFactor in rendering logic.

* Add checking event == 'push'

* Fix looping animations incorrectly completing when an update contains a large elapsed time.
Ping pong waits until frame delay is complete on re-entry of the first frame before firing Complete rather than firing Complete immediately upon entering the frame.  This makes it consistent with a non ping pong animation which waits for the frame delay of the last frame before it fires Complete.
Ping Pong now finishes on the first frame rather than potentially finishing on a different frame if the elapsed time since last update was larger than the time remaining for the animation to become complete.
Add unit tests for SpriteSheetAnimation.

* Update README.md

* Use actual target bounds when testing collision

* Cleanup

* Refactor

Encapsulate a public property (Parents).
Added xml-comments (to fix some compilation warnings)

* Format comments and fix spelling

* Add comments for public fields and properties

* fix Bag so that it doesn't allocate during foreach enumeration

* add bag allocation test

* make WasKey/ButtonJustDown/Up obsolete and replace with clarified versions

* add support for class (nested) properties

* support type/class field in maps, layers, & tilemaps

* Update PrimitiveDrawing.cs

Add a new DrawSolidCircle to add a fill color

* fix allocating WasAnyKeyJustDown method; add GetPressedKeys non-alloc overload

* Use Directory.Build.targets
Moved common csproj properties for NuGet into Directory.Build.targets

* Added version tag
This is so we don't have to rely on github runner actions to generate the version number, and we can use it in the build scripts

* PackageIconUrl is deprecated
NuGet packages should use PacakgeIcon with a packed image inside the NuGet insetad of PackageIconUrl

* Pack README.md in NuGet packages

* Add common tags for NuGet packages
Added the `<RepositoryType>`, `<RepositoryBranch>`, `<NeutralLanguage>` and `<PacakgeLicenseExpression>` tags

* Added new Cake Frosting project

* Cleaned up
Cleaned up the Program.cs for the Cake Frosting project.  Added the working direcotry directive

* Added BuildContext

* Added BuildTask

* Added Test Task

* Added Package Task

* Added Default task

* Added namespace

* Cleanup using statements

* Ignore cake output directory

* Updated and automated for NuGet pushing

* Check for GCLatencyMode.NoGCRegion
This test fails occasionaly when run through the automated cake script.  Wrapped the EndNoGCREgion in a check for GCTatencyMode.NoGCRegion to resolve

* Forgot to add System.Runtime using statement

* Better name for package step

* NuGet Deploy only in craftworksgames repo

* Enable Nullable in build project

* Add additional context variables for build script

* Use same verbosity, restore, and logo flags as originally used

* Use same verbosity and nologo setting as original

* Created Restore task

Uses same verbosity as original workflow did

* Update TestTask to use same verbosity, nologo, and nobuild as original workflow

* Create DeployToGithubTask

* Create DeployToMyGetTask

* Create DeployToNuGetTask

* Added Deploy task

* Simplify, move most logic into cake build script

* Ignore Missing XML comment warnings on build

* Remove async, ignore NU5118 on package

* Apparently i forgot a semi colon....

* Remove old collision code.

* Move collision code to root folder

* Fix namespaces

* Add failing test for collisions.

* Add benchmarks for collisions

* Refactor collision update, correct reset map

* Add BoundingRectanglle property for IShape

* Refactor QuadTree - now we use static AABB intersection check

* Add layers for collisions

* Add interface for space splitting and impls

* Refactor layers for new interface

* Add comments for collision actor.

* Add comments for space algo interface.

* Add spatialHash algo for collision spacing

* Rename Quadtree to QuadTree

* Add inline for private methods of SpatialHash.cs

* Refactor benchmarks for collisions.

* Fix tests

* Refactor layers.

* Add method for set default layer

* Fix ctor call's

* Add constructor for CollisionComponent.cs

* Add extentions for ContentImporter.

* Add speical contentItem for referencing images.

* Fix tiledMap processing and writing.

* Add texture for tile.

* Add image tileset support

* Fix using ctor from remote

* Fix version

* Fix CiCD

* Add copy constructor for KeyboardListener.

* Revert "Add copy constructor for KeyboardListener."

* Add serializer for RectangleF

* Add test for new serizalizer

* Add RectangleFJsonConverter for default serializer.

* Fixed HSL lerp

* Move extracting linear operations into special class.

* Move impls of linear tweening into special class.

* Add ColorTween

* Add special TweenTo.

* Fix TweenTo

* Add tweening tests

* Fix activator inside tweener.

* Check for undefined layer and throw on collision actor insertion

* Add test coverage

* Add OrientedBoundingRectangle type

* Add Points property to OrientedBoundingRectangle

* Ignore Visual Studio cache

* Be explicit about conversion of geometries

Conversion from circle to rectangle should not pass unnoted and be explicit.

* OrientedBoundedRectangle implements ShapeF

In that way the OrientedBoundedRectangle can take part of collision tests.

* Add ascii art to describe intersection tests

* Update circle and oriented bound box intersection

* Update dependencies

* Add Intersects method for OBB

* Rename to OrientedRectangle

* Properly intersect circle and oriented rect

* Calc coll vector for circle and oriented rect

* Calc coll vector for oriented rects

* Fixes incorrect rendering of flipped animation tiles

* Call RectangleF.Intersects to resolve recursion bug
When both params `a` and `b` are of type `RectangleF` just calling `Shape.Intersects` creates a infinite recursion bug.

* Update Newtonsoft.Json.dll Dependency

* Removing MyGet Feed Deploy
Lithiums MyGet feed won't allow the NuGet push due to the SemVersions of the package containing a 4th build number value.

* Moved to `/src/cs`
Moved benchmark and tweening test projects into the `/src/cs` to keep project organization constancy.

* Move build into `/src/cs`

* Fix project reference

* Fix path for project on build task

* Capital B

* Changed the Flip Flag array to be private and readonly and added a public property that returns the backing field as a ReadOnlySpan.

* Move source projects into source directory

* Moved tests into test directory

* Moved benchmarks into benchmark directory

* Moved build into build directory

* Add root props file

* Add common props for all tests

* Added `<Authors>` to root props

* Add common props for source  directory

* Add props to build directory

* Moved props from targets file

* Removed targets file

* Update for new .artifacts directory

* nuget.config is not needed

* Renamed 'Logos' directory to 'logos'
Case sensitivity matters depending on operating system, so it's more convenient where possible to keep directory names lower case

* Use correct working directory after moving

* Remove duplicate import statement

* Read from props file not targets file.

* Use new .artifacts directory

* Updated .gitattributes

* Updated .gitignore

* Set ArtifactPath within the project category directory

* Drop CAKE build and move Build CI to github workflow

* Setup code analysis with .editorconfig

* Don't use nullable reference in a non-nullable context

* Correct spelling of minimal

* Fix GitHub Nuget Push (#859)

* Fix github url for nuget push

* forgot the h in https

* Remove GitHub Deploy (#860)

* Fix github url for nuget push

* forgot the h in https

* Remove github push for now, need to check repository settings

* Cleanup (#862)

* Removed Roadmap
The Roadmap seems to have been initially added to show the plans to switch to an FNA fork and act as a bridge for katabasis.  This is no longer the case for this repository as it will remain focused at the moment on MonoGame support only.

* Added new note at top of readme

* updated information for installing nuget

* Made using content pipeline extensions a section and not a quote

* Removed information about MyGet feed

* Removed patreon from readme

* Update License

* renamed master branch to main

* Remove community forum link
MonoGame is closing the community forums in favor of discord and github discussions

* Update workflows

* Removed patreon added aristurtledev (#863)

* Fix funding (#864)

* Use ArtifactsPath to resolve include dlls for pack (#865)

* Add additional input parameters (#866)

* Only specify source and prerelease (#867)

* Update prerelease version (#868)

* Replace Newtonsoft.Json with System.Text.Json (#869)

* Converted to use `System.Text.Json`

* Remove Newtonsoft.Json Dependency
Newtonsoft.Json dependency has been removed in favor of System.Text.Json

* Treat MGFXO file as binary

* Replace `Matrix2` with `Matrix3x2` (#870)

* Replace `Matrix2` with `Matrix3x2`

* Update benchmarks

* Add XML documentation for `Matrix3x2`

* Add Edge Test for `Polygon.Contains` (#871)

* Added Assert for edge contains
Reference: https://github.com/craftworkgames/MonoGame.Extended/issues/214

* Renamed to PolygonTests

* Replace `Size3` with `Vector3` (#872)

* Rename `Size2` to `SizeF` (#873)

* Remove `Point3` (#874)

* Remove `Point2` (#875)

* Added `CalculateMinimumVector2` and `CalculateMaximumVector2` as replacement for `Point2.Minimum` and `Point2.Maximum`

* Remove `Point2`

* Added unit test to ensure issue is resolved (#876)

* Add unit test for `ContentReaderExtensions.GetRelativeAssetName` (#877)

* Implements standard IDispose pattern (#879)

* upgrade solution to VS2022 (#880)

* update project types to net.Sdk

* upgrade solution to VS2022

* Remove unnecessary dependencies to SharpDX and Content.Pipeline from the core library (#881)

* remove unused SharpDX using

introduces in #840

* remove Content.Pipeline reference from the core library

introduced in #692

* use System ZLibStream (#882)

ZLibStream was added in net6

https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.zlibstream?view=net-8.0

* Added changelog (#883)

* Added changelog

* Added note about unreleased

* Make links for users (#884)

* Copy Reference DLLs from NuGet Automatically (#885)

* Pack value should be `true` not `True`

* Copy content pipeline dll references to project directory for ease of use

* Forgot `/` in path

* Updated Changelog (#886)

Added information about #885

* Refactor `BitmapFont` (#887)

* Update file header

* Created initial project to move BitmapFont too

* XMl, Text, and Binar reading now supported for BMFont

* Refactor BittmapFont

* Update content pipeline from BitmapFont refactor

* Update changelog

* Updated ComponentManager to implement IEnumerable<ComponentMapper> (#823) (#888)

* Update Changelog (#889)

* Updated so all projects have changelog in root when viewing in visual studio

* Updated changelog

* Texture Atlas Refactor (#890)

* Moved `TextureRegion2D` and `NinePatchRegion2D` into Graphics namespace
These are used for more than just texture atlas related things and are primarly for working with `Texture2D` instances and creating sub textures from them.  Moving them to Graphics namespace where `Texture2D` lives in MonoGame

* Dropped the `2D` suffix from `TextureRegion2D` and `NinePatchRegion2D`

* Moved `RectanglExtensions` to project root
This moves the extensions for `Rectangle` to the same relative namespace location as `Rectangle` is in MonoGame.

* Renamed to `Rectangle.Extensions.cs`

* Separate `Rectangle` from `RectangleF` extensions

* Added `GetRelativeRectangle` method

* Updated documentation

* Added `GetRelativeRectangle` method

* Updated documentation

* Top-level namespace

* Remove whitespace

* Move properties up

* Top-level namespace

* Don't recreate structs for `Bounds` and Size`
By having the property return a new struct, this allocates on the stack during situations like a loop during draw.

* Size should be `Size` not `SizeF` value
Textures deal in pixels (ints not floats)

* Removed setter for `Texture` property
Texture should not be set after region is created

* Added UV properties

* Refactor constructors

* Added documentation

* Added license header

* Make it an actual extension method

* Added `GetSubRegion` extension methods for `TextureRegion`

* Update documentation about ObjectDisposedException

* Move const values to top

* Resolve errors from`TextureRegion` refactor

* Update unit tests for TextureRegion refactor

* Started NinePatch rework

* Refactored NinePatch

* Update for texture region constructor change

* Remove ninepatch from atlas

* Moved `TextureAtlasExtensions` into `SpriteBatch.Extensions`
These are extension methods for the sprite batch

* Updated to use new `DrawTextureRegion` method after rename

* Renamed to NinePatchJsonConverter

* Removed `GetRegion<T>`
TextureAtlas no longer contains nine patch regions, so this method isn't needed

* Update after `NinePatchRegion2DJsonConverter` name change

* Resolve errors from NinePatch refactor

* TextureAtlas rework

* Renamed `TextureRegion` to `Texture2DRegion`

* Moved ContentReaders to new Content\ContentReaders directory

* Moved TextureAtlasJsonConvert to Serialization directory

* Adjusted name from `Texture*` to `Texture2D*`

* Update runtimereader and runtimettype strings

* Kni.Extended (#892)

* KNI projects

* update actions

fixes MSBUILD : error MSB1011: Specify which project or solution file to
use because this folder contains more than one project or solution file.

* remove test for issue #633

* build tests

* KNI TypeReaders

* KNI/XNA compatible code

* GetRuntimeReader from runtime types

* remove MockGameWindow

* Fna.Extended (#893)

* FNA projects

* update actions

fixes MSBUILD : error MSB1011: Specify which project or solution file to
use because this folder contains more than one project or solution file.

* build tests

* remove test for issue #633

* FNA/XNA compatible

* GraphicsDevice Extensions

* remove MockGameWindow

---------

Co-authored-by: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>

* Sprite Rework (#897)

* Add file header

* Refator to file-scoped namespace

* Least complex to most complext method ordering

* Refactor: Group properties at top before constructor

* Use the new UV properties from Texture2DRegion.
This removes the dependency on the texture size in the calculations if the TextureRegion property is changed.

* No longer need to cache normalized origin to preserve it

* Use ArgumentNullException instead

* Use ArgumentNullException.ThrowIfNull

* Refactor:  Use brackets for readability

* Add xml documentation

* Add check for disposed texture

* Moved `Sprite` to `MonoGame.Extended.Graphics`

* Moved extension methods for rendering sprite into `SpriteBatch.Extensions`

* `ISpriteBatchDrawable` is not used by anything
It was originally part of the ScreneGraph implementation in MonoGame.Extended which was replaced by the ECS system.  It appears that this interface was forgotten to be removed and is not used for anything anymore.

* Add `CreateSprite` methods

* Add file header

* Moved `SpriteSheetAnimationFrame` to `MonoGame.Extended.Graphics`

* Move properties before constructor.

* Changed `Duration` to `TimeSpan` type

* Renamed `Index` to `FrameIndex`

* Add `TextureRegion` property

* Make property get only

* Cleanup whitespace

* Remove `SpriteSheetAnimationFrameJsonConverter`

* Cleanup unused namespaces

* Make file-scoped namespace

* Added xml documentation

* Added file header

* marked constructor as internal.
This will be created from a spritesheet itself

* Move `SpriteSheetAnimationCycle` to `MonoGame.Extended.Graphcis`

* File scoped namespace

* Add file header

* Reorganize: Move properties above constructor

* Make `Frames` property a read-only span

* Remove duration, this is being moved to the frame itself

* Add `Name` property

* Set looping, reversed, and ping pong properties in ctor

* Make ctor internal
This will be an object created by a spritesheet instane itself.

* Cleanup: Whitespace

* Add `FrameCount` property

* Add `GetFrame` method and accompanying `this[int]` method.

* Documentation: Added missing documentation.

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* Refactor: Animation Refactor Completed

* Refactor: Sprite stuff finished

* Remove tests that can't be run on GitHub CI
Need to find alternative

* Make optional name param the last param in Texture2DRegion ctors

* Resolve merge conflicts

* Add Kni Package (#898)

* Capitalize KNI (#899)

* Resolves NullReferenceException When Getting Invalid Key From TiledMapProperties (#903)

* Add test to validate issue

* Resolve issue

* Fix `NullReferenceException` in `ObjectPool` when reusing all returned items (#904)

* Replaced delegate with Action<T>

* Change delegate to Action<T>

* Add unit test to confirm issue

* Fix NullReferenceException in ObjectPool when reusing all returned items

The ObjectPool's Use() method was throwing a NullReferenceException when
all items had been returned to the pool and New() was called again. This
was due to _tailNode being null in this scenario.

Added a null check for _tailNode in Use() method to properly reinitialize
the linked list structure when the pool has been emptied and refilled.

* Moved MonoGame.Extended.Gui to its own repository (#905)

* Update animated sprite so the constructor api is similar to original MGE (#906)

* Update animated sprite so the constructor api is similar to original MGE

* Fix tests from changes

* Add pitch support to Camera & OrthographicCamera (#907)

* Added pitch support to OrthographicCamera

* Added pitch functions to base Camera class

* Reorganization (#909)

* Removed MonoGame.Extended.Animations
This project was just a shell that referenced MonoGame.Extended.csproj. It added no additional functionality.

* Rework BitmapFonts for new project organization.

* Cleanup namespaces

* Cleanup namespaces

* Move MonoGame.Extended.Collision into base project

* Moved MonoGame.Extended.Entities into base project

* Moved MonoGame.Extended.Graphics into base project

* Moved MonoGame.Extended.Graphics into base project

* Moved MonoGame.Extended.Input into base project

* Moved MonoGame.Extended.Particles into base project

* Moved MonoGame.Extended.Tiled into base project

* Moved MonoGame.Extended.Tiled into base project

* Moved MonoGame.Extended.Tweening into base project

* Removing SpriteFactory support
This will be added back in at a later date once the SpriteFactory application has been updated

* Update TexturePacker content import support

* Only needs to reference base project now

* Moved to Serialization namespace

* Moved  Json serialization to Serialization.Json namespace

* Moved TexturePacker content DTOs to the Content namespace

* Renamed to Texture2DRegion.Extensions.cs

* Cleaned up namespace

* Moved ReadTiledMapProperties into the ContentReaderExtensions

* Created an Extended content manager

* Moved Tweening tests to base test project

* Moved Tiled test to base test project

* Moved Entities Tests to base test project

* Moved Entities tests to base test project

* Moved Collisions tests to base test project

* Moved Pipeline Tiled test to Pipeline tests project

* Use `var` instead of full type name

* Add Tiled namespace

* Correct `Metadata` property name to new `Meta` property name

* Cleanup namespace

* Add effects namespace

* Add Content namespace

* Update using statements to new namespaces

* Move Pipeline Tiled tests to Pipeline test project

* Use correct namespace

* Use `var` instead of typing out nested types

* Remove unused namespaces

* Update to new namespaces

* Remove unused namespaces

* Update to new namespaces

* Remove dependency on Particles csproj

* Update included content on build

* Add embedded resources

* Merge multi csproj structure into single csproj structure

* TexturePackerPoint properties should be `double` not `int`

* Update csproj

* Use dotnet tool to rebuild effects

* Move effect compilation to targets file
This will ensure the effects are always built

* Fix workflow to build effects on linux

* Set wine path

* Export instead of using actions env section

* Revert back to manual effect compile until automation can be solved on GitHub Ubuntu runner

* Make CurrentFrame return the actual frame index from the source atlas

* Start the animation controller playing, don't make the consumer manually call it initially

* Play is automatically called in the controller ctor

* Added property to get name of current animation

* Only copy reference files if user opts in by specifying property in csproj

* Update Kni solution to new project structure

* Update Fna solution to new project structure

* Bump version number to 4.0.0

* Update release workflow

* Remove old test

---------

Co-authored-by: Andreas Torebring <andreas.torebring@gmail.com>
Co-authored-by: Lucas Girouard-Stranks <lustranks@gmail.com>
Co-authored-by: Matt Johnson <matt.johnson.dev@gmail.com>
Co-authored-by: Kus <git@kus.dev>
Co-authored-by: slakedclay <118028225+slakedclay@users.noreply.github.com>
Co-authored-by: Cairo Batista <cairomb1@gmail.com>
Co-authored-by: Gandifil <gandifilmk@gmail.com>
Co-authored-by: David Fidge <dfidge@internode.on.net>
Co-authored-by: Lucas Girouard-Stranks <519592+lithiumtoast@users.noreply.github.com>
Co-authored-by: Lilith Silver <anon>
Co-authored-by: KatDevsGames <north@tinymagnet.com>
Co-authored-by: LACOMBE Dominique <lacombe.dominique@outlook.fr>
Co-authored-by: Apllify <ralilahlou50@gmail.com>
Co-authored-by: Stephen <stephenafoster88@gmail.com>
Co-authored-by: jimmy b <tigurx@gmail.com>
Co-authored-by: Nikos Kastellanos <nkastellanos@gmail.com>
Co-authored-by: Mike Bowers <mbowersjr@gmail.com>
Co-authored-by: James <52947350+jameskellie@users.noreply.github.com>

* Release/v4 (#913)

* Assert Rectangle transform not changing size

* Rectangle extents are rotated correctly

* Rebuilt effects with mgfxc 3.8.1.303

* Uncomment and fix tests

* Remove tests always passing

* Issue 707, Created test for null ptr during entity destroy

* Issue 707, Added null propagation inside component manager destroy method

* Create VelocityInterpolator

Allow particles to change velocity as they age.

* add power of two values to MouseButton

* Add parallaxFactor of layers in models.

* Add parallaxFactor in rendering logic.

* Add checking event == 'push'

* Fix looping animations incorrectly completing when an update contains a large elapsed time.
Ping pong waits until frame delay is complete on re-entry of the first frame before firing Complete rather than firing Complete immediately upon entering the frame.  This makes it consistent with a non ping pong animation which waits for the frame delay of the last frame before it fires Complete.
Ping Pong now finishes on the first frame rather than potentially finishing on a different frame if the elapsed time since last update was larger than the time remaining for the animation to become complete.
Add unit tests for SpriteSheetAnimation.

* Update README.md

* Use actual target bounds when testing collision

* Cleanup

* Refactor

Encapsulate a public property (Parents).
Added xml-comments (to fix some compilation warnings)

* Format comments and fix spelling

* Add comments for public fields and properties

* fix Bag so that it doesn't allocate during foreach enumeration

* add bag allocation test

* make WasKey/ButtonJustDown/Up obsolete and replace with clarified versions

* add support for class (nested) properties

* support type/class field in maps, layers, & tilemaps

* Update PrimitiveDrawing.cs

Add a new DrawSolidCircle to add a fill color

* fix allocating WasAnyKeyJustDown method; add GetPressedKeys non-alloc overload

* Use Directory.Build.targets
Moved common csproj properties for NuGet into Directory.Build.targets

* Added version tag
This is so we don't have to rely on github runner actions to generate the version number, and we can use it in the build scripts

* PackageIconUrl is deprecated
NuGet packages should use PacakgeIcon with a packed image inside the NuGet insetad of PackageIconUrl

* Pack README.md in NuGet packages

* Add common tags for NuGet packages
Added the `<RepositoryType>`, `<RepositoryBranch>`, `<NeutralLanguage>` and `<PacakgeLicenseExpression>` tags

* Added new Cake Frosting project

* Cleaned up
Cleaned up the Program.cs for the Cake Frosting project.  Added the working direcotry directive

* Added BuildContext

* Added BuildTask

* Added Test Task

* Added Package Task

* Added Default task

* Added namespace

* Cleanup using statements

* Ignore cake output directory

* Updated and automated for NuGet pushing

* Check for GCLatencyMode.NoGCRegion
This test fails occasionaly when run through the automated cake script.  Wrapped the EndNoGCREgion in a check for GCTatencyMode.NoGCRegion to resolve

* Forgot to add System.Runtime using statement

* Better name for package step

* NuGet Deploy only in craftworksgames repo

* Enable Nullable in build project

* Add additional context variables for build script

* Use same verbosity, restore, and logo flags as originally used

* Use same verbosity and nologo setting as original

* Created Restore task

Uses same verbosity as original workflow did

* Update TestTask to use same verbosity, nologo, and nobuild as original workflow

* Create DeployToGithubTask

* Create DeployToMyGetTask

* Create DeployToNuGetTask

* Added Deploy task

* Simplify, move most logic into cake build script

* Ignore Missing XML comment warnings on build

* Remove async, ignore NU5118 on package

* Apparently i forgot a semi colon....

* Remove old collision code.

* Move collision code to root folder

* Fix namespaces

* Add failing test for collisions.

* Add benchmarks for collisions

* Refactor collision update, correct reset map

* Add BoundingRectanglle property for IShape

* Refactor QuadTree - now we use static AABB intersection check

* Add layers for collisions

* Add interface for space splitting and impls

* Refactor layers for new interface

* Add comments for collision actor.

* Add comments for space algo interface.

* Add spatialHash algo for collision spacing

* Rename Quadtree to QuadTree

* Add inline for private methods of SpatialHash.cs

* Refactor benchmarks for collisions.

* Fix tests

* Refactor layers.

* Add method for set default layer

* Fix ctor call's

* Add constructor for CollisionComponent.cs

* Add extentions for ContentImporter.

* Add speical contentItem for referencing images.

* Fix tiledMap processing and writing.

* Add texture for tile.

* Add image tileset support

* Fix using ctor from remote

* Fix version

* Fix CiCD

* Add copy constructor for KeyboardListener.

* Revert "Add copy constructor for KeyboardListener."

* Add serializer for RectangleF

* Add test for new serizalizer

* Add RectangleFJsonConverter for default serializer.

* Fixed HSL lerp

* Move extracting linear operations into special class.

* Move impls of linear tweening into special class.

* Add ColorTween

* Add special TweenTo.

* Fix TweenTo

* Add tweening tests

* Fix activator inside tweener.

* Check for undefined layer and throw on collision actor insertion

* Add test coverage

* Add OrientedBoundingRectangle type

* Add Points property to OrientedBoundingRectangle

* Ignore Visual Studio cache

* Be explicit about conversion of geometries

Conversion from circle to rectangle should not pass unnoted and be explicit.

* OrientedBoundedRectangle implements ShapeF

In that way the OrientedBoundedRectangle can take part of collision tests.

* Add ascii art to describe intersection tests

* Update circle and oriented bound box intersection

* Update dependencies

* Add Intersects method for OBB

* Rename to OrientedRectangle

* Properly intersect circle and oriented rect

* Calc coll vector for circle and oriented rect

* Calc coll vector for oriented rects

* Fixes incorrect rendering of flipped animation tiles

* Call RectangleF.Intersects to resolve recursion bug
When both params `a` and `b` are of type `RectangleF` just calling `Shape.Intersects` creates a infinite recursion bug.

* Update Newtonsoft.Json.dll Dependency

* Removing MyGet Feed Deploy
Lithiums MyGet feed won't allow the NuGet push due to the SemVersions of the package containing a 4th build number value.

* Moved to `/src/cs`
Moved benchmark and tweening test projects into the `/src/cs` to keep project organization constancy.

* Move build into `/src/cs`

* Fix project reference

* Fix path for project on build task

* Capital B

* Changed the Flip Flag array to be private and readonly and added a public property that returns the backing field as a ReadOnlySpan.

* Move source projects into source directory

* Moved tests into test directory

* Moved benchmarks into benchmark directory

* Moved build into build directory

* Add root props file

* Add common props for all tests

* Added `<Authors>` to root props

* Add common props for source  directory

* Add props to build directory

* Moved props from targets file

* Removed targets file

* Update for new .artifacts directory

* nuget.config is not needed

* Renamed 'Logos' directory to 'logos'
Case sensitivity matters depending on operating system, so it's more convenient where possible to keep directory names lower case

* Use correct working directory after moving

* Remove duplicate import statement

* Read from props file not targets file.

* Use new .artifacts directory

* Updated .gitattributes

* Updated .gitignore

* Set ArtifactPath within the project category directory

* Drop CAKE build and move Build CI to github workflow

* Setup code analysis with .editorconfig

* Don't use nullable reference in a non-nullable context

* Correct spelling of minimal

* Fix GitHub Nuget Push (#859)

* Fix github url for nuget push

* forgot the h in https

* Remove GitHub Deploy (#860)

* Fix github url for nuget push

* forgot the h in https

* Remove github push for now, need to check repository settings

* Cleanup (#862)

* Removed Roadmap
The Roadmap seems to have been initially added to show the plans to switch to an FNA fork and act as a bridge for katabasis.  This is no longer the case for this repository as it will remain focused at the moment on MonoGame support only.

* Added new note at top of readme

* updated information for installing nuget

* Made using content pipeline extensions a section and not a quote

* Removed information about MyGet feed

* Removed patreon from readme

* Update License

* renamed master branch to main

* Remove community forum link
MonoGame is closing the community forums in favor of discord and github discussions

* Update workflows

* Removed patreon added aristurtledev (#863)

* Fix funding (#864)

* Use ArtifactsPath to resolve include dlls for pack (#865)

* Add additional input parameters (#866)

* Only specify source and prerelease (#867)

* Update prerelease version (#868)

* Replace Newtonsoft.Json with System.Text.Json (#869)

* Converted to use `System.Text.Json`

* Remove Newtonsoft.Json Dependency
Newtonsoft.Json dependency has been removed in favor of System.Text.Json

* Treat MGFXO file as binary

* Replace `Matrix2` with `Matrix3x2` (#870)

* Replace `Matrix2` with `Matrix3x2`

* Update benchmarks

* Add XML documentation for `Matrix3x2`

* Add Edge Test for `Polygon.Contains` (#871)

* Added Assert for edge contains
Reference: https://github.com/craftworkgames/MonoGame.Extended/issues/214

* Renamed to PolygonTests

* Replace `Size3` with `Vector3` (#872)

* Rename `Size2` to `SizeF` (#873)

* Remove `Point3` (#874)

* Remove `Point2` (#875)

* Added `CalculateMinimumVector2` and `CalculateMaximumVector2` as replacement for `Point2.Minimum` and `Point2.Maximum`

* Remove `Point2`

* Added unit test to ensure issue is resolved (#876)

* Add unit test for `ContentReaderExtensions.GetRelativeAssetName` (#877)

* Implements standard IDispose pattern (#879)

* upgrade solution to VS2022 (#880)

* update project types to net.Sdk

* upgrade solution to VS2022

* Remove unnecessary dependencies to SharpDX and Content.Pipeline from the core library (#881)

* remove unused SharpDX using

introduces in #840

* remove Content.Pipeline reference from the core library

introduced in #692

* use System ZLibStream (#882)

ZLibStream was added in net6

https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.zlibstream?view=net-8.0

* Added changelog (#883)

* Added changelog

* Added note about unreleased

* Make links for users (#884)

* Copy Reference DLLs from NuGet Automatically (#885)

* Pack value should be `true` not `True`

* Copy content pipeline dll references to project directory for ease of use

* Forgot `/` in path

* Updated Changelog (#886)

Added information about #885

* Refactor `BitmapFont` (#887)

* Update file header

* Created initial project to move BitmapFont too

* XMl, Text, and Binar reading now supported for BMFont

* Refactor BittmapFont

* Update content pipeline from BitmapFont refactor

* Update changelog

* Updated ComponentManager to implement IEnumerable<ComponentMapper> (#823) (#888)

* Update Changelog (#889)

* Updated so all projects have changelog in root when viewing in visual studio

* Updated changelog

* Texture Atlas Refactor (#890)

* Moved `TextureRegion2D` and `NinePatchRegion2D` into Graphics namespace
These are used for more than just texture atlas related things and are primarly for working with `Texture2D` instances and creating sub textures from them.  Moving them to Graphics namespace where `Texture2D` lives in MonoGame

* Dropped the `2D` suffix from `TextureRegion2D` and `NinePatchRegion2D`

* Moved `RectanglExtensions` to project root
This moves the extensions for `Rectangle` to the same relative namespace location as `Rectangle` is in MonoGame.

* Renamed to `Rectangle.Extensions.cs`

* Separate `Rectangle` from `RectangleF` extensions

* Added `GetRelativeRectangle` method

* Updated documentation

* Added `GetRelativeRectangle` method

* Updated documentation

* Top-level namespace

* Remove whitespace

* Move properties up

* Top-level namespace

* Don't recreate structs for `Bounds` and Size`
By having the property return a new struct, this allocates on the stack during situations like a loop during draw.

* Size should be `Size` not `SizeF` value
Textures deal in pixels (ints not floats)

* Removed setter for `Texture` property
Texture should not be set after region is created

* Added UV properties

* Refactor constructors

* Added documentation

* Added license header

* Make it an actual extension method

* Added `GetSubRegion` extension methods for `TextureRegion`

* Update documentation about ObjectDisposedException

* Move const values to top

* Resolve errors from`TextureRegion` refactor

* Update unit tests for TextureRegion refactor

* Started NinePatch rework

* Refactored NinePatch

* Update for texture region constructor change

* Remove ninepatch from atlas

* Moved `TextureAtlasExtensions` into `SpriteBatch.Extensions`
These are extension methods for the sprite batch

* Updated to use new `DrawTextureRegion` method after rename

* Renamed to NinePatchJsonConverter

* Removed `GetRegion<T>`
TextureAtlas no longer contains nine patch regions, so this method isn't needed

* Update after `NinePatchRegion2DJsonConverter` name change

* Resolve errors from NinePatch refactor

* TextureAtlas rework

* Renamed `TextureRegion` to `Texture2DRegion`

* Moved ContentReaders to new Content\ContentReaders directory

* Moved TextureAtlasJsonConvert to Serialization directory

* Adjusted name from `Texture*` to `Texture2D*`

* Update runtimereader and runtimettype strings

* Kni.Extended (#892)

* KNI projects

* update actions

fixes MSBUILD : error MSB1011: Specify which project or solution file to
use because this folder contains more than one project or solution file.

* remove test for issue #633

* build tests

* KNI TypeReaders

* KNI/XNA compatible code

* GetRuntimeReader from runtime types

* remove MockGameWindow

* Fna.Extended (#893)

* FNA projects

* update actions

fixes MSBUILD : error MSB1011: Specify which project or solution file to
use because this folder contains more than one project or solution file.

* build tests

* remove test for issue #633

* FNA/XNA compatible

* GraphicsDevice Extensions

* remove MockGameWindow

---------

Co-authored-by: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>

* Sprite Rework (#897)

* Add file header

* Refator to file-scoped namespace

* Least complex to most complext method ordering

* Refactor: Group properties at top before constructor

* Use the new UV properties from Texture2DRegion.
This removes the dependency on the texture size in the calculations if the TextureRegion property is changed.

* No longer need to cache normalized origin to preserve it

* Use ArgumentNullException instead

* Use ArgumentNullException.ThrowIfNull

* Refactor:  Use brackets for readability

* Add xml documentation

* Add check for disposed texture

* Moved `Sprite` to `MonoGame.Extended.Graphics`

* Moved extension methods for rendering sprite into `SpriteBatch.Extensions`

* `ISpriteBatchDrawable` is not used by anything
It was originally part of the ScreneGraph implementation in MonoGame.Extended which was replaced by the ECS system.  It appears that this interface was forgotten to be removed and is not used for anything anymore.

* Add `CreateSprite` methods

* Add file header

* Moved `SpriteSheetAnimationFrame` to `MonoGame.Extended.Graphics`

* Move properties before constructor.

* Changed `Duration` to `TimeSpan` type

* Renamed `Index` to `FrameIndex`

* Add `TextureRegion` property

* Make property get only

* Cleanup whitespace

* Remove `SpriteSheetAnimationFrameJsonConverter`

* Cleanup unused namespaces

* Make file-scoped namespace

* Added xml documentation

* Added file header

* marked constructor as internal.
This will be created from a spritesheet itself

* Move `SpriteSheetAnimationCycle` to `MonoGame.Extended.Graphcis`

* File scoped namespace

* Add file header

* Reorganize: Move properties above constructor

* Make `Frames` property a read-only span

* Remove duration, this is being moved to the frame itself

* Add `Name` property

* Set looping, reversed, and ping pong properties in ctor

* Make ctor internal
This will be an object created by a spritesheet instane itself.

* Cleanup: Whitespace

* Add `FrameCount` property

* Add `GetFrame` method and accompanying `this[int]` method.

* Documentation: Added missing documentation.

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* Refactor: Animation Refactor Completed

* Refactor: Sprite stuff finished

* Remove tests that can't be run on GitHub CI
Need to find alternative

* Make optional name param the last param in Texture2DRegion ctors

* Resolve merge conflicts

* Add Kni Package (#898)

* Capitalize KNI (#899)

* Resolves NullReferenceException When Getting Invalid Key From TiledMapProperties (#903)

* Add test to validate issue

* Resolve issue

* Fix `NullReferenceException` in `ObjectPool` when reusing all returned items (#904)

* Replaced delegate with Action<T>

* Change delegate to Action<T>

* Add unit test to confirm issue

* Fix NullReferenceException in ObjectPool when reusing all returned items

The ObjectPool's Use() method was throwing a NullReferenceException when
all items had been returned to the pool and New() was called again. This
was due to _tailNode being null in this scenario.

Added a null check for _tailNode in Use() method to properly reinitialize
the linked list structure when the pool has been emptied and refilled.

* Moved MonoGame.Extended.Gui to its own repository (#905)

* Update animated sprite so the constructor api is similar to original MGE (#906)

* Update animated sprite so the constructor api is similar to original MGE

* Fix tests from changes

* Add pitch support to Camera & OrthographicCamera (#907)

* Added pitch support to OrthographicCamera

* Added pitch functions to base Camera class

* Reorganization (#909)

* Removed MonoGame.Extended.Animations
This project was just a shell that referenced MonoGame.Extended.csproj. It added no additional functionality.

* Rework BitmapFonts for new project organization.

* Cleanup namespaces

* Cleanup namespaces

* Move MonoGame.Extended.Collision into base project

* Moved MonoGame.Extended.Entities into base project

* Moved MonoGame.Extended.Graphics into base project

* Moved MonoGame.Extended.Graphics into base project

* Moved MonoGame.Extended.Input into base project

* Moved MonoGame.Extended.Particles into base project

* Moved MonoGame.Extended.Tiled into base project

* Moved MonoGame.Extended.Tiled into base project

* Moved MonoGame.Extended.Tweening into base project

* Removing SpriteFactory support
This will be added back in at a later date once the SpriteFactory application has been updated

* Update TexturePacker content import support

* Only needs to reference base project now

* Moved to Serialization namespace

* Moved  Json serialization to Serialization.Json namespace

* Moved TexturePacker content DTOs to the Content namespace

* Renamed to Texture2DRegion.Extensions.cs

* Cleaned up namespace

* Moved ReadTiledMapProperties into the ContentReaderExtensions

* Created an Extended content manager

* Moved Tweening tests to base test project

* Moved Tiled test to base test project

* Moved Entities Tests to base test project

* Moved Entities tests to base test project

* Moved Collisions tests to base test project

* Moved Pipeline Tiled test to Pipeline tests project

* Use `var` instead of full type name

* Add Tiled namespace

* Correct `Metadata` property name to new `Meta` property name

* Cleanup namespace

* Add effects namespace

* Add Content namespace

* Update using statements to new namespaces

* Move Pipeline Tiled tests to Pipeline test project

* Use correct namespace

* Use `var` instead of typing out nested types

* Remove unused namespaces

* Update to new namespaces

* Remove unused namespaces

* Update to new namespaces

* Remove dependency on Particles csproj

* Update included content on build

* Add embedded resources

* Merge multi csproj structure into single csproj structure

* TexturePackerPoint properties should be `double` not `int`

* Update csproj

* Use dotnet tool to rebuild effects

* Move effect compilation to targets file
This will ensure the effects are always built

* Fix workflow to build effects on linux

* Set wine path

* Export instead of using actions env section

* Revert back to manual effect compile until automation can be solved on GitHub Ubuntu runner

* Make CurrentFrame return the actual frame index from the source atlas

* Start the animation controller playing, don't make the consumer manually call it initially

* Play is automatically called in the controller ctor

* Added property to get name of current animation

* Only copy reference files if user opts in by specifying property in csproj

* Update Kni solution to new project structure

* Update Fna solution to new project structure

* Bump version number to 4.0.0

* Update release workflow

* Remove old test

* Fix KNI specific issues

* Update for Fna

---------

Co-authored-by: Andreas Torebring <andreas.torebring@gmail.com>
Co-authored-by: Lucas Girouard-Stranks <lustranks@gmail.com>
Co-authored-by: Matt Johnson <matt.johnson.dev@gmail.com>
Co-authored-by: Kus <git@kus.dev>
Co-authored-by: slakedclay <118028225+slakedclay@users.noreply.github.com>
Co-authored-by: Cairo Batista <cairomb1@gmail.com>
Co-authored-by: Gandifil <gandifilmk@gmail.com>
Co-authored-by: David Fidge <dfidge@internode.on.net>
Co-authored-by: Lucas Girouard-Stranks <519592+lithiumtoast@users.noreply.github.com>
Co-authored-by: Lilith Silver <anon>
Co-authored-by: KatDevsGames <north@tinymagnet.com>
Co-authored-by: LACOMBE Dominique <lacombe.dominique@outlook.fr>
Co-authored-by: Apllify <ralilahlou50@gmail.com>
Co-authored-by: Stephen <stephenafoster88@gmail.com>
Co-authored-by: jimmy b <tigurx@gmail.com>
Co-authored-by: Nikos Kastellanos <nkastellanos@gmail.com>
Co-authored-by: Mike Bowers <mbowersjr@gmail.com>
Co-authored-by: James <52947350+jameskellie@users.noreply.github.com>

* Squashed commit of the following:

commit 8b3c2f0e1b
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Tue Jul 9 15:22:33 2024 -0400

    Various fixes for the version 4 initial release (#915)

    * Remove logging statement, not needed

    * Add bmfont texture as dependency

    * Remove existing instance check, this will always be null

    * Fix BitmapFontContentReader

    * Remove TODO comment
    This was added 8 years ago, and I don't see any determinant to the states being global.

    * Renamed `Refresh` to `Update`

    * Added documentation comments

    * file scoped namespace

    * Remove unnecessary using

    * Add file header

    * Remove obsolete methods and update documentation

    * file scoped namespace

    * Remove TODO comment
    The fields being static is fine.

    * Renamed `Refersh` to `Update`

    * Add documentation

    * file scoped namespace

    * Add documentation

    * Remove deprecated methods

commit 1d440c9d7d
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon Jul 8 18:54:38 2024 -0400

    Release/v4 (#914)

    * Make CurrentFrame return the actual frame index from the source atlas

    * Start the animation controller playing, don't make the consumer manually call it initially

    * Play is automatically called in the controller ctor

    * Added property to get name of current animation

    * Only copy reference files if user opts in by specifying property in csproj

    * Update Kni solution to new project structure

    * Update Fna solution to new project structure

    * Bump version number to 4.0.0

    * Update release workflow

    * Remove old test

    * Version 4.0.0 Release (#911)

    * Remove duplicate fact

    * Add .user file to gitignore

    * Assert Rectangle translation transform

    * Assert Rectangle transform not changing size

    * Rectangle extents are rotated correctly

    * Rebuilt effects with mgfxc 3.8.1.303

    * Uncomment and fix tests

    * Remove tests always passing

    * Issue 707, Created test for null ptr during entity destroy

    * Issue 707, Added null propagation inside component manager destroy method

    * Create VelocityInterpolator

    Allow particles to change velocity as they age.

    * add power of two values to MouseButton

    * Add parallaxFactor of layers in models.

    * Add parallaxFactor in rendering logic.

    * Add checking event == 'push'

    * Fix looping animations incorrectly completing when an update contains a large elapsed time.
    Ping pong waits until frame delay is complete on re-entry of the first frame before firing Complete rather than firing Complete immediately upon entering the frame.  This makes it consistent with a non ping pong animation which waits for the frame delay of the last frame before it fires Complete.
    Ping Pong now finishes on the first frame rather than potentially finishing on a different frame if the elapsed time since last update was larger than the time remaining for the animation to become complete.
    Add unit tests for SpriteSheetAnimation.

    * Update README.md

    * Use actual target bounds when testing collision

    * Cleanup

    * Refactor

    Encapsulate a public property (Parents).
    Added xml-comments (to fix some compilation warnings)

    * Format comments and fix spelling

    * Add comments for public fields and properties

    * fix Bag so that it doesn't allocate during foreach enumeration

    * add bag allocation test

    * make WasKey/ButtonJustDown/Up obsolete and replace with clarified versions

    * add support for class (nested) properties

    * support type/class field in maps, layers, & tilemaps

    * Update PrimitiveDrawing.cs

    Add a new DrawSolidCircle to add a fill color

    * fix allocating WasAnyKeyJustDown method; add GetPressedKeys non-alloc overload

    * Use Directory.Build.targets
    Moved common csproj properties for NuGet into Directory.Build.targets

    * Added version tag
    This is so we don't have to rely on github runner actions to generate the version number, and we can use it in the build scripts

    * PackageIconUrl is deprecated
    NuGet packages should use PacakgeIcon with a packed image inside the NuGet insetad of PackageIconUrl

    * Pack README.md in NuGet packages

    * Add common tags for NuGet packages
    Added the `<RepositoryType>`, `<RepositoryBranch>`, `<NeutralLanguage>` and `<PacakgeLicenseExpression>` tags

    * Added new Cake Frosting project

    * Cleaned up
    Cleaned up the Program.cs for the Cake Frosting project.  Added the working direcotry directive

    * Added BuildContext

    * Added BuildTask

    * Added Test Task

    * Added Package Task

    * Added Default task

    * Added namespace

    * Cleanup using statements

    * Ignore cake output directory

    * Updated and automated for NuGet pushing

    * Check for GCLatencyMode.NoGCRegion
    This test fails occasionaly when run through the automated cake script.  Wrapped the EndNoGCREgion in a check for GCTatencyMode.NoGCRegion to resolve

    * Forgot to add System.Runtime using statement

    * Better name for package step

    * NuGet Deploy only in craftworksgames repo

    * Enable Nullable in build project

    * Add additional context variables for build script

    * Use same verbosity, restore, and logo flags as originally used

    * Use same verbosity and nologo setting as original

    * Created Restore task

    Uses same verbosity as original workflow did

    * Update TestTask to use same verbosity, nologo, and nobuild as original workflow

    * Create DeployToGithubTask

    * Create DeployToMyGetTask

    * Create DeployToNuGetTask

    * Added Deploy task

    * Simplify, move most logic into cake build script

    * Ignore Missing XML comment warnings on build

    * Remove async, ignore NU5118 on package

    * Apparently i forgot a semi colon....

    * Remove old collision code.

    * Move collision code to root folder

    * Fix namespaces

    * Add failing test for collisions.

    * Add benchmarks for collisions

    * Refactor collision update, correct reset map

    * Add BoundingRectanglle property for IShape

    * Refactor QuadTree - now we use static AABB intersection check

    * Add layers for collisions

    * Add interface for space splitting and impls

    * Refactor layers for new interface

    * Add comments for collision actor.

    * Add comments for space algo interface.

    * Add spatialHash algo for collision spacing

    * Rename Quadtree to QuadTree

    * Add inline for private methods of SpatialHash.cs

    * Refactor benchmarks for collisions.

    * Fix tests

    * Refactor layers.

    * Add method for set default layer

    * Fix ctor call's

    * Add constructor for CollisionComponent.cs

    * Add extentions for ContentImporter.

    * Add speical contentItem for referencing images.

    * Fix tiledMap processing and writing.

    * Add texture for tile.

    * Add image tileset support

    * Fix using ctor from remote

    * Fix version

    * Fix CiCD

    * Add copy constructor for KeyboardListener.

    * Revert "Add copy constructor for KeyboardListener."

    * Add serializer for RectangleF

    * Add test for new serizalizer

    * Add RectangleFJsonConverter for default serializer.

    * Fixed HSL lerp

    * Move extracting linear operations into special class.

    * Move impls of linear tweening into special class.

    * Add ColorTween

    * Add special TweenTo.

    * Fix TweenTo

    * Add tweening tests

    * Fix activator inside tweener.

    * Check for undefined layer and throw on collision actor insertion

    * Add test coverage

    * Add OrientedBoundingRectangle type

    * Add Points property to OrientedBoundingRectangle

    * Ignore Visual Studio cache

    * Be explicit about conversion of geometries

    Conversion from circle to rectangle should not pass unnoted and be explicit.

    * OrientedBoundedRectangle implements ShapeF

    In that way the OrientedBoundedRectangle can take part of collision tests.

    * Add ascii art to describe intersection tests

    * Update circle and oriented bound box intersection

    * Update dependencies

    * Add Intersects method for OBB

    * Rename to OrientedRectangle

    * Properly intersect circle and oriented rect

    * Calc coll vector for circle and oriented rect

    * Calc coll vector for oriented rects

    * Fixes incorrect rendering of flipped animation tiles

    * Call RectangleF.Intersects to resolve recursion bug
    When both params `a` and `b` are of type `RectangleF` just calling `Shape.Intersects` creates a infinite recursion bug.

    * Update Newtonsoft.Json.dll Dependency

    * Removing MyGet Feed Deploy
    Lithiums MyGet feed won't allow the NuGet push due to the SemVersions of the package containing a 4th build number value.

    * Moved to `/src/cs`
    Moved benchmark and tweening test projects into the `/src/cs` to keep project organization constancy.

    * Move build into `/src/cs`

    * Fix project reference

    * Fix path for project on build task

    * Capital B

    * Changed the Flip Flag array to be private and readonly and added a public property that returns the backing field as a ReadOnlySpan.

    * Move source projects into source directory

    * Moved tests into test directory

    * Moved benchmarks into benchmark directory

    * Moved build into build directory

    * Add root props file

    * Add common props for all tests

    * Added `<Authors>` to root props

    * Add common props for source  directory

    * Add props to build directory

    * Moved props from targets file

    * Removed targets file

    * Update for new .artifacts directory

    * nuget.config is not needed

    * Renamed 'Logos' directory to 'logos'
    Case sensitivity matters depending on operating system, so it's more convenient where possible to keep directory names lower case

    * Use correct working directory after moving

    * Remove duplicate import statement

    * Read from props file not targets file.

    * Use new .artifacts directory

    * Updated .gitattributes

    * Updated .gitignore

    * Set ArtifactPath within the project category directory

    * Drop CAKE build and move Build CI to github workflow

    * Setup code analysis with .editorconfig

    * Don't use nullable reference in a non-nullable context

    * Correct spelling of minimal

    * Fix GitHub Nuget Push (#859)

    * Fix github url for nuget push

    * forgot the h in https

    * Remove GitHub Deploy (#860)

    * Fix github url for nuget push

    * forgot the h in https

    * Remove github push for now, need to check repository settings

    * Cleanup (#862)

    * Removed Roadmap
    The Roadmap seems to have been initially added to show the plans to switch to an FNA fork and act as a bridge for katabasis.  This is no longer the case for this repository as it will remain focused at the moment on MonoGame support only.

    * Added new note at top of readme

    * updated information for installing nuget

    * Made using content pipeline extensions a section and not a quote

    * Removed information about MyGet feed

    * Removed patreon from readme

    * Update License

    * renamed master branch to main

    * Remove community forum link
    MonoGame is closing the community forums in favor of discord and github discussions

    * Update workflows

    * Removed patreon added aristurtledev (#863)

    * Fix funding (#864)

    * Use ArtifactsPath to resolve include dlls for pack (#865)

    * Add additional input parameters (#866)

    * Only specify source and prerelease (#867)

    * Update prerelease version (#868)

    * Replace Newtonsoft.Json with System.Text.Json (#869)

    * Converted to use `System.Text.Json`

    * Remove Newtonsoft.Json Dependency
    Newtonsoft.Json dependency has been removed in favor of System.Text.Json

    * Treat MGFXO file as binary

    * Replace `Matrix2` with `Matrix3x2` (#870)

    * Replace `Matrix2` with `Matrix3x2`

    * Update benchmarks

    * Add XML documentation for `Matrix3x2`

    * Add Edge Test for `Polygon.Contains` (#871)

    * Added Assert for edge contains
    Reference: https://github.com/craftworkgames/MonoGame.Extended/issues/214

    * Renamed to PolygonTests

    * Replace `Size3` with `Vector3` (#872)

    * Rename `Size2` to `SizeF` (#873)

    * Remove `Point3` (#874)

    * Remove `Point2` (#875)

    * Added `CalculateMinimumVector2` and `CalculateMaximumVector2` as replacement for `Point2.Minimum` and `Point2.Maximum`

    * Remove `Point2`

    * Added unit test to ensure issue is resolved (#876)

    * Add unit test for `ContentReaderExtensions.GetRelativeAssetName` (#877)

    * Implements standard IDispose pattern (#879)

    * upgrade solution to VS2022 (#880)

    * update project types to net.Sdk

    * upgrade solution to VS2022

    * Remove unnecessary dependencies to SharpDX and Content.Pipeline from the core library (#881)

    * remove unused SharpDX using

    introduces in #840

    * remove Content.Pipeline reference from the core library

    introduced in #692

    * use System ZLibStream (#882)

    ZLibStream was added in net6

    https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.zlibstream?view=net-8.0

    * Added changelog (#883)

    * Added changelog

    * Added note about unreleased

    * Make links for users (#884)

    * Copy Reference DLLs from NuGet Automatically (#885)

    * Pack value should be `true` not `True`

    * Copy content pipeline dll references to project directory for ease of use

    * Forgot `/` in path

    * Updated Changelog (#886)

    Added information about #885

    * Refactor `BitmapFont` (#887)

    * Update file header

    * Created initial project to move BitmapFont too

    * XMl, Text, and Binar reading now supported for BMFont

    * Refactor BittmapFont

    * Update content pipeline from BitmapFont refactor

    * Update changelog

    * Updated ComponentManager to implement IEnumerable<ComponentMapper> (#823) (#888)

    * Update Changelog (#889)

    * Updated so all projects have changelog in root when viewing in visual studio

    * Updated changelog

    * Texture Atlas Refactor (#890)

    * Moved `TextureRegion2D` and `NinePatchRegion2D` into Graphics namespace
    These are used for more than just texture atlas related things and are primarly for working with `Texture2D` instances and creating sub textures from them.  Moving them to Graphics namespace where `Texture2D` lives in MonoGame

    * Dropped the `2D` suffix from `TextureRegion2D` and `NinePatchRegion2D`

    * Moved `RectanglExtensions` to project root
    This moves the extensions for `Rectangle` to the same relative namespace location as `Rectangle` is in MonoGame.

    * Renamed to `Rectangle.Extensions.cs`

    * Separate `Rectangle` from `RectangleF` extensions

    * Added `GetRelativeRectangle` method

    * Updated documentation

    * Added `GetRelativeRectangle` method

    * Updated documentation

    * Top-level namespace

    * Remove whitespace

    * Move properties up

    * Top-level namespace

    * Don't recreate structs for `Bounds` and Size`
    By having the property return a new struct, this allocates on the stack during situations like a loop during draw.

    * Size should be `Size` not `SizeF` value
    Textures deal in pixels (ints not floats)

    * Removed setter for `Texture` property
    Texture should not be set after region is created

    * Added UV properties

    * Refactor constructors

    * Added documentation

    * Added license header

    * Make it an actual extension method

    * Added `GetSubRegion` extension methods for `TextureRegion`

    * Update documentation about ObjectDisposedException

    * Move const values to top

    * Resolve errors from`TextureRegion` refactor

    * Update unit tests for TextureRegion refactor

    * Started NinePatch rework

    * Refactored NinePatch

    * Update for texture region constructor change

    * Remove ninepatch from atlas

    * Moved `TextureAtlasExtensions` into `SpriteBatch.Extensions`
    These are extension methods for the sprite batch

    * Updated to use new `DrawTextureRegion` method after rename

    * Renamed to NinePatchJsonConverter

    * Removed `GetRegion<T>`
    TextureAtlas no longer contains nine patch regions, so this method isn't needed

    * Update after `NinePatchRegion2DJsonConverter` name change

    * Resolve errors from NinePatch refactor

    * TextureAtlas rework

    * Renamed `TextureRegion` to `Texture2DRegion`

    * Moved ContentReaders to new Content\ContentReaders directory

    * Moved TextureAtlasJsonConvert to Serialization directory

    * Adjusted name from `Texture*` to `Texture2D*`

    * Update runtimereader and runtimettype strings

    * Kni.Extended (#892)

    * KNI projects

    * update actions

    fixes MSBUILD : error MSB1011: Specify which project or solution file to
    use because this folder contains more than one project or solution file.

    * remove test for issue #633

    * build tests

    * KNI TypeReaders

    * KNI/XNA compatible code

    * GetRuntimeReader from runtime types

    * remove MockGameWindow

    * Fna.Extended (#893)

    * FNA projects

    * update actions

    fixes MSBUILD : error MSB1011: Specify which project or solution file to
    use because this folder contains more than one project or solution file.

    * build tests

    * remove test for issue #633

    * FNA/XNA compatible

    * GraphicsDevice Extensions

    * remove MockGameWindow

    ---------

    Co-authored-by: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>

    * Sprite Rework (#897)

    * Add file header

    * Refator to file-scoped namespace

    * Least complex to most complext method ordering

    * Refactor: Group properties at top before constructor

    * Use the new UV properties from Texture2DRegion.
    This removes the dependency on the texture size in the calculations if the TextureRegion property is changed.

    * No longer need to cache normalized origin to preserve it

    * Use ArgumentNullException instead

    * Use ArgumentNullException.ThrowIfNull

    * Refactor:  Use brackets for readability

    * Add xml documentation

    * Add check for disposed texture

    * Moved `Sprite` to `MonoGame.Extended.Graphics`

    * Moved extension methods for rendering sprite into `SpriteBatch.Extensions`

    * `ISpriteBatchDrawable` is not used by anything
    It was originally part of the ScreneGraph implementation in MonoGame.Extended which was replaced by the ECS system.  It appears that this interface was forgotten to be removed and is not used for anything anymore.

    * Add `CreateSprite` methods

    * Add file header

    * Moved `SpriteSheetAnimationFrame` to `MonoGame.Extended.Graphics`

    * Move properties before constructor.

    * Changed `Duration` to `TimeSpan` type

    * Renamed `Index` to `FrameIndex`

    * Add `TextureRegion` property

    * Make property get only

    * Cleanup whitespace

    * Remove `SpriteSheetAnimationFrameJsonConverter`

    * Cleanup unused namespaces

    * Make file-scoped namespace

    * Added xml documentation

    * Added file header

    * marked constructor as internal.
    This will be created from a spritesheet itself

    * Move `SpriteSheetAnimationCycle` to `MonoGame.Extended.Graphcis`

    * File scoped namespace

    * Add file header

    * Reorganize: Move properties above constructor

    * Make `Frames` property a read-only span

    * Remove duration, this is being moved to the frame itself

    * Add `Name` property

    * Set looping, reversed, and ping pong properties in ctor

    * Make ctor internal
    This will be an object created by a spritesheet instane itself.

    * Cleanup: Whitespace

    * Add `FrameCount` property

    * Add `GetFrame` method and accompanying `this[int]` method.

    * Documentation: Added missing documentation.

    * WIP: Temporary commit for workstation change

    * WIP: Temporary commit for workstation change

    * WIP: Temporary commit for workstation change

    * WIP: Temporary commit for workstation change

    * Refactor: Animation Refactor Completed

    * Refactor: Sprite stuff finished

    * Remove tests that can't be run on GitHub CI
    Need to find alternative

    * Make optional name param the last param in Texture2DRegion ctors

    * Resolve merge conflicts

    * Add Kni Package (#898)

    * Capitalize KNI (#899)

    * Resolves NullReferenceException When Getting Invalid Key From TiledMapProperties (#903)

    * Add test to validate issue

    * Resolve issue

    * Fix `NullReferenceException` in `ObjectPool` when reusing all returned items (#904)

    * Replaced delegate with Action<T>

    * Change delegate to Action<T>

    * Add unit test to confirm issue

    * Fix NullReferenceException in ObjectPool when reusing all returned items

    The ObjectPool's Use() method was throwing a NullReferenceException when
    all items had been returned to the pool and New() was called again. This
    was due to _tailNode being null in this scenario.

    Added a null check for _tailNode in Use() method to properly reinitialize
    the linked list structure when the pool has been emptied and refilled.

    * Moved MonoGame.Extended.Gui to its own repository (#905)

    * Update animated sprite so the constructor api is similar to original MGE (#906)

    * Update animated sprite so the constructor api is similar to original MGE

    * Fix tests from changes

    * Add pitch support to Camera & OrthographicCamera (#907)

    * Added pitch support to OrthographicCamera

    * Added pitch functions to base Camera class

    * Reorganization (#909)

    * Removed MonoGame.Extended.Animations
    This project was just a shell that referenced MonoGame.Extended.csproj. It added no additional functionality.

    * Rework BitmapFonts for new project organization.

    * Cleanup namespaces

    * Cleanup namespaces

    * Move MonoGame.Extended.Collision into base project

    * Moved MonoGame.Extended.Entities into base project

    * Moved MonoGame.Extended.Graphics into base project

    * Moved MonoGame.Extended.Graphics into base project

    * Moved MonoGame.Extended.Input into base project

    * Moved MonoGame.Extended.Particles into base project

    * Moved MonoGame.Extended.Tiled into base project

    * Moved MonoGame.Extended.Tiled into base project

    * Moved MonoGame.Extended.Tweening into base project

    * Removing SpriteFactory support
    This will be added back in at a later date once the SpriteFactory application has been updated

    * Update TexturePacker content import support

    * Only needs to reference base project now

    * Moved to Serialization namespace

    * Moved  Json serialization to Serialization.Json namespace

    * Moved TexturePacker content DTOs to the Content namespace

    * Renamed to Texture2DRegion.Extensions.cs

    * Cleaned up namespace

    * Moved ReadTiledMapProperties into the ContentReaderExtensions

    * Created an Extended content manager

    * Moved Tweening tests to base test project

    * Moved Tiled test to base test project

    * Moved Entities Tests to base test project

    * Moved Entities tests to base test project

    * Moved Collisions tests to base test project

    * Moved Pipeline Tiled test to Pipeline tests project

    * Use `var` instead of full type name

    * Add Tiled namespace

    * Correct `Metadata` property name to new `Meta` property name

    * Cleanup namespace

    * Add effects namespace

    * Add Content namespace

    * Update using statements to new namespaces

    * Move Pipeline Tiled tests to Pipeline test project

    * Use correct namespace

    * Use `var` instead of typing out nested types

    * Remove unused namespaces

    * Update to new namespaces

    * Remove unused namespaces

    * Update to new namespaces

    * Remove dependency on Particles csproj

    * Update included content on build

    * Add embedded resources

    * Merge multi csproj structure into single csproj structure

    * TexturePackerPoint properties should be `double` not `int`

    * Update csproj

    * Use dotnet tool to rebuild effects

    * Move effect compilation to targets file
    This will ensure the effects are always built

    * Fix workflow to build effects on linux

    * Set wine path

    * Export instead of using actions env section

    * Revert back to manual effect compile until automation can be solved on GitHub Ubuntu runner

    * Make CurrentFrame return the actual frame index from the source atlas

    * Start the animation controller playing, don't make the consumer manually call it initially

    * Play is automatically called in the controller ctor

    * Added property to get name of current animation

    * Only copy reference files if user opts in by specifying property in csproj

    * Update Kni solution to new project structure

    * Update Fna solution to new project structure

    * Bump version number to 4.0.0

    * Update release workflow

    * Remove old test

    ---------

    Co-authored-by: Andreas Torebring <andreas.torebring@gmail.com>
    Co-authored-by: Lucas Girouard-Stranks <lustranks@gmail.com>
    Co-authored-by: Matt Johnson <matt.johnson.dev@gmail.com>
    Co-authored-by: Kus <git@kus.dev>
    Co-authored-by: slakedclay <118028225+slakedclay@users.noreply.github.com>
    Co-authored-by: Cairo Batista <cairomb1@gmail.com>
    Co-authored-by: Gandifil <gandifilmk@gmail.com>
    Co-authored-by: David Fidge <dfidge@internode.on.net>
    Co-authored-by: Lucas Girouard-Stranks <519592+lithiumtoast@users.noreply.github.com>
    Co-authored-by: Lilith Silver <anon>
    Co-authored-by: KatDevsGames <north@tinymagnet.com>
    Co-authored-by: LACOMBE Dominique <lacombe.dominique@outlook.fr>
    Co-authored-by: Apllify <ralilahlou50@gmail.com>
    Co-authored-by: Stephen <stephenafoster88@gmail.com>
    Co-authored-by: jimmy b <tigurx@gmail.com>
    Co-authored-by: Nikos Kastellanos <nkastellanos@gmail.com>
    Co-authored-by: Mike Bowers <mbowersjr@gmail.com>
    Co-authored-by: James <52947350+jameskellie@users.noreply.github.com>

    * Fix KNI specific issues

    * Update for Fna

    ---------

    Co-authored-by: Andreas Torebring <andreas.torebring@gmail.com>
    Co-authored-by: Lucas Girouard-Stranks <lustranks@gmail.com>
    Co-authored-by: Matt Johnson <matt.johnson.dev@gmail.com>
    Co-authored-by: Kus <git@kus.dev>
    Co-authored-by: slakedclay <118028225+slakedclay@users.noreply.github.com>
    Co-authored-by: Cairo Batista <cairomb1@gmail.com>
    Co-authored-by: Gandifil <gandifilmk@gmail.com>
    Co-authored-by: David Fidge <dfidge@internode.on.net>
    Co-authored-by: Lucas Girouard-Stranks <519592+lithiumtoast@users.noreply.github.com>
    Co-authored-by: KatDevsGames <north@tinymagnet.com>
    Co-authored-by: LACOMBE Dominique <lacombe.dominique@outlook.fr>
    Co-authored-by: Apllify <ralilahlou50@gmail.com>
    Co-authored-by: Stephen <stephenafoster88@gmail.com>
    Co-authored-by: jimmy b <tigurx@gmail.com>
    Co-authored-by: Nikos Kastellanos <nkastellanos@gmail.com>
    Co-authored-by: Mike Bowers <mbowersjr@gmail.com>
    Co-authored-by: James <52947350+jameskellie@users.noreply.github.com>

commit 0fe1064217
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon Jul 8 18:27:54 2024 -0400

    Merge Release into Develop (#912)

    * Make CurrentFrame return the actual frame index from the source atlas

    * Start the animation controller playing, don't make the consumer manually call it initially

    * Play is automatically called in the controller ctor

    * Added property to get name of current animation

    * Only copy reference files if user opts in by specifying property in csproj

    * Update Kni solution to new project structure

    * Update Fna solution to new project structure

    * Bump version number to 4.0.0

    * Update release workflow

    * Remove old test

commit 3a5269cfea
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sat Jul 6 23:46:20 2024 -0400

    Reorganization (#909)

    * Removed MonoGame.Extended.Animations
    This project was just a shell that referenced MonoGame.Extended.csproj. It added no additional functionality.

    * Rework BitmapFonts for new project organization.

    * Cleanup namespaces

    * Cleanup namespaces

    * Move MonoGame.Extended.Collision into base project

    * Moved MonoGame.Extended.Entities into base project

    * Moved MonoGame.Extended.Graphics into base project

    * Moved MonoGame.Extended.Graphics into base project

    * Moved MonoGame.Extended.Input into base project

    * Moved MonoGame.Extended.Particles into base project

    * Moved MonoGame.Extended.Tiled into base project

    * Moved MonoGame.Extended.Tiled into base project

    * Moved MonoGame.Extended.Tweening into base project

    * Removing SpriteFactory support
    This will be added back in at a later date once the SpriteFactory application has been updated

    * Update TexturePacker content import support

    * Only needs to reference base project now

    * Moved to Serialization namespace

    * Moved  Json serialization to Serialization.Json namespace

    * Moved TexturePacker content DTOs to the Content namespace

    * Renamed to Texture2DRegion.Extensions.cs

    * Cleaned up namespace

    * Moved ReadTiledMapProperties into the ContentReaderExtensions

    * Created an Extended content manager

    * Moved Tweening tests to base test project

    * Moved Tiled test to base test project

    * Moved Entities Tests to base test project

    * Moved Entities tests to base test project

    * Moved Collisions tests to base test project

    * Moved Pipeline Tiled test to Pipeline tests project

    * Use `var` instead of full type name

    * Add Tiled namespace

    * Correct `Metadata` property name to new `Meta` property name

    * Cleanup namespace

    * Add effects namespace

    * Add Content namespace

    * Update using statements to new namespaces

    * Move Pipeline Tiled tests to Pipeline test project

    * Use correct namespace

    * Use `var` instead of typing out nested types

    * Remove unused namespaces

    * Update to new namespaces

    * Remove unused namespaces

    * Update to new namespaces

    * Remove dependency on Particles csproj

    * Update included content on build

    * Add embedded resources

    * Merge multi csproj structure into single csproj structure

    * TexturePackerPoint properties should be `double` not `int`

    * Update csproj

    * Use dotnet tool to rebuild effects

    * Move effect compilation to targets file
    This will ensure the effects are always built

    * Fix workflow to build effects on linux

    * Set wine path

    * Export instead of using actions env section

    * Revert back to manual effect compile until automation can be solved on GitHub Ubuntu runner

commit 00a0d4a343
Author: James <52947350+jameskellie@users.noreply.github.com>
Date:   Sun Jul 7 13:45:59 2024 +1000

    Add pitch support to Camera & OrthographicCamera (#907)

    * Added pitch support to OrthographicCamera

    * Added pitch functions to base Camera class

commit 2ad7a9d3db
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon Jul 1 12:33:23 2024 -0400

    Update animated sprite so the constructor api is similar to original MGE (#906)

    * Update animated sprite so the constructor api is similar to original MGE

    * Fix tests from changes

commit 98ee05f58a
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sat Jun 29 18:28:12 2024 -0400

    Moved MonoGame.Extended.Gui to its own repository (#905)

commit 1f3f1c5aa0
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sat Jun 29 17:50:43 2024 -0400

    Fix `NullReferenceException` in `ObjectPool` when reusing all returned items (#904)

    * Replaced delegate with Action<T>

    * Change delegate to Action<T>

    * Add unit test to confirm issue

    * Fix NullReferenceException in ObjectPool when reusing all returned items

    The ObjectPool's Use() method was throwing a NullReferenceException when
    all items had been returned to the pool and New() was called again. This
    was due to _tailNode being null in this scenario.

    Added a null check for _tailNode in Use() method to properly reinitialize
    the linked list structure when the pool has been emptied and refilled.

commit 93473744d7
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Fri Jun 28 21:02:10 2024 -0400

    Resolves NullReferenceException When Getting Invalid Key From TiledMapProperties (#903)

    * Add test to validate issue

    * Resolve issue

commit 9614a62292
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon Jun 24 19:08:26 2024 -0400

    Capitalize KNI (#899)

commit 5b2a44ad28
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon Jun 24 19:04:33 2024 -0400

    Add Kni Package (#898)

commit a501f76162
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sun Jun 23 23:10:16 2024 -0400

    Sprite Rework (#897)

    * Add file header

    * Refator to file-scoped namespace

    * Least complex to most complext method ordering

    * Refactor: Group properties at top before constructor

    * Use the new UV properties from Texture2DRegion.
    This removes the dependency on the texture size in the calculations if the TextureRegion property is changed.

    * No longer need to cache normalized origin to preserve it

    * Use ArgumentNullException instead

    * Use ArgumentNullException.ThrowIfNull

    * Refactor:  Use brackets for readability

    * Add xml documentation

    * Add check for disposed texture

    * Moved `Sprite` to `MonoGame.Extended.Graphics`

    * Moved extension methods for rendering sprite into `SpriteBatch.Extensions`

    * `ISpriteBatchDrawable` is not used by anything
    It was originally part of the ScreneGraph implementation in MonoGame.Extended which was replaced by the ECS system.  It appears that this interface was forgotten to be removed and is not used for anything anymore.

    * Add `CreateSprite` methods

    * Add file header

    * Moved `SpriteSheetAnimationFrame` to `MonoGame.Extended.Graphics`

    * Move properties before constructor.

    * Changed `Duration` to `TimeSpan` type

    * Renamed `Index` to `FrameIndex`

    * Add `TextureRegion` property

    * Make property get only

    * Cleanup whitespace

    * Remove `SpriteSheetAnimationFrameJsonConverter`

    * Cleanup unused namespaces

    * Make file-scoped namespace

    * Added xml documentation

    * Added file header

    * marked constructor as internal.
    This will be created from a spritesheet itself

    * Move `SpriteSheetAnimationCycle` to `MonoGame.Extended.Graphcis`

    * File scoped namespace

    * Add file header

    * Reorganize: Move properties above constructor

    * Make `Frames` property a read-only span

    * Remove duration, this is being moved to the frame itself

    * Add `Name` property

    * Set looping, reversed, and ping pong properties in ctor

    * Make ctor internal
    This will be an object created by a spritesheet instane itself.

    * Cleanup: Whitespace

    * Add `FrameCount` property

    * Add `GetFrame` method and accompanying `this[int]` method.

    * Documentation: Added missing documentation.

    * WIP: Temporary commit for workstation change

    * WIP: Temporary commit for workstation change

    * WIP: Temporary commit for workstation change

    * WIP: Temporary commit for workstation change

    * Refactor: Animation Refactor Completed

    * Refactor: Sprite stuff finished

    * Remove tests that can't be run on GitHub CI
    Need to find alternative

    * Make optional name param the last param in Texture2DRegion ctors

    * Resolve merge conflicts

commit 4ecb74f6b6
Author: Nikos Kastellanos <nkastellanos@gmail.com>
Date:   Mon Jun 24 05:49:58 2024 +0300

    Fna.Extended (#893)

    * FNA projects

    * update actions

    fixes MSBUILD : error MSB1011: Specify which project or solution file to
    use because this folder contains more than one project or solution file.

    * build tests

    * remove test for issue #633

    * FNA/XNA compatible

    * GraphicsDevice Extensions

    * remove MockGameWindow

    ---------

    Co-authored-by: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>

commit 2bbdc38b51
Author: Nikos Kastellanos <nkastellanos@gmail.com>
Date:   Mon Jun 24 05:38:20 2024 +0300

    Kni.Extended (#892)

    * KNI projects

    * update actions

    fixes MSBUILD : error MSB1011: Specify which project or solution file to
    use because this folder contains more than one project or solution file.

    * remove test for issue #633

    * build tests

    * KNI TypeReaders

    * KNI/XNA compatible code

    * GetRuntimeReader from runtime types

    * remove MockGameWindow

commit 8850875fb4
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sat Jun 15 01:37:18 2024 -0400

    Texture Atlas Refactor (#890)

    * Moved `TextureRegion2D` and `NinePatchRegion2D` into Graphics namespace
    These are used for more than just texture atlas related things and are primarly for working with `Texture2D` instances and creating sub textures from them.  Moving them to Graphics namespace where `Texture2D` lives in MonoGame

    * Dropped the `2D` suffix from `TextureRegion2D` and `NinePatchRegion2D`

    * Moved `RectanglExtensions` to project root
    This moves the extensions for `Rectangle` to the same relative namespace location as `Rectangle` is in MonoGame.

    * Renamed to `Rectangle.Extensions.cs`

    * Separate `Rectangle` from `RectangleF` extensions

    * Added `GetRelativeRectangle` method

    * Updated documentation

    * Added `GetRelativeRectangle` method

    * Updated documentation

    * Top-level namespace

    * Remove whitespace

    * Move properties up

    * Top-level namespace

    * Don't recreate structs for `Bounds` and Size`
    By having the property return a new struct, this allocates on the stack during situations like a loop during draw.

    * Size should be `Size` not `SizeF` value
    Textures deal in pixels (ints not floats)

    * Removed setter for `Texture` property
    Texture should not be set after region is created

    * Added UV properties

    * Refactor constructors

    * Added documentation

    * Added license header

    * Make it an actual extension method

    * Added `GetSubRegion` extension methods for `TextureRegion`

    * Update documentation about ObjectDisposedException

    * Move const values to top

    * Resolve errors from`TextureRegion` refactor

    * Update unit tests for TextureRegion refactor

    * Started NinePatch rework

    * Refactored NinePatch

    * Update for texture region constructor change

    * Remove ninepatch from atlas

    * Moved `TextureAtlasExtensions` into `SpriteBatch.Extensions`
    These are extension methods for the sprite batch

    * Updated to use new `DrawTextureRegion` method after rename

    * Renamed to NinePatchJsonConverter

    * Removed `GetRegion<T>`
    TextureAtlas no longer contains nine patch regions, so this method isn't needed

    * Update after `NinePatchRegion2DJsonConverter` name change

    * Resolve errors from NinePatch refactor

    * TextureAtlas rework

    * Renamed `TextureRegion` to `Texture2DRegion`

    * Moved ContentReaders to new Content\ContentReaders directory

    * Moved TextureAtlasJsonConvert to Serialization directory

    * Adjusted name from `Texture*` to `Texture2D*`

    * Update runtimereader and runtimettype strings

commit 9bd208184f
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Tue Jun 11 11:22:10 2024 -0400

    Update Changelog (#889)

    * Updated so all projects have changelog in root when viewing in visual studio

    * Updated changelog

commit 82daabb120
Author: Mike Bowers <mbowersjr@gmail.com>
Date:   Tue Jun 11 11:14:36 2024 -0400

    Updated ComponentManager to implement IEnumerable<ComponentMapper> (#823) (#888)

commit 66277568c8
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Tue Jun 11 00:25:10 2024 -0400

    Refactor `BitmapFont` (#887)

    * Update file header

    * Created initial project to move BitmapFont too

    * XMl, Text, and Binar reading now supported for BMFont

    * Refactor BittmapFont

    * Update content pipeline from BitmapFont refactor

    * Update changelog

commit 1f0235c605
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon Jun 3 00:30:29 2024 -0400

    Updated Changelog (#886)

    Added information about #885

commit 792aa89809
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon Jun 3 00:27:38 2024 -0400

    Copy Reference DLLs from NuGet Automatically (#885)

    * Pack value should be `true` not `True`

    * Copy content pipeline dll references to project directory for ease of use

    * Forgot `/` in path

commit d40ad10459
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sat Jun 1 17:34:24 2024 -0400

    Make links for users (#884)

commit 4675bff3d4
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sat Jun 1 17:22:23 2024 -0400

    Added changelog (#883)

    * Added changelog

    * Added note about unreleased

commit cfb97d47e3
Author: Nikos Kastellanos <nkastellanos@gmail.com>
Date:   Sun Jun 2 00:12:56 2024 +0300

    use System ZLibStream (#882)

    ZLibStream was added in net6

    https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.zlibstream?view=net-8.0

commit 980d7a0c00
Author: Nikos Kastellanos <nkastellanos@gmail.com>
Date:   Sun Jun 2 00:10:38 2024 +0300

    Remove unnecessary dependencies to SharpDX and Content.Pipeline from the core library (#881)

    * remove unused SharpDX using

    introduces in #840

    * remove Content.Pipeline reference from the core library

    introduced in #692

commit 8810a4ce7e
Author: Nikos Kastellanos <nkastellanos@gmail.com>
Date:   Sun Jun 2 00:08:44 2024 +0300

    upgrade solution to VS2022 (#880)

    * update project types to net.Sdk

    * upgrade solution to VS2022

commit dcf1589066
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sat Jun 1 17:05:51 2024 -0400

    Implements standard IDispose pattern (#879)

commit 1119f82ff6
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Wed May 29 11:40:59 2024 -0400

    Add unit test for `ContentReaderExtensions.GetRelativeAssetName` (#877)

commit b9c011bee9
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Wed May 29 11:11:50 2024 -0400

    Added unit test to ensure issue is resolved (#876)

commit 9239fced04
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Wed May 29 01:32:50 2024 -0400

    Remove `Point2` (#875)

    * Added `CalculateMinimumVector2` and `CalculateMaximumVector2` as replacement for `Point2.Minimum` and `Point2.Maximum`

    * Remove `Point2`

commit 0427aa3ded
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Wed May 29 00:29:14 2024 -0400

    Remove `Point3` (#874)

commit 25206c57da
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Wed May 29 00:23:49 2024 -0400

    Rename `Size2` to `SizeF` (#873)

commit 27108ba8d0
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Wed May 29 00:01:26 2024 -0400

    Replace `Size3` with `Vector3` (#872)

commit 89c8984079
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon May 27 17:58:54 2024 -0400

    Add Edge Test for `Polygon.Contains` (#871)

    * Added Assert for edge contains
    Reference: https://github.com/craftworkgames/MonoGame.Extended/issues/214

    * Renamed to PolygonTests

commit 49038f5d42
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon May 27 15:44:38 2024 -0400

    Replace `Matrix2` with `Matrix3x2` (#870)

    * Replace `Matrix2` with `Matrix3x2`

    * Update benchmarks

    * Add XML documentation for `Matrix3x2`

commit d008b1bd41
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Wed May 22 23:23:36 2024 -0400

    Replace Newtonsoft.Json with System.Text.Json (#869)

    * Converted to use `System.Text.Json`

    * Remove Newtonsoft.Json Dependency
    Newtonsoft.Json dependency has been removed in favor of System.Text.Json

    * Treat MGFXO file as binary

commit ee0883ebb4
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon May 20 18:40:23 2024 -0400

    Update prerelease version (#868)

commit 0867284bd7
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon May 20 18:32:46 2024 -0400

    Only specify source and prerelease (#867)

commit 7bda811f4a
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon May 20 18:21:00 2024 -0400

    Add additional input parameters (#866)

commit f8376db06a
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon May 20 18:19:24 2024 -0400

    Use ArtifactsPath to resolve include dlls for pack (#865)

commit 4d582fe850
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon May 20 02:24:27 2024 -0400

    Fix funding (#864)

commit 43e313eb50
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon May 20 02:20:55 2024 -0400

    Removed patreon added aristurtledev (#863)

commit 9a7ce46635
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Mon May 20 02:12:43 2024 -0400

    Cleanup (#862)

    * Removed Roadmap
    The Roadmap seems to have been initially added to show the plans to switch to an FNA fork and act as a bridge for katabasis.  This is no longer the case for this repository as it will remain focused at the moment on MonoGame support only.

    * Added new note at top of readme

    * updated information for installing nuget

    * Made using content pipeline extensions a section and not a quote

    * Removed information about MyGet feed

    * Removed patreon from readme

    * Update License

    * renamed master branch to main

    * Remove community forum link
    MonoGame is closing the community forums in favor of discord and github discussions

    * Update workflows

commit 0a17af4829
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sun May 19 16:23:26 2024 -0400

    Remove GitHub Deploy (#860)

    * Fix github url for nuget push

    * forgot the h in https

    * Remove github push for now, need to check repository settings

commit c16d831088
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sun May 19 16:17:05 2024 -0400

    Fix GitHub Nuget Push (#859)

    * Fix github url for nuget push

    * forgot the h in https

commit 8b34b04651
Merge: 9c5f7cd3 8c09ca14
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sun May 19 16:12:06 2024 -0400

    Merge pull request #858 from craftworkgames/reorg

    Reorginze project strcture

commit 8c09ca1495
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sun May 19 16:07:58 2024 -0400

    Correct spelling of minimal

commit 694b595694
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sun May 19 15:53:41 2024 -0400

    Don't use nullable reference in a non-nullable context

commit f25d972b88
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sun May 19 15:53:24 2024 -0400

    Setup code analysis with .editorconfig

commit 24d9477a0f
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sun May 19 15:28:33 2024 -0400

    Drop CAKE build and move Build CI to github workflow

commit 6b02975755
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sun May 19 15:27:43 2024 -0400

    Set ArtifactPath within the project category directory

commit 36eb2c66bc
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sun May 19 15:25:54 2024 -0400

    Updated .gitignore

commit 8b991b8041
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sun May 19 15:25:36 2024 -0400

    Updated .gitattributes

commit 4bcf940e08
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:50:55 2024 -0400

    Use new .artifacts directory

commit 33be368238
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:40:49 2024 -0400

    Read from props file not targets file.

commit 126b79dd42
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:40:34 2024 -0400

    Remove duplicate import statement

commit 7aa97cd909
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:40:22 2024 -0400

    Use correct working directory after moving

commit 85903027f0
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:37:29 2024 -0400

    Renamed 'Logos' directory to 'logos'
    Case sensitivity matters depending on operating system, so it's more convenient where possible to keep directory names lower case

commit 399236428c
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:33:19 2024 -0400

    nuget.config is not needed

commit a5f16a0cb9
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:30:49 2024 -0400

    Update for new .artifacts directory

commit 00808876f1
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:29:53 2024 -0400

    Removed targets file

commit a85188eb32
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:29:48 2024 -0400

    Moved props from targets file

commit a5c18a6f70
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:15:58 2024 -0400

    Add props to build directory

commit 32bb9d5601
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:01:47 2024 -0400

    Add common props for source  directory

commit 2696b4f5f4
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 21:01:16 2024 -0400

    Added `<Authors>` to root props

commit a5209fecad
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 20:40:12 2024 -0400

    Add common props for all tests

commit f4aff0e6a1
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 20:39:58 2024 -0400

    Add root props file

commit 99b995d6b1
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 20:04:57 2024 -0400

    Moved build into build directory

commit 7e5ffdcf6b
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 20:02:59 2024 -0400

    Moved benchmarks into benchmark directory

commit f68cff17bf
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 20:01:37 2024 -0400

    Moved tests into test directory

commit a4d72eaf6c
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Sat May 18 19:59:41 2024 -0400

    Move source projects into source directory

commit 9c5f7cd3b4
Merge: 455ea4d5 55bfe25c
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Sat May 18 15:30:58 2024 -0400

    Merge pull request #846 from tigurx/tiled_animation_flip_fix

    Fixes incorrect rendering of flipped animation tiles

commit 55bfe25c94
Merge: a7b0a123 aea6ee4c
Author: jimmy b <tigurx@gmail.com>
Date:   Sat May 18 13:17:47 2024 -0500

    Merge branch 'tiled_animation_flip_fix' of https://github.com/tigurx/MonoGame.Extended into tiled_animation_flip_fix

commit aea6ee4c91
Merge: 021949fe 455ea4d5
Author: tigurx <tigurx@gmail.com>
Date:   Sat May 18 13:15:19 2024 -0500

    Merge branch 'craftworkgames:develop' into tiled_animation_flip_fix

commit a7b0a12383
Author: jimmy b <tigurx@gmail.com>
Date:   Sat May 18 13:14:32 2024 -0500

    Changed the Flip Flag array to be private and readonly and added a public property that returns the backing field as a ReadOnlySpan.

commit 455ea4d561
Merge: d650e64b 6c6d00e2
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Fri May 17 22:24:58 2024 -0400

    Merge pull request #857 from AristurtleDev/reorg

    Move build, benchmarks and tweening test into `/src/cs` directory

commit 6c6d00e234
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Fri May 17 22:22:48 2024 -0400

    Capital B

commit 0ff198c75f
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Fri May 17 22:19:57 2024 -0400

    Fix path for project on build task

commit b935e2318e
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Fri May 17 22:16:03 2024 -0400

    Fix project reference

commit a99c384d15
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Fri May 17 22:15:54 2024 -0400

    Move build into `/src/cs`

commit 021949fe8f
Merge: a166f340 d650e64b
Author: tigurx <tigurx@gmail.com>
Date:   Fri May 17 14:23:23 2024 -0500

    Merge branch 'craftworkgames:develop' into tiled_animation_flip_fix

commit 2c13bf1933
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Fri May 17 12:05:09 2024 -0400

    Moved to `/src/cs`
    Moved benchmark and tweening test projects into the `/src/cs` to keep project organization constancy.

commit d650e64b44
Merge: 0a25e0bd ed2371b5
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Fri May 17 10:38:51 2024 -0400

    Merge pull request #856 from AristurtleDev/disable/myget-feed

    Removing MyGet Feed Deploy

commit ed2371b55a
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Fri May 17 10:31:28 2024 -0400

    Removing MyGet Feed Deploy
    Lithiums MyGet feed won't allow the NuGet push due to the SemVersions of the package containing a 4th build number value.

commit 0a25e0bdf7
Merge: 04283d58 72e4490a
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Fri May 17 10:19:01 2024 -0400

    Merge pull request #852 from AristurtleDev/fix/intersetcs-recursion-bug

    Resolves Infinite Recursion with Shape.Intersects(this IShapeF, IShapeF)

commit 04283d58ee
Merge: 4da89293 cd4a47ae
Author: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
Date:   Fri May 17 10:18:17 2024 -0400

    Merge pull request #854 from AristurtleDev/fix/update-newtonsoft-dependency

    Update Newtonsoft.Json.dll Dependency

commit cd4a47ae35
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Fri May 17 00:05:13 2024 -0400

    Update Newtonsoft.Json.dll Dependency

commit 72e4490ab9
Author: Christopher Whitley <aristurtledev@gmail.com>
Date:   Thu May 16 23:08:33 2024 -0400

    Call RectangleF.Intersects to resolve recursion bug
    When both params `a` and `b` are of type `RectangleF` just calling `Shape.Intersects` creates a infinite recursion bug.

commit 4da8929311
Merge: 0dd85c7d e6e26d28
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Sun Apr 28 20:58:39 2024 +0300

    Merge pull request #815 from LilithSilver/rename-wasbutton

    Improve naming of WasKeyJustDown/Up and WasButtonJustDown/Up

commit e6e26d28fc
Merge: 7b8be4ce 0dd85c7d
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Sun Apr 28 20:58:25 2024 +0300

    Merge branch 'develop' into rename-wasbutton

commit 0dd85c7d80
Merge: 0012e0e9 0fe364a2
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Sun Apr 28 19:54:50 2024 +0300

    Merge pull request #820 from LilithSilver/add-missing-getpressedkeys

    Decrease allocation overhead on KeyboardStateExtended

commit a166f34078
Author: jimmy b <tigurx@gmail.com>
Date:   Sun Apr 28 11:39:21 2024 -0500

    Fixes incorrect rendering of flipped animation tiles

commit 0012e0e988
Merge: a19b1e68 a342fedf
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Sun Apr 28 19:26:47 2024 +0300

    Merge pull request #840 from toore/feature-oriented-bounding-rectangle

    Add oriented rectangle shape for improved collision detection

commit a19b1e6881
Merge: bde79b89 6cc4b6cb
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Sun Apr 28 16:08:59 2024 +0300

    Merge pull request #839 from safoster88/feature/check_for_undefined_layer

    Check for undefined layer and throw on collision actor insertion

commit a342fedfd7
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Fri Mar 15 21:27:14 2024 +0100

    Calc coll vector for oriented rects

commit 377df89247
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Sun Mar 10 21:23:21 2024 +0100

    Calc coll vector for circle and oriented rect

commit bf1159d9f3
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Fri Mar 8 18:16:03 2024 +0100

    Properly intersect circle and oriented rect

commit 6a380e381b
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Thu Feb 29 22:11:57 2024 +0100

    Rename to OrientedRectangle

commit 1d878727ec
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Sat Feb 24 00:40:30 2024 +0100

    Add Intersects method for OBB

commit 9007c6bd55
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Sun Feb 11 19:26:54 2024 +0100

    Update dependencies

commit 0a2ce12134
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Sun Aug 6 19:32:01 2023 +0200

    Update circle and oriented bound box intersection

commit c1873c2dec
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Mon Nov 21 22:57:55 2022 +0100

    Add ascii art to describe intersection tests

commit 82303e48b1
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Mon Sep 19 21:55:00 2022 +0200

    OrientedBoundedRectangle implements ShapeF

    In that way the OrientedBoundedRectangle can take part of collision tests.

commit 135507e850
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Mon Sep 19 21:18:33 2022 +0200

    Be explicit about conversion of geometries

    Conversion from circle to rectangle should not pass unnoted and be explicit.

commit b85f526275
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Wed Feb 7 21:55:52 2024 +0100

    Ignore Visual Studio cache

commit db807cd659
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Wed Sep 7 01:56:47 2022 +0200

    Add Points property to OrientedBoundingRectangle

commit 88a51a6f68
Author: Andreas Torebring <andreas.torebring@gmail.com>
Date:   Mon Sep 5 19:24:24 2022 +0200

    Add OrientedBoundingRectangle type

commit bde79b8997
Merge: 68c0b3d7 5b858d45
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Sun Apr 7 23:20:37 2024 +0300

    Merge pull request #819 from Asthegor/patch-1

    Update PrimitiveDrawing.cs

commit 68c0b3d736
Merge: 37026922 9c0865a2
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Sun Apr 7 23:16:37 2024 +0300

    Merge pull request #818 from KatDevsGames/pipeline-update-map-layer-tilemap-class

    support type/class field in maps, layers, & tilemaps

commit 9c0865a2ae
Merge: 3011110b 37026922
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Sun Apr 7 23:16:31 2024 +0300

    Merge branch 'develop' into pipeline-update-map-layer-tilemap-class

commit 37026922e1
Merge: 51aea6c8 ce0a1a2f
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Sun Apr 7 23:15:13 2024 +0300

    Merge pull request #817 from KatDevsGames/pipeline-update-class-properties

    add support for class (nested) properties

commit ce0a1a2f8c
Merge: fba908f4 51aea6c8
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Sun Apr 7 23:12:01 2024 +0300

    Merge branch 'develop' into pipeline-update-class-properties

commit 51aea6c84a
Merge: 6acc822b c4e4ecb4
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Sun Apr 7 21:19:19 2024 +0300

    Merge pull request #834 from Apllify/fix-hsl-lerp

    Fixed HSL Lerp function

commit 6cc4b6cb96
Author: Stephen <stephenafoster88@gmail.com>
Date:   Sat Feb 17 13:25:11 2024 +0000

    Add test coverage

commit 8d95d49924
Author: Stephen <stephenafoster88@gmail.com>
Date:   Sat Feb 17 13:15:56 2024 +0000

    Check for undefined layer and throw on collision actor insertion

commit 6acc822be1
Merge: c4f9b3cd 79a20706
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Mon Jan 22 19:12:29 2024 +0100

    Merge pull request #837 from craftworkgames/tweener_enchancing3

    Tweener enchancing3

commit 79a20706b1
Author: Gandifil <gandifilmk@gmail.com>
Date:   Mon Jan 22 21:11:44 2024 +0300

    Fix activator inside tweener.

commit e93ec550c4
Author: Gandifil <gandifilmk@gmail.com>
Date:   Mon Jan 22 21:11:30 2024 +0300

    Add tweening tests

commit c4f9b3cddc
Merge: bb8a70c6 4383bb81
Author: Max Kopjev <GandifilMK@gmail.com>
Date:   Mon Jan 22 18:26:28 2024 +0100

    Merge pull request #836 from craftworkgames/tweener_enchancing2

    Fix TweenTo

commit 4383bb8113
Author: Gandifil <gandifilmk@gmail.com>
Date:   Mon Jan 22 20:26:00 2024 +0300

    Fix TweenTo

commit bb8a70c607
Merge: 801196c3 a2e3aacb
Author: Max Kopjev <GandifilM…

* Update for Version 4.0.0

---------

Co-authored-by: Andreas Torebring <andreas.torebring@gmail.com>
Co-authored-by: Lucas Girouard-Stranks <lustranks@gmail.com>
Co-authored-by: Matt Johnson <matt.johnson.dev@gmail.com>
Co-authored-by: Kus <git@kus.dev>
Co-authored-by: slakedclay <118028225+slakedclay@users.noreply.github.com>
Co-authored-by: Cairo Batista <cairomb1@gmail.com>
Co-authored-by: Gandifil <gandifilmk@gmail.com>
Co-authored-by: David Fidge <dfidge@internode.on.net>
Co-authored-by: Lucas Girouard-Stranks <519592+lithiumtoast@users.noreply.github.com>
Co-authored-by: KatDevsGames <north@tinymagnet.com>
Co-authored-by: LACOMBE Dominique <lacombe.dominique@outlook.fr>
Co-authored-by: Apllify <ralilahlou50@gmail.com>
Co-authored-by: Stephen <stephenafoster88@gmail.com>
Co-authored-by: jimmy b <tigurx@gmail.com>
Co-authored-by: Nikos Kastellanos <nkastellanos@gmail.com>
Co-authored-by: Mike Bowers <mbowersjr@gmail.com>
Co-authored-by: James <52947350+jameskellie@users.noreply.github.com>
2024-07-09 16:00:03 -04:00
Christopher Whitley 8b3c2f0e1b Various fixes for the version 4 initial release (#915)
* Remove logging statement, not needed

* Add bmfont texture as dependency

* Remove existing instance check, this will always be null

* Fix BitmapFontContentReader

* Remove TODO comment
This was added 8 years ago, and I don't see any determinant to the states being global.

* Renamed `Refresh` to `Update`

* Added documentation comments

* file scoped namespace

* Remove unnecessary using

* Add file header

* Remove obsolete methods and update documentation

* file scoped namespace

* Remove TODO comment
The fields being static is fine.

* Renamed `Refersh` to `Update`

* Add documentation

* file scoped namespace

* Add documentation

* Remove deprecated methods
2024-07-09 15:22:33 -04:00
Christopher Whitley 1d440c9d7d Release/v4 (#914)
* Make CurrentFrame return the actual frame index from the source atlas

* Start the animation controller playing, don't make the consumer manually call it initially

* Play is automatically called in the controller ctor

* Added property to get name of current animation

* Only copy reference files if user opts in by specifying property in csproj

* Update Kni solution to new project structure

* Update Fna solution to new project structure

* Bump version number to 4.0.0

* Update release workflow

* Remove old test

* Version 4.0.0 Release (#911)

* Remove duplicate fact

* Add .user file to gitignore

* Assert Rectangle translation transform

* Assert Rectangle transform not changing size

* Rectangle extents are rotated correctly

* Rebuilt effects with mgfxc 3.8.1.303

* Uncomment and fix tests

* Remove tests always passing

* Issue 707, Created test for null ptr during entity destroy

* Issue 707, Added null propagation inside component manager destroy method

* Create VelocityInterpolator

Allow particles to change velocity as they age.

* add power of two values to MouseButton

* Add parallaxFactor of layers in models.

* Add parallaxFactor in rendering logic.

* Add checking event == 'push'

* Fix looping animations incorrectly completing when an update contains a large elapsed time.
Ping pong waits until frame delay is complete on re-entry of the first frame before firing Complete rather than firing Complete immediately upon entering the frame.  This makes it consistent with a non ping pong animation which waits for the frame delay of the last frame before it fires Complete.
Ping Pong now finishes on the first frame rather than potentially finishing on a different frame if the elapsed time since last update was larger than the time remaining for the animation to become complete.
Add unit tests for SpriteSheetAnimation.

* Update README.md

* Use actual target bounds when testing collision

* Cleanup

* Refactor

Encapsulate a public property (Parents).
Added xml-comments (to fix some compilation warnings)

* Format comments and fix spelling

* Add comments for public fields and properties

* fix Bag so that it doesn't allocate during foreach enumeration

* add bag allocation test

* make WasKey/ButtonJustDown/Up obsolete and replace with clarified versions

* add support for class (nested) properties

* support type/class field in maps, layers, & tilemaps

* Update PrimitiveDrawing.cs

Add a new DrawSolidCircle to add a fill color

* fix allocating WasAnyKeyJustDown method; add GetPressedKeys non-alloc overload

* Use Directory.Build.targets
Moved common csproj properties for NuGet into Directory.Build.targets

* Added version tag
This is so we don't have to rely on github runner actions to generate the version number, and we can use it in the build scripts

* PackageIconUrl is deprecated
NuGet packages should use PacakgeIcon with a packed image inside the NuGet insetad of PackageIconUrl

* Pack README.md in NuGet packages

* Add common tags for NuGet packages
Added the `<RepositoryType>`, `<RepositoryBranch>`, `<NeutralLanguage>` and `<PacakgeLicenseExpression>` tags

* Added new Cake Frosting project

* Cleaned up
Cleaned up the Program.cs for the Cake Frosting project.  Added the working direcotry directive

* Added BuildContext

* Added BuildTask

* Added Test Task

* Added Package Task

* Added Default task

* Added namespace

* Cleanup using statements

* Ignore cake output directory

* Updated and automated for NuGet pushing

* Check for GCLatencyMode.NoGCRegion
This test fails occasionaly when run through the automated cake script.  Wrapped the EndNoGCREgion in a check for GCTatencyMode.NoGCRegion to resolve

* Forgot to add System.Runtime using statement

* Better name for package step

* NuGet Deploy only in craftworksgames repo

* Enable Nullable in build project

* Add additional context variables for build script

* Use same verbosity, restore, and logo flags as originally used

* Use same verbosity and nologo setting as original

* Created Restore task

Uses same verbosity as original workflow did

* Update TestTask to use same verbosity, nologo, and nobuild as original workflow

* Create DeployToGithubTask

* Create DeployToMyGetTask

* Create DeployToNuGetTask

* Added Deploy task

* Simplify, move most logic into cake build script

* Ignore Missing XML comment warnings on build

* Remove async, ignore NU5118 on package

* Apparently i forgot a semi colon....

* Remove old collision code.

* Move collision code to root folder

* Fix namespaces

* Add failing test for collisions.

* Add benchmarks for collisions

* Refactor collision update, correct reset map

* Add BoundingRectanglle property for IShape

* Refactor QuadTree - now we use static AABB intersection check

* Add layers for collisions

* Add interface for space splitting and impls

* Refactor layers for new interface

* Add comments for collision actor.

* Add comments for space algo interface.

* Add spatialHash algo for collision spacing

* Rename Quadtree to QuadTree

* Add inline for private methods of SpatialHash.cs

* Refactor benchmarks for collisions.

* Fix tests

* Refactor layers.

* Add method for set default layer

* Fix ctor call's

* Add constructor for CollisionComponent.cs

* Add extentions for ContentImporter.

* Add speical contentItem for referencing images.

* Fix tiledMap processing and writing.

* Add texture for tile.

* Add image tileset support

* Fix using ctor from remote

* Fix version

* Fix CiCD

* Add copy constructor for KeyboardListener.

* Revert "Add copy constructor for KeyboardListener."

* Add serializer for RectangleF

* Add test for new serizalizer

* Add RectangleFJsonConverter for default serializer.

* Fixed HSL lerp

* Move extracting linear operations into special class.

* Move impls of linear tweening into special class.

* Add ColorTween

* Add special TweenTo.

* Fix TweenTo

* Add tweening tests

* Fix activator inside tweener.

* Check for undefined layer and throw on collision actor insertion

* Add test coverage

* Add OrientedBoundingRectangle type

* Add Points property to OrientedBoundingRectangle

* Ignore Visual Studio cache

* Be explicit about conversion of geometries

Conversion from circle to rectangle should not pass unnoted and be explicit.

* OrientedBoundedRectangle implements ShapeF

In that way the OrientedBoundedRectangle can take part of collision tests.

* Add ascii art to describe intersection tests

* Update circle and oriented bound box intersection

* Update dependencies

* Add Intersects method for OBB

* Rename to OrientedRectangle

* Properly intersect circle and oriented rect

* Calc coll vector for circle and oriented rect

* Calc coll vector for oriented rects

* Fixes incorrect rendering of flipped animation tiles

* Call RectangleF.Intersects to resolve recursion bug
When both params `a` and `b` are of type `RectangleF` just calling `Shape.Intersects` creates a infinite recursion bug.

* Update Newtonsoft.Json.dll Dependency

* Removing MyGet Feed Deploy
Lithiums MyGet feed won't allow the NuGet push due to the SemVersions of the package containing a 4th build number value.

* Moved to `/src/cs`
Moved benchmark and tweening test projects into the `/src/cs` to keep project organization constancy.

* Move build into `/src/cs`

* Fix project reference

* Fix path for project on build task

* Capital B

* Changed the Flip Flag array to be private and readonly and added a public property that returns the backing field as a ReadOnlySpan.

* Move source projects into source directory

* Moved tests into test directory

* Moved benchmarks into benchmark directory

* Moved build into build directory

* Add root props file

* Add common props for all tests

* Added `<Authors>` to root props

* Add common props for source  directory

* Add props to build directory

* Moved props from targets file

* Removed targets file

* Update for new .artifacts directory

* nuget.config is not needed

* Renamed 'Logos' directory to 'logos'
Case sensitivity matters depending on operating system, so it's more convenient where possible to keep directory names lower case

* Use correct working directory after moving

* Remove duplicate import statement

* Read from props file not targets file.

* Use new .artifacts directory

* Updated .gitattributes

* Updated .gitignore

* Set ArtifactPath within the project category directory

* Drop CAKE build and move Build CI to github workflow

* Setup code analysis with .editorconfig

* Don't use nullable reference in a non-nullable context

* Correct spelling of minimal

* Fix GitHub Nuget Push (#859)

* Fix github url for nuget push

* forgot the h in https

* Remove GitHub Deploy (#860)

* Fix github url for nuget push

* forgot the h in https

* Remove github push for now, need to check repository settings

* Cleanup (#862)

* Removed Roadmap
The Roadmap seems to have been initially added to show the plans to switch to an FNA fork and act as a bridge for katabasis.  This is no longer the case for this repository as it will remain focused at the moment on MonoGame support only.

* Added new note at top of readme

* updated information for installing nuget

* Made using content pipeline extensions a section and not a quote

* Removed information about MyGet feed

* Removed patreon from readme

* Update License

* renamed master branch to main

* Remove community forum link
MonoGame is closing the community forums in favor of discord and github discussions

* Update workflows

* Removed patreon added aristurtledev (#863)

* Fix funding (#864)

* Use ArtifactsPath to resolve include dlls for pack (#865)

* Add additional input parameters (#866)

* Only specify source and prerelease (#867)

* Update prerelease version (#868)

* Replace Newtonsoft.Json with System.Text.Json (#869)

* Converted to use `System.Text.Json`

* Remove Newtonsoft.Json Dependency
Newtonsoft.Json dependency has been removed in favor of System.Text.Json

* Treat MGFXO file as binary

* Replace `Matrix2` with `Matrix3x2` (#870)

* Replace `Matrix2` with `Matrix3x2`

* Update benchmarks

* Add XML documentation for `Matrix3x2`

* Add Edge Test for `Polygon.Contains` (#871)

* Added Assert for edge contains
Reference: https://github.com/craftworkgames/MonoGame.Extended/issues/214

* Renamed to PolygonTests

* Replace `Size3` with `Vector3` (#872)

* Rename `Size2` to `SizeF` (#873)

* Remove `Point3` (#874)

* Remove `Point2` (#875)

* Added `CalculateMinimumVector2` and `CalculateMaximumVector2` as replacement for `Point2.Minimum` and `Point2.Maximum`

* Remove `Point2`

* Added unit test to ensure issue is resolved (#876)

* Add unit test for `ContentReaderExtensions.GetRelativeAssetName` (#877)

* Implements standard IDispose pattern (#879)

* upgrade solution to VS2022 (#880)

* update project types to net.Sdk

* upgrade solution to VS2022

* Remove unnecessary dependencies to SharpDX and Content.Pipeline from the core library (#881)

* remove unused SharpDX using

introduces in #840

* remove Content.Pipeline reference from the core library

introduced in #692

* use System ZLibStream (#882)

ZLibStream was added in net6

https://learn.microsoft.com/en-us/dotnet/api/system.io.compression.zlibstream?view=net-8.0

* Added changelog (#883)

* Added changelog

* Added note about unreleased

* Make links for users (#884)

* Copy Reference DLLs from NuGet Automatically (#885)

* Pack value should be `true` not `True`

* Copy content pipeline dll references to project directory for ease of use

* Forgot `/` in path

* Updated Changelog (#886)

Added information about #885

* Refactor `BitmapFont` (#887)

* Update file header

* Created initial project to move BitmapFont too

* XMl, Text, and Binar reading now supported for BMFont

* Refactor BittmapFont

* Update content pipeline from BitmapFont refactor

* Update changelog

* Updated ComponentManager to implement IEnumerable<ComponentMapper> (#823) (#888)

* Update Changelog (#889)

* Updated so all projects have changelog in root when viewing in visual studio

* Updated changelog

* Texture Atlas Refactor (#890)

* Moved `TextureRegion2D` and `NinePatchRegion2D` into Graphics namespace
These are used for more than just texture atlas related things and are primarly for working with `Texture2D` instances and creating sub textures from them.  Moving them to Graphics namespace where `Texture2D` lives in MonoGame

* Dropped the `2D` suffix from `TextureRegion2D` and `NinePatchRegion2D`

* Moved `RectanglExtensions` to project root
This moves the extensions for `Rectangle` to the same relative namespace location as `Rectangle` is in MonoGame.

* Renamed to `Rectangle.Extensions.cs`

* Separate `Rectangle` from `RectangleF` extensions

* Added `GetRelativeRectangle` method

* Updated documentation

* Added `GetRelativeRectangle` method

* Updated documentation

* Top-level namespace

* Remove whitespace

* Move properties up

* Top-level namespace

* Don't recreate structs for `Bounds` and Size`
By having the property return a new struct, this allocates on the stack during situations like a loop during draw.

* Size should be `Size` not `SizeF` value
Textures deal in pixels (ints not floats)

* Removed setter for `Texture` property
Texture should not be set after region is created

* Added UV properties

* Refactor constructors

* Added documentation

* Added license header

* Make it an actual extension method

* Added `GetSubRegion` extension methods for `TextureRegion`

* Update documentation about ObjectDisposedException

* Move const values to top

* Resolve errors from`TextureRegion` refactor

* Update unit tests for TextureRegion refactor

* Started NinePatch rework

* Refactored NinePatch

* Update for texture region constructor change

* Remove ninepatch from atlas

* Moved `TextureAtlasExtensions` into `SpriteBatch.Extensions`
These are extension methods for the sprite batch

* Updated to use new `DrawTextureRegion` method after rename

* Renamed to NinePatchJsonConverter

* Removed `GetRegion<T>`
TextureAtlas no longer contains nine patch regions, so this method isn't needed

* Update after `NinePatchRegion2DJsonConverter` name change

* Resolve errors from NinePatch refactor

* TextureAtlas rework

* Renamed `TextureRegion` to `Texture2DRegion`

* Moved ContentReaders to new Content\ContentReaders directory

* Moved TextureAtlasJsonConvert to Serialization directory

* Adjusted name from `Texture*` to `Texture2D*`

* Update runtimereader and runtimettype strings

* Kni.Extended (#892)

* KNI projects

* update actions

fixes MSBUILD : error MSB1011: Specify which project or solution file to
use because this folder contains more than one project or solution file.

* remove test for issue #633

* build tests

* KNI TypeReaders

* KNI/XNA compatible code

* GetRuntimeReader from runtime types

* remove MockGameWindow

* Fna.Extended (#893)

* FNA projects

* update actions

fixes MSBUILD : error MSB1011: Specify which project or solution file to
use because this folder contains more than one project or solution file.

* build tests

* remove test for issue #633

* FNA/XNA compatible

* GraphicsDevice Extensions

* remove MockGameWindow

---------

Co-authored-by: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>

* Sprite Rework (#897)

* Add file header

* Refator to file-scoped namespace

* Least complex to most complext method ordering

* Refactor: Group properties at top before constructor

* Use the new UV properties from Texture2DRegion.
This removes the dependency on the texture size in the calculations if the TextureRegion property is changed.

* No longer need to cache normalized origin to preserve it

* Use ArgumentNullException instead

* Use ArgumentNullException.ThrowIfNull

* Refactor:  Use brackets for readability

* Add xml documentation

* Add check for disposed texture

* Moved `Sprite` to `MonoGame.Extended.Graphics`

* Moved extension methods for rendering sprite into `SpriteBatch.Extensions`

* `ISpriteBatchDrawable` is not used by anything
It was originally part of the ScreneGraph implementation in MonoGame.Extended which was replaced by the ECS system.  It appears that this interface was forgotten to be removed and is not used for anything anymore.

* Add `CreateSprite` methods

* Add file header

* Moved `SpriteSheetAnimationFrame` to `MonoGame.Extended.Graphics`

* Move properties before constructor.

* Changed `Duration` to `TimeSpan` type

* Renamed `Index` to `FrameIndex`

* Add `TextureRegion` property

* Make property get only

* Cleanup whitespace

* Remove `SpriteSheetAnimationFrameJsonConverter`

* Cleanup unused namespaces

* Make file-scoped namespace

* Added xml documentation

* Added file header

* marked constructor as internal.
This will be created from a spritesheet itself

* Move `SpriteSheetAnimationCycle` to `MonoGame.Extended.Graphcis`

* File scoped namespace

* Add file header

* Reorganize: Move properties above constructor

* Make `Frames` property a read-only span

* Remove duration, this is being moved to the frame itself

* Add `Name` property

* Set looping, reversed, and ping pong properties in ctor

* Make ctor internal
This will be an object created by a spritesheet instane itself.

* Cleanup: Whitespace

* Add `FrameCount` property

* Add `GetFrame` method and accompanying `this[int]` method.

* Documentation: Added missing documentation.

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* Refactor: Animation Refactor Completed

* Refactor: Sprite stuff finished

* Remove tests that can't be run on GitHub CI
Need to find alternative

* Make optional name param the last param in Texture2DRegion ctors

* Resolve merge conflicts

* Add Kni Package (#898)

* Capitalize KNI (#899)

* Resolves NullReferenceException When Getting Invalid Key From TiledMapProperties (#903)

* Add test to validate issue

* Resolve issue

* Fix `NullReferenceException` in `ObjectPool` when reusing all returned items (#904)

* Replaced delegate with Action<T>

* Change delegate to Action<T>

* Add unit test to confirm issue

* Fix NullReferenceException in ObjectPool when reusing all returned items

The ObjectPool's Use() method was throwing a NullReferenceException when
all items had been returned to the pool and New() was called again. This
was due to _tailNode being null in this scenario.

Added a null check for _tailNode in Use() method to properly reinitialize
the linked list structure when the pool has been emptied and refilled.

* Moved MonoGame.Extended.Gui to its own repository (#905)

* Update animated sprite so the constructor api is similar to original MGE (#906)

* Update animated sprite so the constructor api is similar to original MGE

* Fix tests from changes

* Add pitch support to Camera & OrthographicCamera (#907)

* Added pitch support to OrthographicCamera

* Added pitch functions to base Camera class

* Reorganization (#909)

* Removed MonoGame.Extended.Animations
This project was just a shell that referenced MonoGame.Extended.csproj. It added no additional functionality.

* Rework BitmapFonts for new project organization.

* Cleanup namespaces

* Cleanup namespaces

* Move MonoGame.Extended.Collision into base project

* Moved MonoGame.Extended.Entities into base project

* Moved MonoGame.Extended.Graphics into base project

* Moved MonoGame.Extended.Graphics into base project

* Moved MonoGame.Extended.Input into base project

* Moved MonoGame.Extended.Particles into base project

* Moved MonoGame.Extended.Tiled into base project

* Moved MonoGame.Extended.Tiled into base project

* Moved MonoGame.Extended.Tweening into base project

* Removing SpriteFactory support
This will be added back in at a later date once the SpriteFactory application has been updated

* Update TexturePacker content import support

* Only needs to reference base project now

* Moved to Serialization namespace

* Moved  Json serialization to Serialization.Json namespace

* Moved TexturePacker content DTOs to the Content namespace

* Renamed to Texture2DRegion.Extensions.cs

* Cleaned up namespace

* Moved ReadTiledMapProperties into the ContentReaderExtensions

* Created an Extended content manager

* Moved Tweening tests to base test project

* Moved Tiled test to base test project

* Moved Entities Tests to base test project

* Moved Entities tests to base test project

* Moved Collisions tests to base test project

* Moved Pipeline Tiled test to Pipeline tests project

* Use `var` instead of full type name

* Add Tiled namespace

* Correct `Metadata` property name to new `Meta` property name

* Cleanup namespace

* Add effects namespace

* Add Content namespace

* Update using statements to new namespaces

* Move Pipeline Tiled tests to Pipeline test project

* Use correct namespace

* Use `var` instead of typing out nested types

* Remove unused namespaces

* Update to new namespaces

* Remove unused namespaces

* Update to new namespaces

* Remove dependency on Particles csproj

* Update included content on build

* Add embedded resources

* Merge multi csproj structure into single csproj structure

* TexturePackerPoint properties should be `double` not `int`

* Update csproj

* Use dotnet tool to rebuild effects

* Move effect compilation to targets file
This will ensure the effects are always built

* Fix workflow to build effects on linux

* Set wine path

* Export instead of using actions env section

* Revert back to manual effect compile until automation can be solved on GitHub Ubuntu runner

* Make CurrentFrame return the actual frame index from the source atlas

* Start the animation controller playing, don't make the consumer manually call it initially

* Play is automatically called in the controller ctor

* Added property to get name of current animation

* Only copy reference files if user opts in by specifying property in csproj

* Update Kni solution to new project structure

* Update Fna solution to new project structure

* Bump version number to 4.0.0

* Update release workflow

* Remove old test

---------

Co-authored-by: Andreas Torebring <andreas.torebring@gmail.com>
Co-authored-by: Lucas Girouard-Stranks <lustranks@gmail.com>
Co-authored-by: Matt Johnson <matt.johnson.dev@gmail.com>
Co-authored-by: Kus <git@kus.dev>
Co-authored-by: slakedclay <118028225+slakedclay@users.noreply.github.com>
Co-authored-by: Cairo Batista <cairomb1@gmail.com>
Co-authored-by: Gandifil <gandifilmk@gmail.com>
Co-authored-by: David Fidge <dfidge@internode.on.net>
Co-authored-by: Lucas Girouard-Stranks <519592+lithiumtoast@users.noreply.github.com>
Co-authored-by: Lilith Silver <anon>
Co-authored-by: KatDevsGames <north@tinymagnet.com>
Co-authored-by: LACOMBE Dominique <lacombe.dominique@outlook.fr>
Co-authored-by: Apllify <ralilahlou50@gmail.com>
Co-authored-by: Stephen <stephenafoster88@gmail.com>
Co-authored-by: jimmy b <tigurx@gmail.com>
Co-authored-by: Nikos Kastellanos <nkastellanos@gmail.com>
Co-authored-by: Mike Bowers <mbowersjr@gmail.com>
Co-authored-by: James <52947350+jameskellie@users.noreply.github.com>

* Fix KNI specific issues

* Update for Fna

---------

Co-authored-by: Andreas Torebring <andreas.torebring@gmail.com>
Co-authored-by: Lucas Girouard-Stranks <lustranks@gmail.com>
Co-authored-by: Matt Johnson <matt.johnson.dev@gmail.com>
Co-authored-by: Kus <git@kus.dev>
Co-authored-by: slakedclay <118028225+slakedclay@users.noreply.github.com>
Co-authored-by: Cairo Batista <cairomb1@gmail.com>
Co-authored-by: Gandifil <gandifilmk@gmail.com>
Co-authored-by: David Fidge <dfidge@internode.on.net>
Co-authored-by: Lucas Girouard-Stranks <519592+lithiumtoast@users.noreply.github.com>
Co-authored-by: KatDevsGames <north@tinymagnet.com>
Co-authored-by: LACOMBE Dominique <lacombe.dominique@outlook.fr>
Co-authored-by: Apllify <ralilahlou50@gmail.com>
Co-authored-by: Stephen <stephenafoster88@gmail.com>
Co-authored-by: jimmy b <tigurx@gmail.com>
Co-authored-by: Nikos Kastellanos <nkastellanos@gmail.com>
Co-authored-by: Mike Bowers <mbowersjr@gmail.com>
Co-authored-by: James <52947350+jameskellie@users.noreply.github.com>
2024-07-08 18:54:38 -04:00
Christopher Whitley 0fe1064217 Merge Release into Develop (#912)
* Make CurrentFrame return the actual frame index from the source atlas

* Start the animation controller playing, don't make the consumer manually call it initially

* Play is automatically called in the controller ctor

* Added property to get name of current animation

* Only copy reference files if user opts in by specifying property in csproj

* Update Kni solution to new project structure

* Update Fna solution to new project structure

* Bump version number to 4.0.0

* Update release workflow

* Remove old test
2024-07-08 18:27:54 -04:00
Christopher Whitley 3a5269cfea Reorganization (#909)
* Removed MonoGame.Extended.Animations
This project was just a shell that referenced MonoGame.Extended.csproj. It added no additional functionality.

* Rework BitmapFonts for new project organization.

* Cleanup namespaces

* Cleanup namespaces

* Move MonoGame.Extended.Collision into base project

* Moved MonoGame.Extended.Entities into base project

* Moved MonoGame.Extended.Graphics into base project

* Moved MonoGame.Extended.Graphics into base project

* Moved MonoGame.Extended.Input into base project

* Moved MonoGame.Extended.Particles into base project

* Moved MonoGame.Extended.Tiled into base project

* Moved MonoGame.Extended.Tiled into base project

* Moved MonoGame.Extended.Tweening into base project

* Removing SpriteFactory support
This will be added back in at a later date once the SpriteFactory application has been updated

* Update TexturePacker content import support

* Only needs to reference base project now

* Moved to Serialization namespace

* Moved  Json serialization to Serialization.Json namespace

* Moved TexturePacker content DTOs to the Content namespace

* Renamed to Texture2DRegion.Extensions.cs

* Cleaned up namespace

* Moved ReadTiledMapProperties into the ContentReaderExtensions

* Created an Extended content manager

* Moved Tweening tests to base test project

* Moved Tiled test to base test project

* Moved Entities Tests to base test project

* Moved Entities tests to base test project

* Moved Collisions tests to base test project

* Moved Pipeline Tiled test to Pipeline tests project

* Use `var` instead of full type name

* Add Tiled namespace

* Correct `Metadata` property name to new `Meta` property name

* Cleanup namespace

* Add effects namespace

* Add Content namespace

* Update using statements to new namespaces

* Move Pipeline Tiled tests to Pipeline test project

* Use correct namespace

* Use `var` instead of typing out nested types

* Remove unused namespaces

* Update to new namespaces

* Remove unused namespaces

* Update to new namespaces

* Remove dependency on Particles csproj

* Update included content on build

* Add embedded resources

* Merge multi csproj structure into single csproj structure

* TexturePackerPoint properties should be `double` not `int`

* Update csproj

* Use dotnet tool to rebuild effects

* Move effect compilation to targets file
This will ensure the effects are always built

* Fix workflow to build effects on linux

* Set wine path

* Export instead of using actions env section

* Revert back to manual effect compile until automation can be solved on GitHub Ubuntu runner
2024-07-06 23:46:20 -04:00
James 00a0d4a343 Add pitch support to Camera & OrthographicCamera (#907)
* Added pitch support to OrthographicCamera

* Added pitch functions to base Camera class
2024-07-06 23:45:59 -04:00
Christopher Whitley 2ad7a9d3db Update animated sprite so the constructor api is similar to original MGE (#906)
* Update animated sprite so the constructor api is similar to original MGE

* Fix tests from changes
2024-07-01 12:33:23 -04:00
Christopher Whitley 98ee05f58a Moved MonoGame.Extended.Gui to its own repository (#905) 2024-06-29 18:28:12 -04:00
Christopher Whitley 1f3f1c5aa0 Fix NullReferenceException in ObjectPool when reusing all returned items (#904)
* Replaced delegate with Action<T>

* Change delegate to Action<T>

* Add unit test to confirm issue

* Fix NullReferenceException in ObjectPool when reusing all returned items

The ObjectPool's Use() method was throwing a NullReferenceException when
all items had been returned to the pool and New() was called again. This
was due to _tailNode being null in this scenario.

Added a null check for _tailNode in Use() method to properly reinitialize
the linked list structure when the pool has been emptied and refilled.
2024-06-29 17:50:43 -04:00
Christopher Whitley 93473744d7 Resolves NullReferenceException When Getting Invalid Key From TiledMapProperties (#903)
* Add test to validate issue

* Resolve issue
2024-06-28 21:02:10 -04:00
Christopher Whitley 9614a62292 Capitalize KNI (#899) 2024-06-24 19:08:26 -04:00
Christopher Whitley 5b2a44ad28 Add Kni Package (#898) 2024-06-24 19:04:33 -04:00
Christopher Whitley a501f76162 Sprite Rework (#897)
* Add file header

* Refator to file-scoped namespace

* Least complex to most complext method ordering

* Refactor: Group properties at top before constructor

* Use the new UV properties from Texture2DRegion.
This removes the dependency on the texture size in the calculations if the TextureRegion property is changed.

* No longer need to cache normalized origin to preserve it

* Use ArgumentNullException instead

* Use ArgumentNullException.ThrowIfNull

* Refactor:  Use brackets for readability

* Add xml documentation

* Add check for disposed texture

* Moved `Sprite` to `MonoGame.Extended.Graphics`

* Moved extension methods for rendering sprite into `SpriteBatch.Extensions`

* `ISpriteBatchDrawable` is not used by anything
It was originally part of the ScreneGraph implementation in MonoGame.Extended which was replaced by the ECS system.  It appears that this interface was forgotten to be removed and is not used for anything anymore.

* Add `CreateSprite` methods

* Add file header

* Moved `SpriteSheetAnimationFrame` to `MonoGame.Extended.Graphics`

* Move properties before constructor.

* Changed `Duration` to `TimeSpan` type

* Renamed `Index` to `FrameIndex`

* Add `TextureRegion` property

* Make property get only

* Cleanup whitespace

* Remove `SpriteSheetAnimationFrameJsonConverter`

* Cleanup unused namespaces

* Make file-scoped namespace

* Added xml documentation

* Added file header

* marked constructor as internal.
This will be created from a spritesheet itself

* Move `SpriteSheetAnimationCycle` to `MonoGame.Extended.Graphcis`

* File scoped namespace

* Add file header

* Reorganize: Move properties above constructor

* Make `Frames` property a read-only span

* Remove duration, this is being moved to the frame itself

* Add `Name` property

* Set looping, reversed, and ping pong properties in ctor

* Make ctor internal
This will be an object created by a spritesheet instane itself.

* Cleanup: Whitespace

* Add `FrameCount` property

* Add `GetFrame` method and accompanying `this[int]` method.

* Documentation: Added missing documentation.

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* WIP: Temporary commit for workstation change

* Refactor: Animation Refactor Completed

* Refactor: Sprite stuff finished

* Remove tests that can't be run on GitHub CI
Need to find alternative

* Make optional name param the last param in Texture2DRegion ctors

* Resolve merge conflicts
2024-06-23 23:10:16 -04:00
Nikos Kastellanos 4ecb74f6b6 Fna.Extended (#893)
* FNA projects

* update actions

fixes MSBUILD : error MSB1011: Specify which project or solution file to
use because this folder contains more than one project or solution file.

* build tests

* remove test for issue #633

* FNA/XNA compatible

* GraphicsDevice Extensions

* remove MockGameWindow

---------

Co-authored-by: Christopher Whitley <103014489+AristurtleDev@users.noreply.github.com>
2024-06-23 22:49:58 -04:00
Nikos Kastellanos 2bbdc38b51 Kni.Extended (#892)
* KNI projects

* update actions

fixes MSBUILD : error MSB1011: Specify which project or solution file to
use because this folder contains more than one project or solution file.

* remove test for issue #633

* build tests

* KNI TypeReaders

* KNI/XNA compatible code

* GetRuntimeReader from runtime types

* remove MockGameWindow
2024-06-23 22:38:20 -04:00
Christopher Whitley 8850875fb4 Texture Atlas Refactor (#890)
* Moved `TextureRegion2D` and `NinePatchRegion2D` into Graphics namespace
These are used for more than just texture atlas related things and are primarly for working with `Texture2D` instances and creating sub textures from them.  Moving them to Graphics namespace where `Texture2D` lives in MonoGame

* Dropped the `2D` suffix from `TextureRegion2D` and `NinePatchRegion2D`

* Moved `RectanglExtensions` to project root
This moves the extensions for `Rectangle` to the same relative namespace location as `Rectangle` is in MonoGame.

* Renamed to `Rectangle.Extensions.cs`

* Separate `Rectangle` from `RectangleF` extensions

* Added `GetRelativeRectangle` method

* Updated documentation

* Added `GetRelativeRectangle` method

* Updated documentation

* Top-level namespace

* Remove whitespace

* Move properties up

* Top-level namespace

* Don't recreate structs for `Bounds` and Size`
By having the property return a new struct, this allocates on the stack during situations like a loop during draw.

* Size should be `Size` not `SizeF` value
Textures deal in pixels (ints not floats)

* Removed setter for `Texture` property
Texture should not be set after region is created

* Added UV properties

* Refactor constructors

* Added documentation

* Added license header

* Make it an actual extension method

* Added `GetSubRegion` extension methods for `TextureRegion`

* Update documentation about ObjectDisposedException

* Move const values to top

* Resolve errors from`TextureRegion` refactor

* Update unit tests for TextureRegion refactor

* Started NinePatch rework

* Refactored NinePatch

* Update for texture region constructor change

* Remove ninepatch from atlas

* Moved `TextureAtlasExtensions` into `SpriteBatch.Extensions`
These are extension methods for the sprite batch

* Updated to use new `DrawTextureRegion` method after rename

* Renamed to NinePatchJsonConverter

* Removed `GetRegion<T>`
TextureAtlas no longer contains nine patch regions, so this method isn't needed

* Update after `NinePatchRegion2DJsonConverter` name change

* Resolve errors from NinePatch refactor

* TextureAtlas rework

* Renamed `TextureRegion` to `Texture2DRegion`

* Moved ContentReaders to new Content\ContentReaders directory

* Moved TextureAtlasJsonConvert to Serialization directory

* Adjusted name from `Texture*` to `Texture2D*`

* Update runtimereader and runtimettype strings
2024-06-15 01:37:18 -04:00
Christopher Whitley 9bd208184f Update Changelog (#889)
* Updated so all projects have changelog in root when viewing in visual studio

* Updated changelog
2024-06-11 11:22:10 -04:00
Mike Bowers 82daabb120 Updated ComponentManager to implement IEnumerable<ComponentMapper> (#823) (#888) 2024-06-11 11:14:36 -04:00
Christopher Whitley 66277568c8 Refactor BitmapFont (#887)
* Update file header

* Created initial project to move BitmapFont too

* XMl, Text, and Binar reading now supported for BMFont

* Refactor BittmapFont

* Update content pipeline from BitmapFont refactor

* Update changelog
2024-06-11 00:25:10 -04:00