Kanzi 3.5 release notes

New features

These features are new in Kanzi 3.5:

Feature improvements

  • Improved the animation system:

    • You can now use the Animation Player to control the playback of keyframe animations. See Using keyframe animations. Update your Kanzi applications to use the new features in the animation system. The Play Animation action is deprecated and will be removed in the next version of Kanzi. See Using keyframe animations.

    • Improved the workflow for creating property-driven animations. See Creating property-driven animations.

    • Added the functionality to interpolate property values. See Interpolating property values.

    • Removed the Background Animation property. When you open a project created in an earlier version of Kanzi Studio, Kanzi Studio replaces the Background Animation property with the Animation Player.

    • The legacy animation and its C API are removed. To learn how legacy features map to new features, see Kanzi 3.5 migration guide.

  • New property system. Property system is now fully converted to C++ and the old C API is removed. See Resource properties.

  • Reworked asynchronous loading.

    • Replaced the Preload Resources action and the On Preloading of Resources Completed by the Prefab View node functionality. Use the Prefab View node to load resources asynchronously during runtime. See Using node prefabs.

    • To load resources asynchronously during application runtime using the Kanzi Engine API, use ResourceManager::acquireResourcesAsync and Node::acquireResourceAsync.

    • Improved the stability of asynchronous loading.

  • Added focus and keyboard support for Grid List Box, Scroll View, Slider, and Trajectory List Box 3D nodes.

  • Made possible to change Item Template property in a list box with a state manager.

  • Updated the Performance HUD to include the information about the animations and to enable you to set the level of information the Performance HUD shows. See PerformanceInfoLevel.

  • Refactored the rendering of Node2D. As a result the CPU consumption by Node2D has decreased. See Node2D.

  • Introduced API to reset caches in Node2D. See Node2D::resetCacheChildren.

  • ResourceManager::addDirectoryFromFile now throws an exception if the directory is already added.

  • Removed the message queue support in the message dispatcher. Now all messages are delivered immediately. In the future versions of Kanzi, the task scheduler will replace this functionality.

  • SRTValue3D no longer contains Euler angles. Use quaternions to describe orientations of 3D objects.

  • Merged the BrushResource class to the Brush class.

  • Font loading now uses memory mapping which is enabled when you enable memory mapping for your application. This enables you to improve the performance and memory consumption of your application.

  • Added Application::progressDeploymentQueueOverride. You can use it to control on per frame basis how many resources are deployed.

  • Added ApplicationProperties::graphicsLoggingEnabled variable to application configuration.

  • Improved the usability of the Pages window, including the highlight colors:

    • White border marks the currently active Page or Page Host node.

    • Purple line on top of the node marks a Page Host node.

    • Orange border marks the last active node in a Page Host node.

  • Improved the usability of the State Tools:

    • Exposed the Selected property for the List Box Item Container in State Tools.

    • Cleaner layout, including the improved layout of states.

      ../../_images/state-tools-layout.png
    • You can now edit complex property types, such as matrix properties like Render Transformation and resources like Default Texture, without leaving the State Tools window.

      ../../_images/state-tools-complex-properties.png
    • When you enable State Tools edit mode the Preview window border turns orange, when you use the auto-record button, the border turns red.

      ../../_images/state-tools-edit-mode-preview.png ../../_images/state-tools-edit-mode-auto-record-preview.png
  • Overhauled the interface and approach to working with resource dictionaries in Kanzi Studio. The new Dictionaries window enables you to:

    • Manage the content of resource dictionaries in nodes.

    • Create different resource types and add existing resources to the resource dictionary you select.

    • Set and edit resources in locales and themes.

    See Using resource dictionaries.

    ../../_images/dictionaries-white-type-gray-background.png
  • Added functions to scripting which enable you to:

    • Navigate between Page and Page Host nodes using scripts.

    • Get the node which currently has the focus.

    • Remove the focus.

  • Added the functionality to bindings which returns the control that instantiates the prefab. See Prefab root bindings.

  • Improvements to the Text Block node:

    • Text Block nodes now take into account more information about positioning of glyphs and spaces defined in the font they use. Among other things, these changes allow you to use zero-width joiners and zero-width space.

    • Control the text padding with the Horizontal Padding and Vertical Padding properties.

    • Added the Fixed Character Width property.

      Use the Fixed Character Width property to turn any font into a monospaced font.

    If you created you Kanzi application in an earlier version of Kanzi, these improvements change the way text looks in Kanzi 3.5.

  • In addition to the line and circle trajectories, you can now create and configure directly in Kanzi Studio angle, arc, ellipse, rectangle, spiral, and trapezoid trajectories. You can use these trajectories in the Trajectory Layout, Trajectory List Box 3D, and Slider nodes. See Trajectories.

    ../../_images/angle-trajectory.gif
  • Improved usability of the Localization Editor.

  • Introduced a faster algorithm to generate mesh normals.

  • In Kanzi Studio you can now redeploy and launch the latest build of your application .apk without building it.

  • Added the functionality to discard mouse and touch events per application. See EventSourceProperties.

  • Added kzuFontGetDescender.

  • Added the ability to create texture from an existing GL handle.

  • Exposed implementations for UI controls concept classes.

  • Improved the stability of OpenGL emulation on Windows and Parallels.

Changes

  • Kanzi Studio is now 64-bit, which enables you to work on larger projects.

  • Kanzi Studio now uses .NET Framework 4.6.2.

  • The API to created domain has changed. Domain now creates all subsystems itself.

  • Removed the Object Depth and Scissor properties.

  • KzcColor structure replaced with ColorRGBA everywhere.

  • Changed how resources are restored on application resume. The resources you want to automatically restore on resume must be available and you must register them with the resource manager.

  • Texture API

  • Reusing message argument structs that are marked as handled now generates an exception.

  • Removed socket support from Kanzi Engine.

  • ResourceManager::purge clears all caches in the Kanzi Engine.

  • Data sources now generate consistent names for list box items. Instead of data, the item name is based on the prefab name.

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

Documentation

Fixes

  • The List Box Item Container Selected property now works correctly.

  • Fixed loading of grayscale PNG images.

  • Fixed the bug when in some cases deleting a node in the message handler would crash.

  • Fixed rotation issues on Android.

  • Fixed the crash when the .apk was running in the background and the device orientation changed.

  • Fixed the transformation of the Directional Light vector.

  • Fixed loading of PVRTC2 textures.

  • Fixed the stencil test configuration in render pass.

  • Fixed Render Target Texture textures with mipmaps.

  • Fixed On Timer trigger not to crash when interval is set to 0.

  • Fixed the reporting of GPU memory allocation size.

  • Fixed jumping to an item in virtualized list boxes. The list box does no longer unvirtualize items on the way to the target item.

  • Touch events on Windows no longer generate a mouse event.

  • Fixed kzsFileBaseSetResourceDirectory on Android.

  • Resource manager now loads resources only before rendering.

  • Fixes to text layout containing compound grapheme.

  • Fixed frustum culling with orthographic projection.

  • Fixed state manager to correctly animate brush properties.

  • Fixed transitioning from any page to named page.

  • Fixed restoring textures from disk files (non-kzb files). The textures loaded from PNG and JPEG files are now loaded correctly.

  • Fixed nested Grid Layout nodes.

  • Fixed the Double-Click Enabled property on a Button.

  • Fixed state manager to stop working if it contains states with the same names.

  • Fixed several issues related to localization.

  • Fixed bugs to improve the stability of Kanzi Studio and the Kanzi Studio Preview.