Releases: JohnSundell/ImagineEngine
Imagine Engine 0.10.0
This version migrates Imagine Engine to Swift 4.1. To use the engine with Swift 4.0, please keep using version 0.9.0 until you are ready to migrate to Swift 4.1.
New APIs
- Sprite sheet slicing enables you to use only a select part of a sprite sheet for an animation.
- You can now set the background color of a Block.
Bug fixes
- Fixed a
BAD_ACCESS
crash bug when using Xcode 9.3/Swift 4.1.
View build details and download artifacts on buddybuild:
ImagineEngine (iOS, ImagineEngine-iOS)
Imagine Engine 0.9.0
New APIs
- You can now construct an animation with JPG textures (by passing
textureFormat: .jpg
). - You can now set the horizontal alignment mode on a
Label
usinghorizontalAlignment
. Label
now supports plugins.Label
can now support multiple lines of text (by @Alex88WH).Label
can now be rotated (by @jussi80).Label
can now be scaled (by @Loyolny).- You can now observe clicks on a
Label
usingevents.clicked
. - You can now observe clicks on a
Camera
usingevents.clicked
. Block
now has a convenience initializer for a single texture (Block(size:texture:)
).- You can now observe when a
Scene
was resized usingevents.resized
. - You can now check whether an actor is in contact with a given actor or block (by @pablocarmu).
Bugfixes
- Fixed a bug that could cause incorrect collision detection when an actor was significantly moved (by @mattiashagstrand).
- Fixed a bug that would cause blocks to render incorrectly on macOS (by @mattiashagstrand).
View build details and download artifacts on buddybuild:
ImagineEngine (iOS, ImagineEngine-iOS)
Imagine Engine 0.8.0
New APIs
- You can now set an
errorMode
on aTextureManager
, to have either a log message or an assert being thrown in case a texture is missing in your game. Thanks to @vijaytholpadi for implementing this! - Actor's can now have shadows.
- Camera now has a
resized
event. Thanks to @Warren-Lamb for implementing this!
Bugfixes
- Multiline sprite sheets now work correctly on macOS. Thanks for the fix @mattiashagstrand!
- @mattiashagstrand fixed a bug that could cause actors to collide with themselves.
- @mattiashagstrand fixed a bug that could sometimes cause an extra collision event when an actor was removed while the collision was being handled.
View build details and download artifacts on buddybuild:
ImagineEngine (iOS, ImagineEngine-iOS)
Imagine Engine 0.7.0
Removed APIs
- You can no longer observe collisions between an actor and any other actor or any block. Instead, either observe collisions with a specific actor, or with an actor/block that is a member of a given group.
New APIs
- Multiple objects can now be added to a scene directly using
scene.add(a, b, c)
(thanks @NSMyself!) - Custom events can now have a subject without being tied to a specific one.
- You can now specify a repeat mode when repeating a closure on a
Timeline
. - You can now observe whenever a camera was moved (thanks @kkapitan!)
- You can now observe when an actor was added or removed from a scene.
Improvements
- Collision detection is now lazily enabled, meaning that you don't take any performance hit when using actors that don't have any collision observations.
- Timeline is now a lot faster, especially when using many actions at the same time.
Bug fixes
- Repeated metric actions (such as fade or rotation) now behave correctly when using a delta (thanks @mattiashagstrand!)
View build details and download artifacts on buddybuild:
ImagineEngine (iOS, ImagineEngine-iOS)
Imagine Engine 0.6.0
New APIs
Animation
andActor
can now be initialized with the name of a single texture to render.- You can now set a scene-wide name prefix for textures.
- An action can now be easily repeated by calling
repeat(action)
on anActionPerformer
. - All plugins of a given type can now be retrieved from an object using
plugins(ofType:)
(thanks @TadeasKriz!) - All plugins of a given type can now be removed from an object using
removeAllPlugins(ofType:)
. Actor
now has aenteredScene
event (thanks @Warren-Lamb!)- An object can now be passed to timeline and action closures, and it will be weakly referenced and passed into the closure when triggered.
Improvements
- When a
Scene
is reset, its plugins are now deactivated then reactivated again. - A scene now always has a black initial background on all platforms (thanks @z0s!)
- An actor's rect is now adapted according to its scale.
- An actor's scale is now taken into account when evaluating scene constraints (thanks @Juanpe!)
View build details and download artifacts on buddybuild:
ImagineEngine (iOS, ImagineEngine-iOS)
Imagine Engine 0.5.0
New APIs
- You can now use JPG images for textures, both for blocks & actors (by @dymv).
Scene
now has asafeAreaInsets
property and asafeAreaInsetsChanged
event you can observe to handle the safe area insets on iPhone X.
Improvements
- Plugin reuse based on type is now optional, and when adding a plugin to either a scene, camera or actor you now get the plugin that is currently active back as a return value.
View build details and download artifacts on buddybuild:
ImagineEngine (iOS, ImagineEngine-iOS)
Imagine Engine 0.4.0
Improvements
- Imagine Engine now supports tvOS!
- An actor's scale now affects its collisions (unless a custom
hitBoxSize
is set), by @aranasaurus. - A GameViewController's view is now the same instance as its game's view on all platforms.
- Texture scale fallbacks are now remembered, leading to fewer disk operations, by @dymv.
View build details and download artifacts on buddybuild:
ImagineEngine (iOS, ImagineEngine-iOS)
Imagine Engine 0.3.0
Bug fixes
- When observing a scene's
clicked
event, the correct point is now passed to that event on both iOS + macOS, and the camera position is being taken into account. - A race condition that could prevent a chained action from being started was fixed.
- When cancelling a chained action sequence, the entire sequence is now cancelled, instead of just the last action.
Improvements
- Lower scaled textures will now automatically be loaded in case a perfect match for the screen's scale can't be found (implemented by @dymv).
- When observing an actor's
moved
event, both the old and new position are now passed into the closure as a tuple.
New APIs
- You can now use sprite sheets for both blocks and actor animations.
Camera
now has arect
property, similar toActor
andBlock
.- You can now constrain a camera to its scene by setting the
isConstrainedToScene
property totrue
.
View build details and download artifacts on buddybuild:
ImagineEngine (iOS, ImagineEngine-iOS - Debug)
Imagine Engine 0.2.0
Bug fixes
- An actor's
rect
is no longer derived from its layer's frame, which could cause inconsistencies in some situations.
Improvements
- Imagine Engine now supports macOS! Thanks a lot to @insidegui!
View build details and download artifacts on buddybuild:
ImagineEngine (iOS, ImagineEngine-iOS - Debug)
Imagine Engine 0.1.1
Bug fixes
- When using the
neverOverlapBlockInGroup
constraint on an actor, the actor will now be moved to the closest edge when overlapping, instead of being incorrectly snapped to the wrong edge.
Improvements
- An actor will now directly be resized according to its first animation frame when added to a scene or when an animation is assigned.
New APIs
- You can now initialize an
Animation
instance with an array of images.
View build details and download artifacts on buddybuild:
ImagineEngine (iOS, ImagineEngine-iOS - Debug)