logo HB

Changelog for Hummingbird

Version – released 22 February 2018see blog post

Feature Added support for DirectX 12. We added a separate sample solution / project demonstrating that on Windows. DX12 is now the default renderer in our samples on Xbox One.
Feature Extended support for Chrome’s Developer Tools with the ‘Console’ panel. Console messages (e.g. from console.log or console.error) will now be displayed. You can type arbitrary JavaScript and Hummingbird will evaluate it and print the result. To access the tools, open Chrome and go to http://localhost:9444 after launching your game.
Feature Extended support for Chrome’s Developer Tools with the ‘Performance’ panel. You can now profile your UI and inspect what parts of the page are the most demanding.To access the tools, open Chrome and go to http://localhost:9444 after launching your game.
Feature Extended the data-bind-for syntax. It now supports passing the index of the current element, as well as an iterator for the element itself. Briefly, this allows you to use this syntax data-bind-for="index, it: {{myModel.myArray}}". See the docs for more info.
Feature Extended the standard CSS filter property with a new custom keyword. coh-color-matrix allows you to specify a color matrix which will be applied to the element and to achieve some effects that are not otherwise doable with standard CSS filters.
FeatureUE4 Support for UE4 4.19, Preview 3.
FeatureUE4 Added support for live views and preloaded images to the UE4 plugin. This allows you to easily achieve some impressive effects like displaying a 3D avatar of the player in the UI.
See the newly added LiveViewMap which shows how to have the feed from two cameras displayed within the UI.
FeatureUE4 The data binding system can now be used from Blueprints. You can create and update data models and synchronize the game and the UI without ever leaving Blueprints.
FeatureUE4 Unreal types (UCLASS / USTRUCT) are now automatically exposed to JavaScript. Previously, you would have had to describe them to the SDK by writing a CoherentBind function for each of your classes. This is now done automatically.
Fix The data binding system now ignores whitespace in data bind attributes. Previously, it would fail to interpret attributes correctly if they contained whitespaces.
Fix The CSS property transform-origin now works as expected with non-percentage values.
Fix Fixed a crash caused by clicking on text input past the final character after a certain number of characters were previously deleted.
Fix Added a virtual destructor to the cohtml::Library interface.
FixUE4 Fixed a bug causing the ‘Add HUD’ button in the Hummingbird menu to add a HUD page without visible text.

Version – released 6 February 2018see blog post

Feature Added support for GIF images in <img> tags.
Feature Added support for the <nav>, <header>, and <footer> elements.
Feature Added support for attributes on DOM elements, including the dataset API used for setting data-* attributes.
Feature Added support for 3D transforms, transform-origin, and perspective-origin. Completed support for transform (previously it was missing support for the matrix2d syntax).
Feature Added support for complex CSS selectors. The SDK now works correctly with the following selectors:

Support for this feature is hidden behind the ViewSettings::EnableComplexCSSSelectorsStyling flag and is turned off by default as it has performance implications.

Feature Added support for the inherit keyword in CSS rules.
Feature Added partial support for the WebAnimations API.
Feature Added support for the History API.
Feature Added support for the Location API.
Feature Added support the Text and CharacterData interfaces which allows text nodes in the DOM to be manipulated from JS.
Feature Added support for Node.getFirstChild and Node.getLastChild.
Feature Added support for the MutationObserver API.
Feature Added support for document.querySelector and document.querySelectorAll.
Feature The data binding system now allows you to bind to the CSS properties class, background-image, and transform. This allows you to synchronize more data between the UI and the game. See the blog post linked above for examples. The relevant data-binding attributes are data-bind-class, data-bind-class-toggle, data-bind-background-image-url, and data-bind-transform2d attributes.
Feature The data binding system now supports structural data binding via the data-bind-if and data-bind-for attributes. Together they allow you to generate elements in the page dynamically, directly from your data. See the blog post / documentation for further information.
Feature Added support for data binding using pure JavaScript objects. This allows UI developers to use the system without corresponding C++ models which is especially helpful for mocking and for data that’s computed / stored in JS. See the docs for further information.
Feature Added initial support for Chrome’s Developer Tools. Open Chrome and go to http://localhost:9444 after launching your game to access the tools. Currently only the ‘Source‘ panel works which serves as a JS debugger. You can set breakpoints, add watches, inspect values and the callstack and follow the code’s execution.
FeatureUE4 Added support for Unreal Engine 4.18
Enhancement Improved performance by drastically improving cache locality in some of our computationally intensive systems like animation playback and event dispatching.
Enhancement Expanded the existing JS interface for the Document by adding items from the standard.
Enhancement Added ES6 support to platforms where it was previously missing (PS4, XB1)
Enhancement Added canvas support to platforms where it was previously missing (PS4, XB1, iOS, MacOS)
Enhancement Improved library compatibility on Android – all symbols in our third party dependencies are now hidden in a namespace so they won’t clash with versions of the same libraries the engine is using.
EnhancementAPI Added new public method (cohtml::View::ShowElementAABBs) allowing users to visualize the bounding boxes of all elements on the page.
Enhancement Added support for console.time and console.timeEnd
Enhancement The cohtml::Library interface now supports reinitialization. Previously, it was unsupported to deinitialize and create a second instance of the library.
Fix The JS event ‘touchend’ will now be properly dispatched. Previously, only ‘touchstart’ and ‘touchmoved’ were dispatched.
Fix Fixed multiple bugs in the <input> and <textarea> elements caused by incorrect calculation of text size.
Fix The :hover CSS pseudoselector is now correctly applied to all hovered elements in the DOM tree. Previously, only the topmost element would receive this style but not his ancestors.
Fix Fixed a major memory leak on platforms using V8 (Windows, Android) caused by garbage collection being run very rarely.
Fix Fixed a crash in engine.call on platforms using JavaScriptCore (PS4, XB1, iOS, MacOS).

