This release adds substantial Roku OS 16.0 feature coverage across the core engine and the SceneGraph extension. The new Effect node brings rounded corners, borders, and linear/radial gradients to Rectangle and Poster (approximated via Canvas2D, since the engine has no real GPU/shader pipeline), paired with a new FloatArrayFieldInterpolator node for animating its array-valued fields and a public ArrayGrid.focusFeedbackPoster field for customizing a grid's focus indicator. The core engine gains a new roWebSocket component with full Node.js and browser support — unlike the raw-socket components, it performs real WebSocket network I/O on both platforms — and ifDraw2D.Clear() now returns a Boolean like DrawLine()/DrawPoint()/DrawRect() already did, with a new roTextureRequest.SetDrawable() controlling whether a texture-manager bitmap can be drawn onto directly. An undefined conditional-compilation name in #if/#elseif now evaluates to false instead of raising a compile error, matching Roku OS 16.0's relaxed rule. The remote-control simulation also gains experimental multi-controller support (multi_controllers=1), an expanded game pad button map, and an analog GetValue() extension on roUniversalControlEvent — simulator-only capabilities with no real-Roku equivalent, whose API may still change in a future release. Also fixed: DrawScaledObject() not mirroring the image for a negative scaleX/scaleY, a SceneGraph focus re-grab being dropped when the competing focus lived in a still-detached subtree, and DynamicKeyGrid not rendering a Key Definition File's own icon/focusIcon bitmaps. Read the full release notes below for more details.
Release Changes
Core Engine
- (brs) Added
roWebSocketcomponent (Roku OS 16.0) with full Node.js and browser support by @lvcabral in #1234 - (draw2d) Fixed
DrawScaledObject()not mirroring the image for a negativescaleX/scaleYby @lvcabral in #1235 - (draw2d)
ifDraw2D.Clear()now returnsBooleanand addedroTextureRequest.SetDrawable()(Roku OS 16.0) by @lvcabral in #1236 - (brs) An undefined
#if/#elseifconditional-compilation name now evaluates tofalseinstead of raising a compile error (Roku OS 16.0) by @lvcabral in #1237 - (brs) Added experimental support for multiple simultaneous game controllers and an analog
GetValue()extension onroUniversalControlEvent— simulator only, no real-Roku equivalent, API may change by @lvcabral in #1226
SceneGraph Extension (brs-scenegraph release v0.6.0)
- (rsg) Added new
Effectnode for rounded corners, borders and gradients (Roku OS 16.0) by @lvcabral in #1230 - (rsg) Added
ArrayGrid.focusFeedbackPosterfield for customizing the focus indicator (Roku OS 16.0) by @lvcabral in #1231 - (rsg) Added new
FloatArrayFieldInterpolatornode (Roku OS 16.0) by @lvcabral in #1232 - (rsg) Fixed a focus re-grab being dropped when the competing focus lived in a still-detached subtree by @lvcabral in #1227
- (rsg) Fixed
DynamicKeyGridto render a Key Definition File's ownicon/focusIconbitmaps instead of a hardcoded lookup by @lvcabral in #1228
Full Changelog: v2.5.4...v2.6.0