Kanzi 3.9.3 release notes

New features

  • Custom Kanzi Studio property editors. Introduced Kanzi Studio API that enables you to define your own property editor for custom Kanzi Studio and Kanzi Engine property types. See Defining a property editor.

  • New functionality for binding expressions. You can now use binding expressions to:

  • You can now write Code Behind for Activities in Java. See Programming Activities with Java Code Behind.

  • Added support for the QNX system logger (slogger2). To build a Kanzi application for QNX, you now need the slog2 library from the QNX software development platform. See QNX system logger (slogger2).

Feature improvements

  • Kanzi Studio improvements related to the Activity system:

    • You can now use Activity prefabs from referenced Kanzi Studio projects.

    • Improved the Create Activity dialog:

      • You can now refer to an Activity prefab by its name or kzb URL.

      • Improved the filtering of the existing Activity prefabs in the Prefab Template dropdown menu.

      • Improved the validation logic. For example, you can no longer select an Activity prefab that is already in use by an ancestor Activity.

      ../../_images/create-activity-and-prefab.png
    • In the Activity Browser side panel the Activity Prefab Template dropdown menu now shows the name of the selected Activity prefab instead of the kzb URL, which you can see in the tooltip.

      ../../_images/ab-side-panel.png
    • You can now use prefab placeholders as the root Activity Host node in the Activity Browser.

  • Improvements to application configuration:

    • You can now improve the security of your Kanzi application by controlling memory consumption in the third-party libraries that Kanzi uses to load images. See Image loading.

    • You can now choose which strategy Kanzi uses to memory map files on QNX. See MmapMode.

    • You can now set the QNX Screen pipeline ID for your Kanzi application window. See QnxPipelineID.

  • Kanzi Android framework (droidfw) improvements:

  • Kanzi Java API improvements:

    • Added to the Node class a set of functions to access node change flags. For example, Node.setChangeFlag(PropertyTypeChangeFlag), Node.isChangeFlagSet(PropertyTypeChangeFlag), and flag-specific methods, such as Node.invalidateMeasure() and Node.isInvalidMeasure().

    • All built-in message types are now associated with their message argument class.

    • All built-in message argument classes now have getters and setters for all their properties.

    • Added support for bindings. Now you can:

      • Create one-way, two-way, to source, value source, and resource source bindings.

      • Use callback binding processors.

      • Set and remove bindings using the Node.setBinding(), Node.setBindingWithOwner(), Node.setModifierBinding(), Node.setModifierBindingWithOwner(), Node.removeBinding(), and Node.removeBindingsWithOwner() methods.

      See Using bindings.

    • Added access to C++ counterparts in relevant classes to ease integration with custom JNI code. See Using custom JNI extensions.

  • Kanzi Studio project templates for Android now support stripping debug symbols from native libraries by specifying the stripNativeLibs property. See Stripping debug symbols.

  • Improvements to render passes:

    • You can now set in any render pass the Camera node that the render pass and its descendants use to render content. See Setting the camera for render passes.

    • Introduced in the Composition Target Render Pass the Input Viewport Area property that reports the viewport area of the composition target relative to the composition space of the parent render pass. See Rendering content to composition targets.

  • Kanzi Engine Introduced a FocusManager::trySetFocus() overload that enables you to set fallback behavior when setting focus to the node fails.

  • On QNX you can now list information about the displays available to your Kanzi application. See Printing Screen display information.

  • Introduced support for 32-bit indices in meshes.

  • Kanzi now generates mipmaps for a render target texture automatically when the mipmap mode requires them.

Changes

  • The Android application and Android application with Java plugin new project templates now align with Android Studio defaults.

  • Kanzi Java API changes. When you define a message type, you must now specify an associated message argument class. Accordingly, when you dispatch or handle a message, you must use the message argument class associated with the message type. Kanzi Studio uses this association to give you a list of properties that you can set to or get from the arguments of a message. See Changes in Java API.

  • Kanzi now by default uses the default strategy of the target system to memory map files. For example, QNX by default uses eager mapping. Previous versions of Kanzi instructed the system to use lazy mapping. See MmapMode.

  • The morph shader now calculates the weight for the base morph. If you want to apply this change to a project that uses the old morph shader, see Changes to the morph shader.

  • Kanzi Studio now uses .NET Framework 4.8. See Kanzi Studio plugins.

  • Removed the drawBuffers() functions from the Renderer3D. The data-driven render path from the RenderEntry3D class supersedes these functions.

    You can achieve the same functionality using these functions:

    • applyMaterialStrict(node, material)

    • mesh->applySkeleton(coreRenderer, node, shader)

    • mesh->bind(coreRenderer, node, cluster, shader) (or morph->bind())

    • coreRenderer.applyTransformation(shader)

    • coreRenderer.drawBuffers()

Documentation

Notable fixes

ID

Description

Area

383468

Kanzi Studio Preview no longer terminates when you in a Trigger Condition compare a resource to a Fixed Value by resource ID.

Kanzi Engine

401937

