JohnSundell/ImagineEngine
A project to create a blazingly fast Swift game engine that is a joy to use 🚀
11 Releases
Latest: 8y ago
Imagine Engine 0.10.00.10.0Latest
📋 Changes
- 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.
- Fixed a `BAD_ACCESS` crash bug when using Xcode 9.3/Swift 4.1.
Imagine Engine 0.9.00.9.0
📋 Changes
- You can now construct an animation with JPG textures (by passing `textureFormat: .jpg`).
- You can now set the horizontal alignment mode on a `Label` using `horizontalAlignment`.
- `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` using `events.clicked`.
- You can now observe clicks on a `Camera` using `events.clicked`.
- + 5 more
Imagine Engine 0.8.00.8.0
📋 Changes
- You can now set an `errorMode` on a `TextureManager`, 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!
- 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.
Imagine Engine 0.7.00.7.0
📋 Changes
- 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.
- 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.
- 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.
- + 1 more
Imagine Engine 0.6.00.6.0
📋 Changes
- `Animation` and `Actor` 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 an `ActionPerformer`.
- 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 a `enteredScene` 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.
- When a `Scene` is reset, its plugins are now deactivated then reactivated again.
- + 3 more
Imagine Engine 0.5.00.5.0
📋 Changes
- You can now use JPG images for textures, both for blocks & actors (by @dymv).
- `Scene` now has a `safeAreaInsets` property and a `safeAreaInsetsChanged` event you can observe to handle the safe area insets on iPhone X.
- 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.
Imagine Engine 0.4.00.4.0
📋 Changes
- 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.
Imagine Engine 0.3.00.3.0
📋 Changes
- 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.
- 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.
- You can now use sprite sheets for both blocks and actor animations.
- `Camera` now has a `rect` property, similar to `Actor` and `Block`.
- You can now constrain a camera to its scene by setting the `isConstrainedToScene` property to `true`.
Imagine Engine 0.2.00.2.0
📋 Changes
- An actor's `rect` is no longer derived from its layer's frame, which could cause inconsistencies in some situations.
- Imagine Engine now supports macOS! Thanks a lot to @insidegui!
Imagine Engine 0.1.10.1.1
📋 Changes
- 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.
- An actor will now directly be resized according to its first animation frame when added to a scene or when an animation is assigned.
- You can now initialize an `Animation` instance with an array of images.
Imagine Engine 0.1.00.1.0
The initial release of Imagine Engine 🚀 Until we reach version 1.0.0, the project should be considered to be in the pre-release phase. You're more than welcome to use it and start building games with it, but there might be bugs and missing APIs here and there. Whenever you find any issues, you are really encouraged to either submit an issue or a PR that fixes the problem. The goal is to get the project to a stable 1.0.0 release as soon as possible.