- Abstractions interfaces to handle platform-specific stuff and implemented abstractions for Windows (
WindowsClipboard
,WindowsLocalStorage
,WindowsMonitorFrequencyManager
,WindowsScalingManager
,WindowsTextInputBinder
,WindowsWindowWatch
classes). - Added
PositionComponent
class andEntity.GetPostition()
extension method. - Added
ConfigStash
class. - Added
BufferedInput
class. - Added
BeizerCurve
andVerticalAxisProjection
methods toGameMath
class. - Added
Sector
class. - Added
HotReloadWatch
class. - Added
LockableFlag
class.
- Migrated to NET8.
- Updated MonoGame to
3.8.2
. - Updated Nopipeline to
2.3.0
. - BREAKING CHANGE: Removed Linux and Mac support form DesktopGL target. You will have to implement abstractions interfaces to make it work again.
- BREAKING CHANGE: Replaced
MonofoxePlatform
class with the Windows implementation. - BREAKING CHANGE: Replaced
TextInputBinderDesktopGL
class with the Windows implementation. - BREAKING CHANGE: Replaced
AlphaBlendEffectLoaderWindowsGL
class with the Windows implementation.
- Added
RenderMask
as a replacement to camera filters toScene
,Layer
andEntity
. - Added
Clear()
method toResourceBox
. - Added
Offset()
method to linear dampers. - Added
OnFrameStart
,OnFrameFinish
andOnAfterDraw
events toGraphicsMgr
. - Added
Pool
collection. - Added
AccumulationBuffer
collection. - Added
UnorderedList
collection. - Added
GetArea()
,GetSignedArea()
,IsClockwise()
methods toGameMath
. - Added new collision system.
- Added new drawing methods.
- BREAKING CHANGE:
ResourceInfoMgr
now accepts wildcards instead of directory names. For example,ResourceInfoMgr.GetResourcePaths("Graphics/Trees");
should now be replaced withResourceInfoMgr.GetResourcePaths("Graphics/Trees/*");
- BREAKING CHANGE: Renamed
GetSafeNormalize()
toSafeNormalize()
. - BREAKING CHANGE: Removed instances of
Width
andHeight
inSprite
,Frame
,WindowMgr
,Camera
,Surface
, and replaced them withSize
. - BREAKING CHANGE: Changed boolean
isOutline
toShapeFill
enum for shapes.
- Fixed
AddComponent<>()
not taking generic type into account. DirectoryResourceBox
now ignores non-xnb files properly.- Fixed division by zero in dampers.
- BREAKING CHANGE: Removed camera layer filters.
- BREAKING CHANGE: Removed
Drawable
class and non-static shape fields and methods.
- Added
Name
field toSprite
. - Added
Range<>
class. - Added HEX conversion for
Color
. - Added
HsvColor
Lerp and basic operators. - Added simplified
GetResource<>()
methods. - Added
OnResize
event toCamera
. - Added
Global
instance toRandomExt
. - Added unit circle methods to
RandomExt
. - Added dampers based on second order motion.
- Added job system.
- Added
started
argument toAlarm
constructor. - Added
Start(time)
andPause(), Resume()
metods toAlarm
. - Added
Counter
. - Added
GetOrCreateLayer
toScene
. - Added
OnFinish
event to coroutines. - Added
Projection
method toVector2
andVector3
. - Added
PerlinNoise
. - Added
SlowRotator
. - Added simple logger.
Destroy()
event triggers even if an entity is disabled.- Migrated to NET6.
- Updated MonoGame to
3.8.1
. - Updated Nopipeline to
2.2.0
. - Replaced
Newtonsoft.Json
dependency withSystem.Text.Json
. - Removed VS2019 support.
- Fixed
Sprite.Clone()
not copying frames properly.
- Removed VS2017 template support and added VS2022 templates.
- Solution created from template no longer requires to manually build Content project.
- Changed
Component
methods from abstract to virtual. - Templates now support .NET5 instead of netcore 3.
- Added support for the
backgroundcolor
property for Tiled maps. - Added
OnCrash
event toSceneMgr
which allows to catch and recover from the exceptions within a scene. - Added
IsFixedUpdateFrame
toSceneMgr
. - Added coroutines.
- Fixed
Scene
not being able to delete its layers properly. - Made
SafeList
thread safe. - Newly created solutions set their default project to GL instead of library, which cannot be run.
- Added
Rotate
method forVector2
. - Added half-pixel offset support for
VertexBatch
. - Added Pre and Post events to layers, scenes and scene manager.
- Added
ZDepth
to all shape classes. - Added platform-specific projects for WindowsDX and DesktopGL.
- Added
StuffResolver
class. - Added
HsvColor
class. - Added automatic content loaders.
- Added sprite json mathematical expressions.
- Added
CurrentPlatform
andCurrentGraphicsBackend
toGameMgr
.
- BREAKING CHANGE: Monogame version has been updated to 3.8.
- Pipefoxe now supports netstandard2.0 and is fully crossplatform.
- Renamed Pipefoxe to Monofoxe.Pipeline.
- BREAKING CHANGE:
Input.ScrollWheelValue
now returns signed scroll speed value instead of only its sign. - BREAKING CHANGE: Reworked
Alarm
class and merged it withAutoAlarm
andTimer
. - Changed
IDrawable
interface toDrawable
class. Entity.AddComponent
now returns the component class which was passed into it.- BREAKING CHANGE:
AssetInfo
has been renamed toResourceInfo
- BREAKING CHANGE:
ResourceInfoImporter
now imports.npl
Content file instead of.mgcb
. - Removed dependency on Windows-only
System.Drawing
for Monofoxe.Pipeline. - Changed the crossplatform project structure.
- BREAKING CHANGE:
AlphaBlend.fx
is now baked into the library and doesn't have to be manually put into the Content directory. - Replaced offset_x/y with originX/Y in sprite jsons.
Component.Destroy()
is now called when the component is removed from the entity.
- BREAKING CHANGE: Removed
AutoAlarm
andTimer
classes. - BREAKING CHANGE: Removed
MousePosition
fromInput
class. - BREAKING CHANGE: Removed entity templates.
- Removed all templates except Crossplatform, since there is no need in them anymore.
- Fixed instantiated rectangle shape not being drawn properly.
- Fixed entity methods crashing the game after creating new
Entity
. - Fixed crashes when
Scene
's layer methods were called. - Fixed crashes when
SceneMgr
's scene methods were called. - Fixed
Component.Initialized
never being set. - Fixed gamepad press/release not working correctly.
- Fixed gamepad index not being used in input methods.
- Fixed parsing multiplne text properties from Tiled maps.
- Fixed
VertexBatch.Effect
being reset every frame. - Fixed crashing when adding/removing components during component event.
- Fixed
Text.Color
not being used.
- Added
ZNearPlane
andZFarPlane
to theCamera
. - Added projection matrix to the camera.
- Added an option to set custom projection matrix to the Surface.
- Made
Camera
abstract class and addedCamera2D
class. Camera
'sPosition
andOrigin
areVector3
instead ofVector2
now.Primitive2D
now uses array of vertices instead of a list.
- Fixed circles not being drawn in some cases.
- Fixed project templates.
- Added
VertexBatch
class. - Added per-vertex z depth for sprites, surfaces and frames.
- Replaced
GraphicsMgr
's internalSpriteBatch
withVertexBatch
- Moved graphics states from
GraphicsMgr
toVertexBatch
. - Moved matrix stack from
GraphicsMgr
toVertexBatch
.
- Fixed
Origin
property not being used inSurface
.
- Monofoxe is now able to launch on Android.
- Added an ability to change entity update order.
- Added an all-in-one multiplatform project template.
- Added various item templates.
- Components now have their own events.
- Calling
base.%EventName%()
is now required in entities for EC to work.
- Entity methods which count components/entities.
- Systems have been removed entirely.
- Bumped .NET Framework version to 4.7.2 for templates.
- Fixed various project warnings.
- Fixed
MapBuilder
crashing when some tilesets are ignored.
- Added Animation class.
- Added Easing class.
- Added DirectionToVector2 methods to GameMath.
- Added a set of demos. See Monofoxe.Playground project.
- Added Windows DirectX templates.
- Moved Cameras from Monofoxe.Engine.Utils to Monofoxe.Engine namespace.
- Moved NumberExtensions and Vector2Extensions to Monofoxe.Engine namespace.
- Camera.Rotation is now float instead of int.
- Added GraphicsMgr.CurrentWorld.
- Renamed GraphicsMgr.CurrentTransformMatrix to GraphicsMgr.CurrentView.
AlphaBlend.fx
now works for DirectX.- Content.mgcb now correctly builds for cross-platform projects.
AddComponent()
now throws an exception, if trying to add a component owned by other entity.AffectedBySpeedMultiplier
has been removed from alarms. It can be replaced byTimeKeeper
.- Fixed NoPipeline not saving cases of the resource names.
- Fixed NoPipeline's watcher not working with newly added files.
- Fixed crashing, when text is being drawn last in the frame.
- Renamed
Round/Ceiling/Floor
toRoundV/CeilingV/FloorV
inVector2
extensions, which were causing name clashes. - Fixed tile objects
GID
being offset by 1 when loaded from templates. - Optimized
MapBuilder
. - Optimized graphics pipeline.
- Fixed graphics not working properly on DirectX.
- Fixed
ToggleFullScreen
not working properly with Canvas.
- It's alive!!!