I have released Gideros 2022.6 today, and while I delayed it, judging it was not worth, it still comes with a few interesting changes and additions.
To begin with, it includes a new collision plugin: cute_c2, an excellent contribution from @rrraptor
, and an update to ImGui, again from @rrraptor
Then it comes with experimental mipmapping support: you can enable it by adding mipmap=true in texture options when creating a Texture, and it allows Gideros to generate pre-downsampled versions of a larger texture and automatically select the best resolution when rendering.
On the audio side, audio engine used on Android and QT, OpenAL soft, is now also used on iOS, and comes with two new features:
- the ability to enable filtering (high-pass, low-pass, band-pass)
- the ability to select the left-right balance of a stereo source
Long term plan is to use OpenAL-Soft for all platforms and expose more and more features and effects to lua API.
There is a big change also about HTML export: exported code now makes use of native webassembly exceptions instead of emulated ones. This results in smaller and a lot faster code. There is a drawback though, it will work only on supported browsers: Firefox, Safari, Edge, Chrome at the time of writing this.
I have also been working on a very specific and still not fully implemented feature: styling support. It adds two calls to Sprite class: setStyle(table) and resolveStyle(reference,table). The first call has two effects: it attaches a style table to a Sprite and mark it as dirty. The second call resolves a style reference from the given style table or the one attached to the sprite.
This means that a Sprite can now be given style references instead of plain values, and Gideros will resolve those references to actual values thanks to style tables at runtime. Currently they are handled for Sprite layout constraints and layout parameters, and for Pixel color, but more may come in the future.
Things that are possible thanks to styles:
cellColor=vector(1,0,0,1) --cellColor is Red initially
for i=1,10 do
Core.yield(3) --Wait 3s
style.cellColor=vector(0,1,0,1) --Set cellColor to green
for i=1,10 do
Of course the above source code has little benefit from setting the color directly, but if you happen to have a complex sprite hierarchy and need to change styles at runtime, it can save a lot of hassle.
Full list of changes:New features
[gfx] Support texture mipmap
[audio] Allow filtering and balance setting in audio/openal
[sprite] Initial support for style references
[plugin/cute_c2] Add cute_c2 pluginImprovements
[font] Break characters is now considered 'latin', to avoid running through slow harfbuzz shaping when a text is truncated
[export/html] Use wasm exception catching: provides a huge boost but only major browsers support it
[export/apple] Use OpenAL soft backend for more features
[plugins/imgui] ImGui v1.87
[plugins/imgui] Removed ImPlot from sources
[plugins/imgui] Fixed fonts not being loaded correctly sometimes
[plugins/imgui] Fixed key codes sended to inputText callback
[plugins/imgui] Added new functions to inputText callback data
[plugins/imgui] Added new functions to resize callback data
[plugins/imgui] Renamed "Font:getFontSize()" to "Font:getSize()"
[plugins/imgui] Renamed "getBufDirty()" to "isBufDirty()"Fixes
[gfx] Sprite: fix self references when cloning
[gfx] Fix textfield crashing when created with a sample text
[math] Prevent normalize function from returning nan if vector is 0 length
[examples] added missing gtween.png for the examplesDownload it from here:http://giderosmobile.com/download