A basic C# graphics library for use with SFML.Net.
- SFML.Net
https://github.com/SFML/SFML.Net.git
- MiCore
https://github.com/BrokenShards/MiCore.git
- MiInput
https://github.com/BrokenShards/MiInput.git
- XInputDotNetPure
https://github.com/BrokenShards/XInputDotNet.git
- Implement UI containers/grouping/layouting.
- Create
Slider
component fromFillBar
. - Create
Tilemap
component that uses aSpriteArray
to draw tiles from aTileset
. - Write tests for BoxRenderer and ShapeRenderer.
- MiGfx now targets .Net 5 and has updated code style for C#9.
- Now depends on MiCore 1.0.0.
- Now depends on MiInput 1.0.0.
- Added new
TextCaret
component that provides a text cursor for text boxesTextBox
now requires theTextCaret
because of this. TextListener
now contains the text cursor index and handles left, right, home and end movement keys along with the delete key.- Added
BoxRenderer
andShapeRenderer
components for drawing boxes or regular shapes that can be coloured, textured and have an outline. - Added new function
Physics.ShapeContainsPoint(Shape,Vector2f)
with variations for checking if a point is inside a shape. - Now modifying
Transform.Position
will also modify child entities that have aTransform
. This behaviour was intended to start with as it allows children to follow their parent when moved. - Added
SpriteArray.SpriteBounds
to easily get a rectangle containing all sprites. - Now path strings in
FolderPaths
andFilePaths
use the correct system directory separator. FilePaths.Executable
andFolderPaths.Executable
no longer modify directory separators and now properly handle and strip thefile:
URI.FolderPaths.Executable
is now guaranteed to end with the system directory separator character.- Updated MiCore to version 0.10.0.
- Updated MiInput to version 0.11.0.
- Added
BoxCollider
andCircleCollider
components along withPhysics
class for managing geometry collision. - Fixed issue where
Label
andUILabel
allignment was not working. AssetManager<T>
no longer requires the asset type to be disposable and no longer disposes of assets on removal. UseDisposableAssetManager<T>
if you would like the old functionality that manages disposable assets.Paths.ToWindows(string)
andPaths.FromWindows(string)
have been moved to MiCore.- Added
AnimationDB
,TextStyleDB
andTilesetDB
databases. - Now
AnimationSet
just stores the IDs of its animations rather than entire objects and retrieves the actual animations fromAnimationDB
. - Updated MiCore to version 0.9.0.
- Updated MiInput to version 0.10.0.
AssetManager<T>
now implementsIEnumerable<KeyValuePair<string, T>>
so loaded assets can be iterated through.- Added
SpriteArray
component for drawing multiple sprites from the same texture. FillBar
now contains a minimum value, maximum value and a current value rather than just one property for progress, because of thisFillBar.Progress
now uses these values to calculate the current progress.FillBar
now uses the entitiesSpriteArray
for drawing.- Added
FillBar.LabelType
andFillBar.Labeling
to more easily customise how the label displays the fill bar value. - Added
FillBar.Create(string, RenderWindow, long, long, long, Color?, LabelType)
for easily constructing FillBar entities. - Fixed issue where
ImageInfo
was flipping horizontal texture coordinates unintentionally. - Added
ImageInfo.FlipHorizontal
andImageInfo.FlipVertical
that will flip the texture coordinates of the vertex returned byImageInfo.GetVertex(uint, Transform)
. - Added
Frame.Orientation
,Frame.FlipHorizontal
andFrame.FlipVertical
to allow animation of those properties. - Error logs are now more consistant and concise.
- Changed SFML source to latest official SFML.Net repository.
- Removed
UIElement
andUIManager
in favour ofMiComponent
andMiEntity
. Now allUIElement
classes inherit fromMiComponent
and are used inMiEntity
objects. - Added
FillBar
component that provides a bar that can be filled to show progress. - Added
Clickable
component that responds to mouse hovering and mouse clicks within an entitiesTransform
. - Added
Selectable
component that allows entities to be selected along with theSelector
component that allows an entity to manage which component is selected within its children. - Added
TextListener
component that listens for text entered events and keeps track of them inTextListener.EnteredText
. - Replaced
Label.Center
withLabel.Allign
to give more text allignment options. Button
andCheckBox
now rely onSprite.Image
and calculate the texture rect for each state from it every frame, because of this, they just hold a texure modifier color rather than anImageInfo
object.- Added property
Assets.Disposed
to check if the internal asset managers have been disposed of andAssets.Recreate()
to recreate them if they have so they can be used agai. AssetManager.RemoveAll()
andAssets.RemoveAll()
have been renamed toAssetManager.Clear()
andAssets.Clear()
for consistency.- Updated MiCore to version 0.5.0.
- Updated MiInput to version 0.9.0.
- Renamed to
MiGfx
and updated to useMiCore
andMiInput
libraries.
- All
IXmlLoadable
classes now have tests, properly check for existing attributes and return errors when suitable and now usenameof( Class )
for attribute and element names. Unimportant xml attributes and elements can now also be ommitted, for exampleTransform.LoadFromXml(XmlElement)
no longer requires theScale
element to exist. - Fixed issue where
Sprite.LoadFromXml(XmlElement)
was failing loading theTransform
. - Added
Xml
helper class for loading and saving common objects to and from xml strings. - Removed
Slider
UI element for now. - Updated SFInput to version 0.7.0.
- Updated SharpSerial to version 0.6.0.
TextBox
now implements the missingLoadFromStream(BinaryReader)
,SaveToStream(BinaryWriter)
andEquals(TextBox)
methods.- Now all graphical classes that implement
IBinarySerializable
/BinarySerializable
also implementIXmlLoadable
. This enables modifiable objects or objects in development to be implemented and easily changed in xml, then exported to a binary file for release. SoundManager
now properly disposes of its music track on dispose.- The test project now uses SharpTest for testing.
- Updated SFInput to version 0.6.0.
- Updated SharpSerial to version 0.5.0.
- Visual tests with user input have been implemented for graphical classes.
- Added a default texture for
UI.Slider
. - Updated SFInput to version 0.5.2.
- Updated project to copy
XInputInterface.dll
to the build directory.
- SharpUI has now been merged into SharpGfx and thus now depends on SFInput and XInputDotNetPure.
- The UI code is now all documented, implements
IEquatable<T>
, and has tests.
- Added previously missed
AnimatedSprite
test. - Fixed an issue where
AnimatedSprite.Equals
was returning incorrect values.
- Added a sanity test project.
- Fixed issue where Animations were not serializing and deserializing correctly.
- Now all classes inherit from
System.IEquatable<T>
for easy equality comparison for the test project. - Updated SharpID to version 0.3.0.
- Updated SharpLogger to version 0.3.1.
- Updated SharpSerial to version 0.3.0.
- SharpAsset has now been merged with SharpGfx.
- Now the xml documentation is built with the binary and is included in releases.
- Updated SharpAsset to version 0.2.1.
- Updated SharpID to version 0.2.1.
- Updated SharpLogger to version 0.1.1.
- Updated SharpSerial to version 0.2.1.
- Now SharpAsset is used for asset caching.
- Initial release.