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.
Bindings
Introduced To Source bindings, which enable you to push a property value to another node or render pass. See Bindings.
Added support for bindings in render passes. See Customizing instances of a render pass prefab.
You can now use the getCurrentValue binding function to get the current value of the property that you want to bind.
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, theFocusManager::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
andFocusManager::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
andStateDelayed
input manipulator states during touch or mouse input sequence.The
InputManipulator::cancel()
function now cancels an outstanding gesture andInputManipulator::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. SeeResourceManager::getLoaderThreadHandle
andResourceManager::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
andJAVA_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 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.
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.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.