TheSadRogue.Primitives 1.6.0-rc1

This is a prerelease version of TheSadRogue.Primitives.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package TheSadRogue.Primitives --version 1.6.0-rc1                
NuGet\Install-Package TheSadRogue.Primitives -Version 1.6.0-rc1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TheSadRogue.Primitives" Version="1.6.0-rc1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add TheSadRogue.Primitives --version 1.6.0-rc1                
#r "nuget: TheSadRogue.Primitives, 1.6.0-rc1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install TheSadRogue.Primitives as a Cake Addin
#addin nuget:?package=TheSadRogue.Primitives&version=1.6.0-rc1&prerelease

// Install TheSadRogue.Primitives as a Cake Tool
#tool nuget:?package=TheSadRogue.Primitives&version=1.6.0-rc1&prerelease                

A collection of primitive data structures for working with a 2-dimensional grid.

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 is compatible. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETCoreApp 3.1

    • No dependencies.
  • .NETStandard 2.1

    • No dependencies.
  • net5.0

    • No dependencies.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on TheSadRogue.Primitives:

Package Downloads
SadConsole

A library that emulates old-school console and command prompt style graphics.

GoRogue

Roguelike/2D game utility library.

TheSadRogue.Primitives.MonoGame

A collection of extension methods that allow TheSadRogue.Primitives types to easily interface with MonoGame's equivalents.

TheSadRogue.Primitives.SFML

A collection of extension methods that allow TheSadRogue.Primitives types to easily interface with SFML's equivalents.

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on TheSadRogue.Primitives:

Repository Stars
Thraka/SadConsole
A .NET ascii/ansi console engine written in C# for MonoGame and XNA. Create your own text roguelike (or other) games!
Chris3606/GoRogue
.NET Standard roguelike library in C#. Features many algorithms and data structures pertinent to roguelike/2D game developers, specifically designed to be minimally intrusive upon the developer's architecture.
Version Downloads Last updated
1.6.0-rc3-debug 2,607 6/18/2023
1.6.0-rc3 9,840 6/18/2023
1.6.0-rc2-debug 2,253 5/11/2023
1.6.0-rc2 1,571 5/11/2023
1.6.0-rc1-debug 160 3/18/2023
1.6.0-rc1 2,061 3/18/2023
1.5.1 1,592 1/31/2023
1.5.1-debug 156 1/31/2023
1.5.0 1,677 1/27/2023
1.5.0-debug 142 1/27/2023
1.4.1 3,213 10/8/2022
1.4.1-debug 165 10/8/2022
1.4.0 411 10/7/2022
1.4.0-debug 147 10/7/2022
1.3.2 502 9/25/2022
1.3.2-debug 180 9/25/2022
1.3.1 553 5/13/2022
1.3.1-debug 186 5/13/2022
1.3.0 3,843 2/12/2022
1.3.0-debug 173 2/12/2022
1.2.0 1,408 1/8/2022
1.2.0-debug 182 1/8/2022
1.1.1 12,919 9/30/2021
1.1.1-debug 204 9/30/2021
1.1.0 421 8/21/2021
1.1.0-debug 227 8/21/2021
1.0.0 14,626 3/23/2021
1.0.0-debug 284 3/23/2021
1.0.0-alpha9-debug 235 1/25/2021
1.0.0-alpha9 227 1/25/2021
1.0.0-alpha8-debug 1,792 12/11/2020
1.0.0-alpha8 1,142 12/11/2020
1.0.0-alpha7-debug 1,789 11/23/2020
1.0.0-alpha7 298 11/23/2020
1.0.0-alpha6-debug 317 10/25/2020
1.0.0-alpha6 1,011 10/25/2020
1.0.0-alpha5-debug 2,973 7/14/2020
1.0.0-alpha5 1,061 7/14/2020
1.0.0-alpha4-debug 2,269 6/28/2020
1.0.0-alpha4 1,245 6/28/2020
1.0.0-alpha3-debug 2,252 5/23/2020
1.0.0-alpha3 367 5/23/2020
1.0.0-alpha2-debug 2,039 4/18/2020
1.0.0-alpha2 334 4/18/2020
1.0.0-alpha1-debug 2,324 12/8/2019
1.0.0-alpha1 1,218 12/8/2019

- Added spatial maps, which are an efficient way to represent items on a grid, particularly when the items are sparse relative to the number of cells.
     - Added interfaces for common concepts found in data structures/objects that reside on 2D grids
         - IHasID: A structure that has a unique or pseudo-unique integer identifier
         - IHasLayer: A structure that has a z-index (aka layer) on which it resides
         - IPositionable: A structure that has a 2D position, and fires events when that position changes.
     - Added `LayerMasker` which is a helper class for creating 32-bit integer-based masks of specific z-indices/rendering layers.
     - Added more custom iterators, and changed iterator paradigm in library to allow for increased performance
         - Changes apply to classes/functions including: Rectangle.Positions(), Rectangle.PerimeterPositions(), all line and shape algorithms, LayerMasker functions, BisectionResult, and Area
         - Custom enumerables now implement `IEnumerator` and `IEnumerable` directly; therefore their `ToEnumerable()` function is obsolete.  You should simply remove the call to that function since the same behavior is obtained without it.
         - This also applies to Area; FastEnumerator()` is now deprecated as its behavior is achieved by default when iterating over IReadOnlyArea implementations.
         - Iteration over a value known to be of type `Area` is now faster
     - Added a ListEnumerator type which is functionally identical to C#'s built-in enumerator for lists, but also implements IEnumerable so supports being returned from functions like the primitives library typically does for functions such as Rectangle.Positions()
     - Added `Box` shape algorithm
     - Modified default hashing algorithm for Point to one with better performance
         - New hashing algorithm collides less and remains viable over a very large range of points; see Point.GetHashCode() documentation for details
     - Optimized spatial maps compared to the GoRogue implementation
         - The result of MultiSpatialMap.GetItemsAt is now significantly faster to iterate over if the value is of known type MultiSpatialMap
     - Added auto-syncing variants of spatial maps
         - Anything implementing IPositionable can be used with the auto-syncing variants
         - With these variants, if you change the Position field of an object within the spatial map, OR if you call a movement function on the spatial map, both the spatial map and the Position field update and remain in sync
     - Modified SpatialMap API slightly
         - Move functions (and variants) now tolerate the current position and target position being the same without failing
     - Fixed bugs in LayeredSpatialMap
         - LayeredSpatialMap.TryMoveAll guarantees that objects aren't moved at all if one or more can't be moved
         - LayeredSpatialMap.GetLayersInMask now returns the correct layers