Releases: oakmound/oak
Oak v4.1.1
This release:
- Makes miscellaneous updates to dependencies
- Adds an error return when you attempt to use indivisible arguments to sprite sheet creation
- Removes a deprecation warning on OSX
- Fixes usage of metadata on entities
Full Changelog: v4.1.0...v4.1.1
Oak v4.1.0
This release contains:
- Better automated testing for JS compliation / builds
- Improved support for child entities
- Added floatgeom rect support for the
span.Span
interface - Added helpers to particles to enable working with specific draw stacks.
Full Changelog: v4.0.2...v4.1.0
Oak v4.0.2
- This release fixes a bug where the
Height()
method on a font would not return the default font height for those generated from default settings.
What's Changed
- render/font: Enforce default truetype font height for Height() by @Implausiblyfun in #209
Full Changelog: v4.0.1...v4.0.2
Oak v4.0.1
- This release fixes a bug where
event
bindings that returnedevent.ResponseUnbindThisBinding
were not unbound.
What's Changed
- event/internal: Unbind calls now take the current reset of the bus by @Implausiblyfun in #208
Full Changelog: v4.0.0...v4.0.1
Oak v4.0.0
High level changelog:
Overall
- Bump from Go 1.17 to 1.18
- Operations that would previously fail on an oak window because they were not supported on a specific OS will now fail at compile time instead.
- Windows, Linux, and OSX have had their window functionality standardized.
- Examples have been trimmed down and compressed.
Testing
- Added Linux AMD64 and Windows AMD64 automated test agents
Alg Package
- alg/range has been replaced by alg/span, a genericized version of the package.
- Intgeom rectangles now implement the alg/span interface. In other words, rectangles can be queried for arbitrary points within them and have points clamped to their boundaries.
Audio Package
- The audio and pcm packages have been rewritten from scratch.
- A program can now select a specific audio driver for a platform. There are minimal options currently, but this can be extended in the future.
- The pcm package now defines the audio interface in a streamable fashion, and audio defines options for playing back pcm streams.
- Some functionality has been removed with no current replacement, e.g. Ears, positional filters. They can be re-added in the future.
- Streaming enables new functionality like FadeIn and FadeOut stream wrappers.
- Audio format packages can now be compiled in at request instead of always compiled into programs. This should decrease binary sizes of most programs, particularly those not using audio or only using one format.
- The synth package has additional functionality for manipulating generated waveforms like detuning, combining waveforms, and detecting a waveform's pitch.
Entities Package
- This package has been rewritten from scratch to use optional constructors instead of a series of scaling types with additional functionality. entities/x/move has been moved to entities itself.
- entities/x/btn has been trimmed down to use entities internally instead of its own structures.
- entities/x/force and entities/x/stat have been removed.
- entities/x/shake has been promoted to oak/shake.
Event Handling
- Event handling has been augmented to support type safe argument handling via generics.
- The interface for binding and unbinding events, and the internal logic for processing requests, has been overhauled.
- Example: previously to unbind a specific known binding in collision.Detach, we did this:
if _, ok := en.(attachSpace); ok {
event.UnbindBindable(
event.UnbindOption{
Event: event.Event{
Name: event.Enter,
CallerID: s.CID,
},
Fn: attachSpaceEnter,
},
)
}
Now, bindings return a value that can be explicitly used to unbind themselves later:
if as, ok := en.(attachSpace); ok {
as.getAttachSpace().binding.Unbind()
}
- These rewrites eliminate the need for oak.Config.EventRefreshRate.
Render
- The build tag nogift can be added to exclude the disintegration/gift dependency and its helper functions.
- The build tag noimages can be added to exclude registering the standard library's built in image support.
Scene Handling
- Scenes no longer have a Loop function. For operations that should happen every frame, the event package is preferred, with helpers like scene.Context.DoEachFrame added. scene.Context.GoToScene and its like are preferred for handling when a scene ends.
- Scene contexts embed most of their component constructs, and can be provided to the event and render packages as appropriate.
Changelog by PRs:
- scene: Embed Eventhandler to allow for some embedded calls by @Implausiblyfun in #197
- Feature/v4 eventskeys+examples by @Implausiblyfun in #199
- event: overhaul api by @200sc in #196
- Feature/v4 shaker+examples by @Implausiblyfun in #202
- shiny: overhaul api for v4 by @200sc in #198
- Hotfix: OSX ARM colors by @200sc in #200
- audio: overhaul api for v4 by @200sc in #201
- Feature/v4 entities by @200sc in #203
- Doc + refactor pass 1 by @200sc in #204
- README: Update the readme to have a few more points added by @Implausiblyfun in #206
- Feature/v4 examples by @200sc in #205
- Release/v4.0.0 by @200sc in #207
Full Changelog: v3.4.0...v4.00
Oak v4.0.0 alpha 2
This release is a second alpha for Oak v4; this release overhauls the main package, ranges and spans of numbers and points, audio, internal drivers, screen shaking, and the entities package. It also changes from oak/v3
to oak/v4
.
What's Changed
- Feature/v4 shaker+examples by @Implausiblyfun in #202
- shiny: overhaul api for v4 by @200sc in #198
- audio: overhaul api for v4 by @200sc in #201
- Feature/v4 entities by @200sc in #203
- Doc + refactor pass 1 by @200sc in #204
Full Changelog: v4.0.0-alpha.1...v4.0.0-alpha.2
Oak v4.0.0 alpha 1
This release is a first alpha for Oak v4; this release primarily targets the event API, overhauling it to reduce its exposed size, improve efficiency and add type safety with parameterized types.
Oak v4 currently is planned to overhaul event, audio, internal drivers, and x/entities.
What's Changed
- scene: Embed Eventhandler to allow for some embedded calls by @Implausiblyfun in #197
- Feature/v4 eventskeys+examples by @Implausiblyfun in #199
- event: overhaul api by @200sc in #196
Full Changelog: v3.4.0...v4.0.0-alpha.1
Oak v3.4.0
New Features
- Overhauls the audio system to support streaming audio on windows, linux, and OSX (#191)
- Adds the ability to create persistent bindings that are not removed on scene transition (#194)
Tweaks
- Fixes a bug in
alg.WeightedMapChoice
where it did not respect input weights correctly (#195)
Resolved Issues
Full Changelog: v3.3.0...v3.4.0
Oak v3.3.0
New Features
Tweaks
- Defaults OSFallback to false for JS builds (#183)
Full Changelog: v3.2.2...v3.3.0
Oak v3.2.2
This release fixes a compilation bug within oak's audio dependency for linux/arm64 builds.