This repository has been archived by the owner on Apr 16, 2023. It is now read-only.
Releases: KwenaMashamaite/IME
Releases · KwenaMashamaite/IME
v3.2.0
v3.1.0
Changelog
New Features
- Added
ime::Vector2<T>::cross()
which returns the cross product between two vectors - Added
ime::Vector<T>::angle()
which returns the angle between a vector and the positive x axis - Added
ime::EventEmitter::getEvents()
which returns the names of events registered on the emitter - Added
ime::AccessViolationException
which is thrown when a function is accessed when its prerequisite is not satisfied - Added
ime::InvalidParseException
which is thrown when data read from the disk is invalid - Added
ime::Engine::removeAllScenes()
which removes all scenes from the engine in the same frame - Added
ime::Scene::onPreUpdate()
callback that is called before a scene is updated
Updates
ime::GridMover
can now move aime::GridObject
whether or not is has aime::RigidBody
attached to it (except forime::RigidBodyType::Dynamic
)- Every derived class of 'ime::Object' emits a destruction event
- Post-fixed all
IME
exception class withException
- Overloaded
ime::Engine::popScene()
to accept the number of scenes to be removed from the engine - Removed
ime::Grid2DParser
class
Bug Fixes
- Fixed
ime::Vector<T>::angleTo()
always returning incorrect results - Fixed
ime::Vector<T>::asUnitVector()
causing a compile time error whenT
is not a floating point - Fixed
ime::input::Keyboard::stringToKey()
crashing the engine when called withPause
as an argument - Fixed
ime::Timer::setTimescale()
not ignoring values less than or equal to zero - Fixed
ime::PropertyContainer::forEachProperty()
not passing arguments to the callback by reference - Fixed
ime::Object
destruction listeners called multiple times when an the object goes out of scope - Fixed
ime::Object
destruction listeners copied when the object is copied - Fixed
ime::GridMover::setMovementFreeze()
not applying the speed multiplier when resuming movement
Known Bugs
- Memory leak when maximizing the
ime::Window
with the maximize button
v3.0.0
Release IME v3.0.0 The next planned release was v2.6.0, however changes made after v2.5.0 significantly broke backwards compatibility
v2.5.0
Changelog
New Features
- Added a function to query the index/position of a an Animation frame in an animation sequence
- Added an option to alias animation frames using a string
- Added a function to get the progress of an Animation
- Added functions to query the current, next and previous frames of an Animation. This can be done on the animation or on the Animator when the animation is active
- Added a Animation::onFrameSwitch callback that is called when the current frame of an animation changes
- Added a Timer::onResume callback that is called when the timer is resumed from a paused state
- Added a Timer::onUpdate callback that is called everytime the timer is updated
- Added functions to add, subtract and modulate colours
Updates
- A paused timer can now be resumed using the Timer::resume function instead of the Timer::start function. This helps distinguish between a normal start and a resume call
- Added indigo, maroon and silver colours to predefined colours
Bug Fixes
- Fixed Timer::getRemainingDuration returning a negative value instead of 0 when called inside the timeout callback
v2.4.0
Changelog
Update
- Added startMovement function to CyclicGridMover
- Made a GameObject aware when its a target for a grid mover (via a GridMover pointer in the GameObject class)
- Added a function to synchronize a grid mover target when switching between different grid movers
- Added option to execute GameObject::onCollision one time
- Made Widget::emit function public allowing event handlers to be invoked externally
- Removed all symbols deprecated in v2.3.0
- Removed support for static builds
v2.3.0
Release v2.3.0
v2.2.1
Changelog
Bug Fixes
- Fixed engine crashing when a new Timer is started inside the timeout callback of another timer
- Fixed engine unresponsive when the frames per second limit is set to 0
- Fixed engine crashing during error reporting when a config entry is not found
v2.2.0
Changelog
New Features
- Added functionality to follow a GameObject using the Camera
- Added function to set the opacity of a Sprite
- Added getter function versions of Timer::Status
- Added option to specify whether or not an Animation is reset when interrupted
- Added improved KeyboardGridMover trigger keys
- Added option to intercept KeyboardGridMover input
- Added function to reset the destination of a TargetGridMover
- Added one-time event listeners to Object
- Added one-time event listeners to GridMover
- Added Animation::setLoop function
- Added functionality to query if a GridMover target is blocked or not
- Added a GameObject level grid-based collision event
- Added a function to query a GridMover target's previous tile or direction
- Added an engine level data persistor that can be saved to a file or initialized with a saved file
- Added Timer events: onStart, onPause, onRestart and onStop
- Added function to check if a Preference has a value or not
- Added option to remove all registered event handlers from a GridMover and an Object
- Added a function to get the time elapsed since a Timer was started
- Added CyclicGridMover class
Updates
- Added missing const correctness to member fuctions and parameters
- Added one-time event listener option to Animator::onEvent function
- Removed Scene::onEnter override requirement
- Removed Collider requirement in order to set a TileMap tile as collidable
- Removed RigidBody requirement in order to use a GridMover
- Removed the requirement to call GameObject::update() in derived class that override the function
- Renamed ShowAnimationType to ui::AnimationType
- Deprecate all functions responsible for texturing a TileMap
- A GameObject is only updated if it is active
- A Sprite is only drawn if its visible
- Removed classes and functions deprecated in v2.1.0
- Made TimerManager return a reference to the exexution timer when a callback is scheduled
- Fixed RandomGridMover's jittery movement
Bug Fixes
- Fixed removing an event listener from an Object with Object::unsubscribe always failing
- Fixed an alternating Animation completing after one cycle
- Fixed TargetGridMover sometimes generating an incomplete path
- Fixed crash when copying an Animator without an active Animation
- Fixed undefined behavior when more than one Animation is set to alternate
- Fixed copy constructed Animator operating on the same Animations as the original
- Fixed an Animation's start delay executing once for repeated animations
- Fixed seg-fault when a PhysicsWorld is instantiated after a TileMap is a Scene
- Fixed swapping RenderLayer's not working
- Fixed property change callbacks triggering when property value hasn't changed
- Fixed a memory leak when playing different Animations
- Fixed memory leak when instantiating a RigidBody
- Fixed seg-fault when a TileMap is destroyed before a GameObject in the TileMap
- Fixed incorrect Animation frame switch timing when the duration doesn't match the number of frames
- Fixed Timer::isRepeating returning false when the timer is set to repeat indefinitely
Known Issues
- "Unresolved external symbol" errors when linking to the static version of IME. You must link to the dynamic version (default) until the issue is resolved in a later release.
- Property::getValue and Preference::getValue functions always throw an ime::InvalidArgument exception when a std::string or an Abstract Data Type object is stored inside them. This only happens when using GCC 7.3.0 Mingw compilers. You'll have to use the other compilers if you run into this issue
- The engine crashes when a new Timer is started inside the timeout callback of another Timer
- The engine crashes when a ui::WidgetContainer derived class is move constructed
v2.1.0
Changelog
New Features
- Added an option to enable or disable input on a Scene
- Added collision filtering for GameObjects in a TileMap
- Added a Window class for window specific functions such as window events, screen capture etc...
- Added function to notify users after a TargetGridMover path is generated
- Added a function to dispatch an event when the value of a Property changes
- Added support for multiple Scene removals in a single frame
- Added time scaling for individual animations
- Added option to externally specify the position and velocity iterations for the RigidBody physics engine
- Add functions to set/get the load path for a ResourceType in a ResourceLoader
Updates
- Update incorrect ime::Sprite::setTexture doxygen documentation
- Deprecated utility::ConfigFileParser class with PrefContainer class
- Remove @internal tag from ime::GridMover::resetTargetTile, it can now be used externally
- A GridMover target now occupies a target tile prior to moving to it
- Deprecate Scene::setVisibleOnPause(bool) function with Scene::setOnPauseAction(ime::Uint32)
- Separated internal event handlers of GridMover from user handlers
- Updated Sprite::getAnimator() to be callable in const context
- Set the same load path for ResourceType::Image and ResourceType::Texture
Bug Fixes
- Fixed a memory leak when intantiating a Texture with the default constructor
- Fixed ime::Preference always throwing ime::InvalidArgument for std::string values
- Fixed uncontrollable GridMover target after movement is unfrozen
- Fixed audible audio files when an AudioManager is muted
- Fixed incorrect disabled background colour setting for an EditBox widget
- Fixed background Scene using the same Camera as the active scene
- Fixed removing a ui::Widget inside a container ui::Widget always failing
- Fixed GridMover target flagged as moving when its speed is 0
- Fixed a background Scene's gui not rendered when setVisibleOnPause is enabled
- Fixed the outline colour of an EditBox changing when its hover colour is changed