Fixed an issue with applying the Font Hinting Preference when using the iType Font Engine.

Kanzi Engine

401232

Kanzi no longer lets the application user select an item in a disabled List Box node.

Kanzi Engine

402604

Fixed focus system message dispatching and the order in which Kanzi dispatches the focus messages.

Kanzi Engine

405914

Calling FocusManager::removeFocus() now removes the application focus completely, instead of making the keyboard focus node the logical focus node of the focused overlay.

Kanzi Engine

395613

Fixed the issue that prevented the Apply Activation Action from activating an Activity in a Parallel Activity Host that is in the Deactivating state.

Kanzi Engine

402601

Parallel Activity Host now deactivates an auto-closing overlay Activity when keyboard focus moves to an overlay behind that Activity.

Kanzi Engine

404262

Fixed the issue that caused Kanzi to needlessly detach and reattach an Activity in a Parallel Activity Host when you activated the Activity or changed its priority level.

Kanzi Engine

413250

Fixed the issue that when only some of the 3D rotation channels were animated, Kanzi was ignoring the transformation property value of the other rotation channels.

Kanzi Engine

400351

When parsing an application configuration file fails, Kanzi now logs a verbose error message that includes the file name.

Kanzi Engine

409473

Fixed the issue that prevented creating multiple instances of a skinned mesh. See Changes for skinned meshes.

Kanzi Engine

131174

Fixed the issue that caused a discrepancy in font metrics calculations between iType and FreeType font engines in Kanzi.

Kanzi Engine

379057

Fixed the issue that made the Activity Browser show deleted Activity properties.

Kanzi Engine

406088

Fixed the issue that caused slowness when attaching non-focusable nodes.

Kanzi Engine

412903

Fixed the issue that prevented Kanzi from updating the render target texture of a 2D node.

Kanzi Engine

416090

Fixed the issue that caused the kzWindowSize fixed uniform to work incorrectly.

Kanzi Engine

410928

Fixed the issue that caused a Java plugin defined NodeComponents in Kanzi Studio to terminate the Preview.

Kanzi Java API

411080

Fixed the issue that caused input handling to break when Kanzi Studio project StartupPrefab (the prefab created in the Node Tree window) was set as the startup prefab of a KanziView.

Kanzi Android framework (droidfw)

410949

Fixed the issue where KanziViewAdapter.getRoot() returned null even after you set the root node by calling KanziViewAdapter.setRoot().

Kanzi Android framework (droidfw)

374084

Fixed the issue where typing certain characters in the Create Activity dialog caused a Null Reference exception.

Kanzi Studio

398445

The Create Activity dialog now lets you name an Activity the same as an existing Activity prefab.

Kanzi Studio

401362

Fixed the issue that prevented the Preview Node tool from selecting an Empty Node 2D node that has a Foreground Brush but no Background Brush.

Kanzi Studio

404166

Kanzi now preserves the keyboard and logical focus nodes when the Focus Order property of a node in a focus scope changes.

Kanzi Studio

410397

The Phong shaders that come with Kanzi now support using both skinning and morphing at the same time.

Kanzi Studio

412874

The Phong shaders that come with Kanzi now support configuring the number of morph targets with the KANZI_SHADER_MORPH_TARGET_COUNT shader preprocessor define. You can disable morph target specific normals with the KANZI_SHADER_USE_MORPH_TARGET_NORMALS shader preprocessor define.

Kanzi Studio

410615

The fbx importer in Kanzi Studio now supports loading meshes that are using both skinning and morphing at the same time.

Kanzi Studio

409499

Fixed the issue that caused the fbx importer to load some transformations incorrectly.

Kanzi Studio

410612

Kanzi can now import mesh morph weight animations from fbx files.

Kanzi Studio

274524

Fixed the Preview debug visualization of skinned meshes.

Kanzi Studio

399181, 395617, 362488

Kanzi Studio project renaming now works with Kanzi Activities.

Kanzi Studio

131174

Fixed the issue that prevented the Activity Browser from deleting invalid Activities.

Kanzi Studio

345314

Fixed the issue that prevented Kanzi Studio Preview from rendering lights in a Scene prefab that you opened as a composition.

Kanzi Studio

401927

Fixed the issue where Kanzi Studio failed to import some 3D models that contain meshes with more than 64k vertices.

Kanzi Studio

411007

Fixed the issue that prevented adding Code Behind in the Activity Browser after you rename a Kanzi Studio project.

Kanzi Studio

412556

Fixed the issue that prevented adding Code Behind to a Data-Driven Exclusive Activity Host in the Activity Browser.

Kanzi Studio

381124

Fixed the issue that prevented including generic methods in the Kanzi Java API reference.

Documentation

407827

Fixed the Tutorial: Drag and drop and Tutorial: Get application data from a data source instructions to use a static create function to construct DataObject classes.

Documentation

409433

Kanzi tutorials and examples now come with the generate_cmake_vs2019_solution.bat script that you need to generate the Visual Studio 2019 solution for the application.

Kanzi framework SDK