Skip to content
This repository has been archived by the owner on Apr 16, 2023. It is now read-only.

Releases: KwenaMashamaite/IME

v3.2.0

24 Apr 13:20
Compare
Choose a tag to compare
Release v3.2.0

v3.1.0

22 Feb 22:15
Compare
Choose a tag to compare

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 a ime::GridObject whether or not is has a ime::RigidBody attached to it (except for ime::RigidBodyType::Dynamic)
  • Every derived class of 'ime::Object' emits a destruction event
  • Post-fixed all IME exception class with Exception
  • 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 when T is not a floating point
  • Fixed ime::input::Keyboard::stringToKey() crashing the engine when called with Pause 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

02 Feb 00:12
Compare
Choose a tag to compare
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

20 Dec 22:19
Compare
Choose a tag to compare

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

13 Nov 16:42
Compare
Choose a tag to compare

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

20 Sep 11:09
Compare
Choose a tag to compare
Release v2.3.0

v2.2.1

02 Sep 16:47
Compare
Choose a tag to compare

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

10 Aug 02:54
Compare
Choose a tag to compare

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

26 Jun 18:05
Compare
Choose a tag to compare

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