Kanzi 3.8 release notes¶
New features¶
Property Target Easing Interpolator
Use the Property Target Easing Interpolator when you want to dynamically set the target value for a property and want to interpolate the current value to the target value over time using an easing function.
New functionality for binding expressions
In binding expressions you can now use:
Trigonometric functions
Relational operators
Logical operators
Accessor functions
Vector functions
Multiplication of vectors and quaternions
Asset Packages
With asset packages you can create an asset library with content, such as UI components, materials, brushes, styles, and textures. Use asset packages to make this content readily available for use in different Kanzi Studio projects or to share the content within your company for all your Kanzi applications.
See Asset packages.
Cubemap Render Pass
Use the Cubemap Render Pass to reflect the environment on the surface of 3D nodes.
Feature improvements¶
Kanzi now handles a font file as a font family resource, which can contain any number of font files:
Introduced the
FontStyleDefinition
class to contain a collection of font style property values that are passed inside Kanzi.Moved from the
TextFormat
andTextLayouter
classes the font style setter and getter functions to theFontStyleDefinition
class.Introduced the
FontRuntime
class to mapFontStyleDefinition
to a font file (FontFile
) at runtime.FontRuntime
is immutable. When a font style changes, request a newFontRuntime
object from theFontManager
.Introduced the
FontStyleConcept
class which includes helper functions toFontRuntime
.TextFormat
,TextLayouter
, andTextShaper
now takeFontRuntime
instead ofFont
.You can now set the appearance of a font with the Font Weight and Font Style properties, that set which font file from a font family a Text Block node uses to render text.
The Font property (
Node::FontProperty
) is replaced with the Font Family property (Node::FontFamilyProperty
).
To learn how to migrate your Kanzi application to use the changed API, see Font changes.
Improved functionality of binding expressions:
Added matrix and transformation functions INVERSE and TRANSFORM.
Added support for matrix and conversion between matrix and SRT conversion.
You can now access text resources using a resource ID.
Improvements to resource loading:
ResourceManager::LoadTask
now hasLoadAndFinish
andFinishOnly
load task types.FinishOnly
load tasks skip loader threads and Kanzi queues them directly to the main threadFinishingQueue
.A load task can now trigger background loading of dependencies. This improves the use of the loader threads, improves the loading time, and makes the background loading smoother.
Added these resource types to use load tasks and load task dependencies:
Brush
Material
Mesh
Render Pass Prefab
State Manager
Improved the way resource dictionaries are stored in kzb files. This enables faster loading times of kzb files that have large, unused resource dictionaries, such as localization tables.
Introduced speed optimization for
setProperty
,addPropertyModifier
,removePropertyModifier
,copyLocalValue
.Introduced Kanzi Engine API to allow notifying an application that the UI is suspended:
Added override function
onSuspend
that Kanzi calls fromsuspendOverride
.Added ability to cancel the suspension of the UI.
In Kanzi Engine API introduced
PropertyTypeRegistry
that keeps a list of all registered property types in an application. Seekanzi::beginPropertyTypes
andkanzi::endPropertyTypes
.Improved the
ResourceManager
destructor to print the complete list of referenced resources.Added these render target formats:
ARGB 8-bit (A8R8G8B8_UNORM)
Alpha 8-bit (A8_UNORM)
Grayscale 8-bit (L8_UNORM)
Grayscale alpha 8-bit (L8A8_UNORM)
Alpha Luminance 8-bit (A8_L8_UNORM)
Improved collection of prefab dependencies. For the State Managers and resource IDs that are used in a prefab, Prefab View asynchronous prefab changes can now load resource dependencies in the background.
Turned font engine backends into plugins to enable you to have both FreeType and iType font engines for the Kanzi Studio Preview installed at the same time. On platforms that support dynamic libraries, this enables you to select the font engine at application startup. See FontEngine.
In Kanzi Studio triggers are now project items, which enables you to:
Reorder the triggers by dragging them
Copy and paste triggers, actions, and trigger conditions
Modify properties in context of the items
Improvements to the Performance HUD:
You can now configure the position of the Performance HUD. See PerformanceInfoPosition.
In the Performance HUD you can now see the number of timer subscriptions, recurring tasks, and animations. See PerformanceInfoLevel.
Brought back the Overdraw visualization.
Overdraw visualization indicates areas where Kanzi renders multiple times to the same pixel. Lighter green color indicates higher amount of overdraw.
Made these improvements to how Kanzi handles hardware keys:
Introduced
KeyManipulator
class.KeyManipulator
dispatchesKeyPressedMessage
,KeyReleasedMessage
messages when the user presses and releases a key, and on cancellation dispatchesKeyCanceledMessage
message.Keyboard.KeyDown
andKeyboard.KeyUp
messages are now deprecated. UseKeyManipulator
messages with a dedicated key manipulator for each key that you want to handle.The
NavigationManipulator
class now handles navigation keys, such as ↑ (Up Arrow), ↓ (Down Arrow), → (Right Arrow) and ← (Left Arrow), Home, End, Page Up, Page Down keyboard keys.The
FocusNavigationManipulator
class now handles the keys used in focus chain and directional focus navigation. Use this manipulator on the focus scope nodes. To set the manipulator on focus scopes, useFocusScope
.
To learn how to migrate your Kanzi application to use the changed API, see Hardware key handling changes.
Refactored
MessageType
:Replaced
kzuMessageType
withAbstractMessageTypeDescriptor
.MessageType
now automatically attaches its argumentmetaclass
. This makes optional the attaching of message types to an owning class with macroKZ_METACLASS_MESSAGE_TYPE
.For kzb registered messages, message arguments class is fixed to
MessageArguments
.Replaced the constructor of
MessageArguments
that takesAbstractMessageType
as a parameter withNode::dispatchAbstractMessage
.
Introduced input manipulator node components to maintain manipulators attached to nodes. You can find these components in Node Components > Input Manipulators: Click Manipulator, Multi-Click Manipulator, Long-Press Manipulator, Pan Manipulator, Key Manipulator. See Using input manipulators.
PanManipulator
now reports velocity in these messages:PanManipulator::MovedMessage
PanManipulator::EnteredMessage
PanManipulator::LeftMessage
PanManipulator::FinishedMessage
Added the functionality and the Depth Compare Function property for setting the depth compare mode for depth render targets in Composition Target Render Pass.
Improved usability of Kanzi Studio:
In Kanzi Studio the items in the Node Components now use the tree control. This improvement provides you more flexibility and reduces the amount of popup windows when you work in the Node Components window.
You can now open files in your default Windows application straight from Kanzi Studio. In the Library > Resource Files right-click a file and select the Open With Default Windows App or the Open With... command.
Renewed the Kanzi Studio icons for the State Manager, State Tools, and Styles.
Changes¶
Updated PVRTexTool to the version 4.20.0.
Introduced kzb format versioning with major and minor revisions. The kzb format version in Kanzi 3.8 is 11.0.
Changed the syntax of Kanzi Engine plugin metadata attribute
SortingIndex
tometadata.sortingIndex
. See sortingIndex.Removed legacy features:
Legacy kzb format support
kzs_thread
kzc_file
andkzc_input_stream
kzc_output_stream
kzs_mmap
In Kanzi Studio custom Message Types are now separate from Property Types. In Kanzi Studio you can find them in the Library > Message Types.
Unified the name and case for bindings operations in Kanzi Studio.
Platform package qnx700_screen_aarch64 for Kanzi 3.8 does not support ES2.
Kanzi Studio now more regularly sends usage reports to Rightware, which enables us to keep improving Kanzi Studio.
To learn how to migrate your Kanzi application to use the changed API, see Kanzi 3.8 migration guide.
Documentation¶
Added to the Working with ... section a topic dedicated to developing Kanzi applications for Android. See Developing Kanzi applications for Android.
Added instructions on how to create post-processing effects in Kanzi Studio. See Creating a post-processing effect.
Added instructions on how to make your own node components. See Creating custom node components.
Fixes¶
ID |
Description |
Area |
---|---|---|
102522 |
Fixes to skinned mesh importing and calculation of the bone matrices. |
Kanzi Engine |
10852, 10731, 10651 |
Improved handling of corrupted PNG and JPEG images. Now Kanzi throws an exception when it tries to load a corrupt PNG or JPEG image. |
Kanzi Engine |
10678 |
Fixed the issue that caused some non-printable characters to be rendered. Before this fix:
|
|
10688 |
Fixed the issue which caused the loading of a State Manager with custom transition animations or with some triggers and actions to assert if resource loader threads are active. |
Kanzi Engine |
10624 |
Fixed the handling of corrupted or incomplete UTF-8 string input. |
Kanzi Engine |
10539 |
When you use iType font engine, Kanzi now delegates kerning to the WTShaper. WTShaper reads the kerning data from the GPOS table of a font and, for fonts that do not define kerning in a GPOS table, uses kern table as a fallback. |
Kanzi Engine |
10487 |
The Preview no longer terminates when patching a node with SetPropertyAction that reads from a property value in a State Manager |
Kanzi Engine |
10320 |
Fixed the issue that prevented the showing of all startup performance profilers. |
Kanzi Engine |
10193 |
State manager now sends Transition Started and Transition Finished messages when you do not use an animation to transition between states. See Transitions between states without animations. |
Kanzi Engine |
10178 |
Fixed issue that caused the content of a scaled node to show in another node. |
Kanzi Engine |
10172 |
Fixed the issue that caused MessageArguments instances with static lifetimes to cause a memory leak. |
Kanzi Engine |
10125 |
When State Manager dispatches Left State and Entered State messages during state transition, it now sets the StateGroup argument on these messages. |
Kanzi Engine |
10107 |
Fixed the issue that prevented the release of a texture resource of an invisible Model3D after replacing with a nullptr. |
Kanzi Engine |
9955 |
Fixed FromToAnimation to return To value at duration for all cases, especially at time zero when duration is zero. |
Kanzi Engine |
10647 |
Fixed the issue that caused the Preview to incorrectly show that the State Tools are in the Edit mode. |
Kanzi Studio |