Version 1.5 – released 22 August 2017 – see blog post

Feature Added live view support. Live views allow you to show 3D scenes in the UI (picture-in-picture) e.g. show a player’s 3D avatar or an item in the UI.
Feature Added CSS filter support. CSS filters allow you to apply postprocessing effects on any element in the page e.g. blur or grayscale.
Feature Added a new, nonstandard, display mode for layout – display: simple which greatly simplifies the layout algorithm used by Hummingbird and results in much faster frame time. See the docs for more details.
FeatureUE4 Introduced a plugin for UE4 closely resembling the GT plugin. It features:

  • Creating UI for HUDs and for in-world surfaces via AHUD / actor components
  • Slate and UMG support
  • Full keyboard, mouse and gamepad support
  • Localization support
  • Blueprint support for all of the above
  • Performance metrics via stat Hummingbird / stat HummingbirdMemory
  • Console commands (e.g. hb.reload to reload all Hummingbird views)
  • In-editor menu for setting up common system properties
  • Supports Windows, PS4 and XboxOne
  • Comes in a separate installer (or .zip archive if you’d rather)
  • Separate docs
  • A sample game for versions UE4.16+.

Version – released 26 June 2017

Feature Significantly improved the CSS layout algorithm. Added support for percent (%) values on positions and sizes.
Feature Significant improvements in the SVG renderer. SVGs now look better, take less memory and are rendered more efficiently.
Feature Added support for declarative data-binding. Developers can bind values in the HTML to their data-model in C++.
Feature Added gamepad support and API for using gamepads directly in Hummingbird.
Feature Implemented the innerHTML JavaScript property on DOM nodes.
Enhancement Improved the performance of Hummingbird during style changes.

Version – released 20 Feb 2017

Fixed Crash on closing Unity game on MAC
Fixed Animations look choppy on Motorola G (3rd gen) with OpenGL ES 3
Fixed Toggling the display property from block to none breaks the layout
FixedUnity Strategy game (cards game) sample – cards pop-up descriptions do not occur on tocuh event
Fixed Fix nodes position when an node is changed from hidden to visible
Fixed JS GetClassNames return name with trailing ws

Version – released 11 Jan 2017

FeatureNative Added JS debugger for Android and Windows
FeatureUnityNative Added support for compressed image formats on mobile – ASTC, ETC1, ETC2
FeatureNative Added support for pre-loaded images
FeatureNative Added support for fallback image formats – in development users can use PNG but in shipping the library automatically loads ETC/DDS etc.
FeatureNative Added support for a “onload” event and resource load tracking
EnhancementNativeUnity Coherent Editor
EnhancementUnityNative Added back and forth buttons to the samples
EnhancementUnity Added support for Unity 5.5
Fixed SVG Opacity does not work as expected
Fixed Bug in the MOBA sample – the potions randomly disappear
FixedUnity On low end devices the input events do not work
Known Issues The resourses in Mad Rabbits Sample and Moba Main Menu Sample load slowly
Known Issues On Motorola G (3rd gen) with OpenGL ES 3, the animations look choppy
Known Issues Problem with animations when fired with onload event
Known Issues Crash on attaching the debugger to a page flooding with console.log()
Known Issues In particular cases, the keyboard input could cause a crash

Version 1.02 – released 16 Nov 2016

FeatureNative Added debugger shared object to the Android apk
FeatureUnityNative The global context logic removed from JSC
Fixed Error in the backend when running Multiple views on gles2
Fixed SVG polygon renderer on iOS
Fixed MOBA sample – bug with the On/OFF music button
Fixed MOBA sample – MainMenu fixed
FixedUnity Unity documentation indexes
FixedUnity Mad Rabbits sample – crash on exit on iOS
FixedNative Menu sample – js error on toggling menu
Fixed Unity Logging in Unity does not work

Version 1.0 – released 08 Nov 2016

FeatureUnityNative Support for OpenGL ES 2 & OpenGL ES 3 on Android and iOS
FeatureUnityNative Support for input related tags
FeatureUnityNative Support for @font-face rule
FeatureUnityNative Support for keyframe animations
FeatureUnityNative Support for text shadow and box shadow
FeatureUnityNative Support for masks
FeatureUnityNative Support for 9-slice and rounded borders
FeatureUnityNative Support for text input and touch events
FeatureUnityNative Support for multiple views
FeatureUnityNative Support for SVG images (Tiny specification)
FeatureUnityNative Support for reloading pages in the UI
FeatureUnityNative Devtools integration in development, console log printing working on Android and Windows