Kanzi 3.7 release notes

New features

  • Activities

    Activity system allows you to define structure of the UI of your application and implement UI navigation. See Activities.

  • Render pass prefabs

    Introduced render pass prefabs which you can use to create render pass trees that define how Kanzi renders 3D content in your project. You can customize and reuse render pass prefabs in your application. See Rendering and Using render passes.

    ../../_images/create-group-render-pass.png
  • Bindings

Feature improvements

  • Changed the bindings interface:

    • Split the interface to bindings (AbstractBinding) and binding runtimes (AbstractBindingRuntime).

    • Binding source (BindingSource) and binding target (BindingTargetRuntime) now work as separate objects. They implement reading and writing to objects, data sources, and messages. You can read a binding source from direct values or resources.

  • Improved the performance profiling system:

    • Added several startup and main loop performance profiling categories. See Measuring the performance of Kanzi Engine.

    • Added ApplicationProperties::mainLoopProfilingSampleBufferCount. You can use it to set the number of data samples in main loop profilers. See MainLoopProfilingSampleBufferCount.

    • Added resource profiling context attribute ResourceProfilingContext::Duration. You can use it to measure the time it takes to load and deploy a resource, including the resources that the resource depends on. See Measuring the loading and deployment time of resources.

    • Added callbacks for each profiler. Kanzi calls these callbacks when the addition of a profiling sample results in a full buffer.

  • Made these improvements and changes to focus management:

    • There are now these types of focus scopes: Group, Fence, Modal and Popup. Use the Focus Scope Type property (FocusManager::FocusScopeTypeProperty) to set the type of focus scope. As a result of this change, the FocusManager::FocusScopeProperty is now deprecated. See Focus and Using focus.

    • Added the DirectionalFocusNavigationReason so that you can distinguish the focus chain navigation (Tab and backtab) from the directional focus navigation (up, down, left, right).

    • The getScopeFocusedNode() function now only returns the last logical focus node of a focus scope. This can be a node nested in a focus scope node, if the nested focus scope has Logical Focus property set.

    • The setScopeFocusedNode() function now sets the logical focus node of a focus scope. This function works also on nested scopes.

    • When you now enable the Logical Focus property (Node::LogicalFocusProperty) on a node, you make sure that the node is the only logical focus node in the focus scope to which it belongs.

    • The Node::trySetActiveFocus() function now returns the node or its child node that is focused.

    • When you use the Next Focus Node and Previous Focus Node properties (FocusManager::NextFocusNodePathProperty and FocusManager::PreviousFocusNodePathProperty) to override the focus chain navigation routing, Kanzi takes the override into account only after the focus chain navigation leaves that focus scope.

  • Made these changes to the InputManipulator class:

    • Implemented support for the StateCanceled and StateDelayed input manipulator states during touch or mouse input sequence.

    • The InputManipulator::cancel() function now cancels an outstanding gesture and InputManipulator::onCancel() function reacts on gesture cancellation.

    • Added these messages to input manipulators that notify about gesture cancellation:

      • DragAndDropManipulator::CanceledMessage

      • LongPressManipulator::LongPressCancelMessage

      • MultiClickManipulator::CanceledMessage

      • PanManipulator::CanceledMessage

      • PinchManipulator::CanceledMessage

  • Made these changes to the glyph, font, and text:

    • Added the FontManager class. Use this class to set the current font rasterizer engine, create font, access font loaders, and access the glyph cache manager.

    • Added the Hyphenate property (TextBlockConcept::HyphenateProperty) to enable you to configure hyphenation of text in Text Block nodes.

    • Word wrapping is now disabled by default. To create multi-line text in Text Block nodes, add and enable the Word Wrap (TextBlockConcept::WordWrapProperty) property.

    • Converted these classes to C++:

      • Font

      • iTypeFont

      • FreeTypeFont

      • TextFormat

      • TextLayouter

      • TextLayout

      • GlyphCache

      • GlyphCacheManager

  • Converted these Kanzi Engine classes to C++:

    • Plane

    • Quaternion

    • Ray

    • Spline

  • Added to the ResourceManager functions that enable you to retrieve handles of loader threads, so that application code can adjust its settings. Resource manager creates all its loader threads during application startup and does not add or delete loader threads during the rest of application runtime, except during shutdown. See ResourceManager::getLoaderThreadHandle and ResourceManager::getLoaderThreadCount.

  • Improved the workflow for creating Kanzi applications for Android:

    • You can now use Android Studio and the Gradle build system to build and deploy Kanzi applications to Android.

    • In Edit > User Preferences > Advanced > Open Build Environment Configuration you can now set the ANDROID_HOME and JAVA_HOME environment variables, which you need to deploy applications to Android devices.

  • You can now configure anti-aliasing for the Kanzi Studio Preview. See Setting anti-aliasing in the Preview and Application Player.

  • The Kanzi Studio Preview no longer uses the deprecated legacy kzb format. To use the deprecated legacy kzb format, in the Project > Properties set the Preview Kzb Version property.

  • Added the Hover property (Node::HoverProperty). Kanzi updates the Hover property for hit testable nodes and their parent nodes to indicate whether a node is the foremost node under the cursor.

  • In the Composition Target Render Pass the Resolve Immediately property is now enabled by default.

  • You can now configure graphics initialization for your Kanzi application. See Graphics performance logging.

  • Improved the consistency of the syntax of the metadata attributes for setting how to show Kanzi Engine plugin custom types in Kanzi Studio. See Reference for showing Kanzi Engine plugin custom types in Kanzi Studio.

  • In the Kanzi Studio plugin interface you can now use the IUserPreferences interface to store project-independent settings for your Kanzi Studio window plugins. See Kanzi Studio plugin interface API reference.

  • Several Kanzi Studio usability improvements that help you get things done in less time:

    • In the Node Tree you can now use Ctrl H to quick-hide Page and Page Host nodes.

    • You can now set the tunneling message handlers in Kanzi Studio.

    • When you clean up your Kanzi Studio project, to avoid deleting the prefab templates that are used by Kanzi Engine application code, you can now enable the Is Used By Code property. See Deleting resources and prefabs that your project is not using.

      ../../_images/show-prefab-template-properties.png ../../_images/prefab-template-is-used-by-code-enabled.png

Changes

  • Added support for Visual Studio 2017. Kanzi no longer supports Visual Studio 2013.

  • Kanzi now requires C++14.

  • Added support for Android x86_64.

  • Updated libjpeg to version 9c.

  • Updated FBX SDK to version 2019.2.

  • Updated the Kanzi license terms. See KANZI ONE SOFTWARE LICENSE TERMS.

Documentation

  • Improved the tutorial that helps you learn how to add keyboard input to your Kanzi application to show how to use the focus scopes and triggers.

  • Improved the tutorial that helps you learn how to get the data for your Kanzi application from a data source to use the TaskDispatcher and a worker thread to track changes in the data source. See Tutorial: Get application data from a data source.

    ../../_images/end-of-step-3.png
  • Added instructions on how you can use the Kanzi logging system to print messages to the Log window, the Kanzi debug console, standard output, and the system log on your target device. See Logging.

  • Added documentation on how to work with Bezier keyframes in Kanzi API. See KeyframeAnimation::BezierKeyframe.

Fixes

Fixed issues to improved stability and usability of Kanzi.